هل هناك طريقة أفضل للحصول على إشارة إلى مقطع فيلم في ActionScript باستخدام سلسلة بدون تقييم

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

  •  02-07-2019
  •  | 
  •  

سؤال

لقد قمت بإنشاء مجموعة من مقاطع الأفلام التي تحمل جميعها أسماء متشابهة، ثم بعد حدث آخر قمت بإنشاء سلسلة مثل:

var clipName = "barLeft42"

والذي يقام داخل مقطع فيلم آخر يسمى "الشيء".

لقد تمكنت من الحصول على مرجع باستخدام:

var movieClip = Eval( "_root.thing." + clipName )

ولكن هذا يبدو سيئا - هل هناك طريقة أفضل؟

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

المحلول

مقاطع الأفلام عبارة عن مجموعات بتنسيق ActionScript (مثل معظمها ومشابهة لجافا سكريبت، كل شيء عبارة عن أزواج ذات قيمة أساسية).يمكنك الفهرسة في المجموعة باستخدام الأقواس المربعة وسلسلة لاسم المفتاح مثل:

_root.thing[ "barLeft42" ]

ينبغي أن تفعل هذه الحيلة بالنسبة لك...

نصائح أخرى

الطريقة الأفضل، والتي تتجنب استخدام المهملة eval, ، هو الفهرسة بين قوسين مربعين:

var movieClip = _root.thing[ "barLeft42" ]

لكن أفضل طريقة هي الاحتفاظ بالمراجع الخاصة بالمقاطع التي تقوم بإنشائها، والوصول إليها عن طريق المرجع، وليس بالاسم:

var movieClipArray = new Array();
for (var i=0; i<45; i++) {
    var mc = _root.thing.createEmptyMovieClip( "barLeft"+i, i );
    // ...
    movieClipArray.push( mc );
}

// ...

var movieClip = movieClipArray[ 42 ];

يمكنك استخدام الأقواس وتضمين المتغيرات بداخلها...لذا، إذا أردت تكرارها جميعًا، يمكنك القيام بذلك:

for (var i=0; i<99; i++) {
  var clipName = _root.thing["barLeft"+i];
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top