AS2 ... euh ... les souvenirs (plus comme des cauchemars). Essayez mon "bon vieux" BitmapLoader.as ... Je l'utilise depuis de nombreuses années et ne m'a jamais manqué ... Ce n'est pas magnifiquement écrit et il y a quelques setters à double portée. .. mais je m'en fous. C'est vieux, et il a parfaitement fait son travail (toujours!). Il a besoin d'un booléenne dans le constructeur qui définit le lissage à vrai ou faux
import flash.display.BitmapData;
class BitmapLoader extends Object {
private var mLoader : MovieClipLoader;
private var scope : Object;
private var _mc : MovieClip;
private var _url : String;
private var _func : Object;
private var smooth : Boolean;
public function BitmapLoader(smooth : Boolean)
{
this.smooth = smooth;
mLoader = new MovieClipLoader();
addListener(this);
}
public function addListener(inListener : Object) : Void
{
mLoader.addListener(inListener);
scope = inListener;
}
public function removeListener(inListener : Object) : Void
{
mLoader.removeListener(inListener);
}
private function onLoadInit(inTarget : MovieClip) : Void
{
var bitmap : BitmapData = new BitmapData(inTarget._width, inTarget._height, true, 0x000000);
bitmap.draw(inTarget);
var parent : MovieClip = inTarget._parent;
var img : MovieClip = parent.createEmptyMovieClip("imageloader_smooth_mc", parent.getNextHighestDepth());
inTarget.unloadMovie();
inTarget.removeMovieClip();
delete inTarget;
img.attachBitmap(bitmap, img.getNextHighestDepth(), "never", true);
scope[_func](img);
}
private function onLoadError(errorCode : String, httpStatus : Number) : Void
{
error(errorCode, httpStatus);
}
/**
* loadBitmap(http://www.test.nl/img.jpg, movieclip, "dothis");
*/
public function loadBitmap(url : String, mc : MovieClip, func : Object) : Void
{
_url = url;
_mc = mc;
_func = func;
var raw : MovieClip = _mc.createEmptyMovieClip("imageloader_raw_mc", _mc.getNextHighestDepth());
mLoader.loadClip(_url, raw);
}
private function error(errorCode : String, httpStatus : Number) : Void
{
var raw : MovieClip = _mc.createEmptyMovieClip("imageloader_raw_mc", _mc.getNextHighestDepth());
mLoader.loadClip("img/notfound.jpg", raw);
};
}
Vous pouvez utiliser cette classe comme ceci:
var loader : BitmapLoader = new BitmapLoader(true);
loader.addListener(this);
loader.loadBitmap("http://test.nl/example.jpg", this, "doneLoading");
'true' est le lissage booléenne, addListener (this) est d'éviter les problèmes de portée (AS2-bleeh) et "doneLoading" est le nom de la fonction qu'il appelle quand il est chargé.
Espérons que cela fonctionne pour toi.
Bonne chance! Que diriez-vous de le dessiner sur un autre BitmapData avec une matrice de mise à l'échelle?
Vous pouvez le faire dans la fonction 'doneLoading'. i.e. .: \t fonction publique doneLoading (mc: MovieClip): Void { \t \t \t mc._width = 160; \t \t mc._yscale = mc._xscale; \t \t si (cible._height> 105) \t \t { \t \t \t mc._height = 105; \t \t \t mc._xscale = target._yscale; \t \t} \t} – Ypmits