كيفية توسيع حقل نص موجود بالفعل على المسرح في فلاش (AS3)؟

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

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا أبحث عن وسيلة لتوسيع الحقل النصي هذا allready قد على المسرح في فلاش (AS3) شيء من هذا القبيل:

public class ChildTextField extends TextField 
{
    //code for childTextField comes here    
}

ولقد وضعت في الحقل النصي مع اسم مثيل "thetextfield" على المسرح. الآن أود أن أقول فلاش هذا حيز النص هو من نوع ChildTextField. حتى في الدرجة الوثيقة بلدي أقر بأن حيز النص باعتباره ChildTextField:

public class DocumentClass extends Sprite()
{
    public var thetextfield : ChildTextField;
}

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

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

المحلول

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

وتحرير: هل هناك طريقة الإختراق. المصدر: http://board.flashkit.com/board/ أرشيف / index.php / تي 738887.html

<اقتباس فقرة>   

في الواقع، لقد واجهت هذا بالضبط   المشكلة قبل. في حالتي، كنت   محاولة لخلق حيز النص مع   السلوكيات إضافية لبعض البعض الآخر   الفنانين غير المبرمج للاستخدام. انا اقول   يا حل الأصلي الذي هو كل شيء   AS3، ولكن كان خطأ فادح، وبلدي   الحل الحالي، وهو   مزيج من AS3 وjsfl.

     

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

public function SmartTextField(TextField tf)
{
this.text = tf.text; //continue with copy of anything relevant. 
}
<اقتباس فقرة>   

وفي الفيلم الرئيسي لديكم كود الذي   يكتشف ويستبدل الحقول النصية   تريد استبدال

 var toreplace:Array = findTextFields(); 
 var tf:TextField;
 var stf:SmartTextField; 
 var where:int;
 for (int i = 0; i < toreplace.length;i++)
 { tf = TextField(toreplace[i]);
   stf = new SmartTextField(tf); 
   where = getChildIndex(tf); 
    addChildAt(stf,where); 
    removeChild(tf); 
 }
<اقتباس فقرة>   

وهذا يعمل بشكل جيد، باستثناء نقطة   أعلاه.

     

والحل JSFL قليلا معقدة للغاية   أن يذهب أكثر في التفاصيل، ولكن هنا ل   الأساسيات. هل لديك الدرجة AS3 الذي يلتف   لحيز النص مع السلوك الجديد لك   تريد. كتابة السيناريو jsfl التي   بالتكرار على العناصر المحددة، و   اذا كان لحيز النص، تحويل ل   رمز مع baseclass من الجديد الخاص بك   فئة المجمع. وهذا له مزايا   أنه يحدث في وقت كاتبها،   أشياء مثل الموقف، المثيل و   غيرها من الاشياء هو تلقائيا   الحفاظ عليها. ومن مساوئها   أن jsfl لديه الكثير من مزعج قليلا   المراوغات للعمل من خلال.

     

وتحرير: وبطبيعة الحال، إذا كان هذا هو فقط ل   فيلم واحد، هل يمكن التخلي عن   jsfl تحويل النصي، ومجرد القيام بذلك   باليد. تحويل إلى رمز -> المجمع   baseclass.

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