سؤال

وأنا تجهيز 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);                    
}

وأحتاج لتمرير أنا في checkImageDimensions لتتبع الصورة التي هي التي يمكنني بسهولة بما فيه الكفاية إنشاء حدث مخصص، ولكن انا بحاجة الى هذا لاطلاق النار في الوقت المناسب. ومن الناحية المثالية يمكن أن أفعل شيئا من هذا القبيل ..

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

ولكن لنكون صادقين، وأنا غير متأكد من كيفية المضي قدما ...

ويمكن لأي شخص مساعدتي؟ شكرا!

هل كانت مفيدة؟

المحلول

وكنت بحاجة للتأكد من وظيفة المستمع - استدعاء دالة لا يكفي. تمرير اسم الفئة إلى dispatchEvent لا يعمل سواء. وفيما يلي كيفية القيام بذلك.

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

ملحوظة التي لا تحتاج بالضرورة فئة حدث مخصص، إذا كان كل ما تحتاجه في هذا الحدث هو سلسلة نوع. يمكنك ببساطة استخدام فئة حدث في هذه الحالة:

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);

وبطبيعة الحال، فإنه من الخطأ أنظف وأقل عرضة للإعلان الدرجة الخطأ الخاصة بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top