سؤال

هل من الممكن تحديد الكائن الذي يطلق عليه وظيفة بناءً على مستمع حدث؟ على سبيل المثال ، لديّ زران على خشبة المسرح يدعو نفس الوظيفة عند النقر عليهما. أود أن تحدد الوظيفة الزر الذي كان المرسل.

firstButton.addEventListener(MouseEvent.CLICK, myFunction);
secondButton.addEventListener(MouseEvent.CLICK, myFunction);

function myFunction(e:MouseEvent):void
 {
 var myString:String = "The button that called this function was (??)";
 trace(myString);
 }
هل كانت مفيدة؟

المحلول

استخدم العقار الهدف الحالي من حدث صف دراسي

function myFunction(e:MouseEvent):void {
 var myString:String = "The button that called this function was "+e.currentTarget;
 trace(myString);
}

نصائح أخرى

داخل MyFunction ، يجب على E.CurrentTarget الاحتفاظ بمرجع إلى الزر الذي أرسل الحدث.

أريد فقط أن أضيف إلى ذلك: في كائن الحدث ، تحصل في الوظيفة ، هناك خصائصان يمكن أن تخلطا في بعض الأحيان للتمييز بينهما:

E.Target - سيعود الهدف إليك دائمًا المرسل الأصلي للحدث ، لذا إذا قمت بالنقر فوق زر ولكن عند الاستماع إلى الوالد ، فسيظل هدفك هو الزر.

E.CurrentTarget - إرجاع CurrentTarget الكائن الذي طلبته من الحدث أو بلغة Adobes "الكائن الذي يقوم بنشاط بمعالجة كائن الحدث باستخدام مستمع حدث.".

لذلك يمكن أن ينتج عنك الحالي والهدف نتائج مختلفة وتحتاج إلى وضع ذلك في الاعتبار. ملاحظة: إذا لم تكن الأحداث الخاصة بك (أحداث الماوس غير المرئية /غير المستخدم /غير المستخدم) ، فستكون الهدف الحاليون والهدف هو نفسه أو إذا سألت الكائن الذي أرسل الحدث في حالة حدث فقاعات.

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