0

次のコードで、ユーザーが選択した複数のファイルの FileReferenceList.fileList[] を処理しています。

for (i=0;i < event.currentTarget.fileList.length; i ++){
 fileByteData = new ByteArray();
 fileByteData = (event.currentTarget.fileList[i].data as ByteArray);                
 loader = new Loader();
 loader.contentLoaderInfo.addEventListener(Event.COMPLETE, checkImageDimensions);
 loader.loadBytes(fileByteData);                    
}

どの画像がどれであるかを追跡するために、i を checkImageDimensions に渡す必要があります。カスタム イベントを簡単に作成できますが、これを適切なタイミングで起動する必要があります。理想的には、私はこのようなことをすることができました..

var myEvent:CustomEvent = new CustomEvent(i);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.dispatchEvent(CustomEvent))

でも正直、どうしようか迷ってます…。

誰でも私を助けることができますか?ありがとう!

4

1 に答える 1

2

リスナー関数を作成する必要があります。関数呼び出しでは不十分です。クラス名を渡してdispatchEventも機能しません。方法は次のとおりです。

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void {
    dispatchEvent(new CustomEvent(i));
});

イベントで必要なのはタイプ文字列だけの場合、カスタム イベント クラスは必ずしも必要ではないことに注意してください。この場合、単純に Event クラスを使用できます。

public static const MY_CUSTOM_EVENT:String = "myCustomEvent";    
...
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void {
    dispatchEvent(new Event(MY_CUSTOM_EVENT));
});

編集:あなたが本当に怠け者であるが、それでもイベントで値を渡したい場合は、DinamicEventクラスを使用できます:

var evt:DynamicEvent = new DynamicEvent(MY_CUSTOM_EVENT);
evt.attr1 = val1;
evt.attr2 = val2;
dispatchEvent(evt);

もちろん、独自のエラー クラスを宣言する方がクリーンで、エラーが発生しにくくなります。

于 2009-03-12T13:19:03.713 に答える