AS2...ああ...思い出(悪夢のようなもの)。
私の「古き良き」BitmapLoader.asを試してみてください...私は何年もそれを使用してきましたが、まだ失敗したことはありません...美しく書かれておらず、そこにはいくつかのダブルスコープセッターがあります...しかし、私は気にしないでください。それは古いものであり、その仕事を完璧に (常に!) 行っています。スムージングをtrueまたはfalseに設定するコンストラクターにブール値が必要です
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 );
};
}
このクラスは次のように使用できます。
var loader : BitmapLoader = new BitmapLoader( true );
loader.addListener( this );
loader.loadBitmap( "http://test.nl/example.jpg", this, "doneLoading" );
「true」は平滑化ブール値、addListener( this ) はスコープの問題 (AS2-bleeh) を防止するためのもの、「doneLoading」は読み込みが完了したときに呼び出す関数名です。
これがうまくいくことを願っています。
幸運を!