هل يمكن لأحد أن يشرح لي هذا المآزق الشائع بالنسبة لي؟ (باستخدام اسم الحدث الخاطئ)

StackOverflow https://stackoverflow.com/questions/4050013

  •  27-09-2019
  •  | 
  •  

سؤال

أشير إلى هذا الموقع نص الارتباط

يمكن أن يؤدي استخدام اسم الحدث الخاطئ في علامة [bindable] إلى عدم ربط تطبيقك الخاص بك ، ولن تعرف حتى السبب. عند استخدام علامة [bindable] مع اسم مخصص ، فإن المثال أدناه يبدو وكأنه فكرة جيدة:

public static const EVENT_CHANGED_CONST:String = "eventChangedConst"; 
private var _number:Number = 0; 
[Bindable(event=EVENT_CHANGED_CONST)] 
public function get number():Number 
{ 
  return _number; 
} 
public function set number(value:Number) : void 
{ 
  _number = value; 
  dispatchEvent(new Event(EVENT_CHANGED_CONST)); 
}

يقوم الرمز أعلاه بتعيين خاصية ثابتة لاسم الحدث ، ثم يستخدم نفس المهمة لإرسال الحدث. ومع ذلك ، عندما تتغير القيمة ، لا يبدو أن الربط يعمل. والسبب هو أن اسم الحدث سيكون event_changed_const وليس قيمة المتغير.

يجب أن يكون الرمز مكتوبًا على النحو التالي:

public static const EVENT_CHANGED_CONST:String = "eventChangedConst"; 
private var _number:Number = 0; 
[Bindable(event="eventChangedConst")] 
public function get number():Number 
{ 
  return _number; 
} 
public function set number(value:Number) : void 
{ 
  _number = value; 
  dispatchEvent(new Event(EVENT_CHANGED_CONST)); 
}

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

أنا أقدر رؤيتك

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

المحلول

لأن المترجم المرن القياسي ليس ذكيًا في بعض الأحيان ... وأشعر بألمك! لقد اشتكيت من هذه المشكلة بالضبط أكثر من عدة مرات.

إذا كنت أتذكر بشكل صحيح ، فذلك لأن المترجم يقوم بتمريرات متعددة. واحد من الممرات المبكرة يغير البيانات الوصفية إلى رمز. في هذه المرحلة من المترجم ، لم يتم تحليل بقية الكود AS ، لذلك غير قادر على تحليل الثوابت أو الإشارات إلى المتغيرات الثابتة في الملفات الأخرى.

الشيء الوحيد الذي يمكنني اقتراحه هو التسجيل في Adobe Jira ، والتصويت لصالح الخطأ ، وآمل أن يقوم برنامج التحويل البرمجي في 4.5 بإعداد بعض الارتياح.

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