2

onCompleteイベントハンドラーで機能するパラメーターを渡すのに苦労しています。

私の問題はevent.Completeコードにあるようです。

URLと転送パラメータから画像をロードしたいだけです。

これは私のコードです:

var imageURLRequest:URLRequest = new URLRequest(pic); 
var myImageLoader:Loader = new Loader(); 
myImageLoader.load(imageURLRequest); 

myImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,function(evt:Event.COMPLETE){
    doIt(evt, "Shift key was down:")
},false,0, true);

function doIt(evt:Event, msg:String) {
    var myBitmapData:BitmapData = new BitmapData(myImageLoader.width, myImageLoader.height); 
    myBitmapData.draw(myImageLoader); 
    var myBitmap:Bitmap = new Bitmap; 
    myBitmap.bitmapData = myBitmapData; 
}

どうもありがとうございます。

4

3 に答える 3

2

リスナーが次のようになるように、ハンドラー内部関数から削除.COMPLETEします。

myImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(evt:Event)
{
   doIt(evt, "Shift key was down:")
} , false, 0, true);
于 2012-09-11T14:14:17.043 に答える
2

Loaderクラスをローダーとして見てくださいDisplayObject

var myBitmap:Bitmap;
var contentLoader:Loader = new Loader();
contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleComplete);
contentLoader.load(imageURLRequest); 

function handleComplete(e:Event):void
{
    myBitmap = contentLoader.content as Bitmap;
}
于 2012-09-11T14:14:58.837 に答える
1

まず、ジオが言ったように、関数が必要とするイベントの代わりに文字列を返すため、それ.COMPLETEを削除します。evt:Event.COMPLETE

次に、最後の恐ろしく予測不可能なパラメーター ( useWeakReference) をに設定する代わりに、参照を変数に保持して、適切なタイミングで使用することをtrueaddEventListener()勧めしますremoveEventListener()。これを行う方法(質問に答えながら)は次のとおりです。

var imageURLRequest:URLRequest = new URLRequest(pic);
var myImageLoader:Loader = new Loader();
myImageLoader.load(imageURLRequest);

var functionDoIt:Function = doIt("Shift key was down:");
myImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, functionDoIt);

function doIt(msg:String):Function {
  return function(evt:Event):void {
    // Now you can use both "msg" and "evt" here
    var myBitmapData:BitmapData = new BitmapData(myImageLoader.width, myImageLoader.height);
    myBitmapData.draw(myImageLoader);
    var myBitmap:Bitmap = new Bitmap(myBitmapData);
  }
}

// Remove the listener when you don't need it anymore:
//myImageLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, functionDoIt);

この回答を読むと、このソリューションをよりよく理解できます。

于 2012-11-22T06:47:06.937 に答える