سؤال

لقد حاول احد من أي وقت مضى للحصول على قائمة بأسماء جميع movieclips (حتى تلك المتداخلة) التي هي على خشبة المسرح في إطار زمني محدد توقفت (والحالية) في فلاش 8، AS 2؟

وفعلت ما يلي:

for(i in _root){
if(typeof(_root[i])=="movieclip"){
trace(_root[i]);}
}

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

وقد حاول أحد من أي وقت مضى أن تفعل ما أحاول القيام به؟

وداعا!

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

المحلول

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

وربما هذا هو أفضل تفسير لذلك هناك

وإذا ما يمكنك القيام به هو هذا:

import mx.data.binding.ObjectDumper;

trace(ObjectDumper.toString(_root));

قد يكون هناك الكثير من إضافات (وظائف، والمتغيرات، الخ) هناك، لذلك هناك معلمات إضافية يمكنك استخدامها:

ObjectDumper.toString(obj, showFunctions, showUndefined, showXMLstructures, maxLineLength, indent)

نصائح أخرى

وبالضبط على النحو الذي اقترحه inkedmn

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

printStuff = function(object){
    for(var x in object){
        if(typeof(object[x])=="movieclip"){
            trace(object[x]);
            printStuff(object[x]);
        }
    }
}
printStuff(_root);

ويا .... وآسف لكونه في السنة، وبعض التغيير في وقت متأخر ...

ويمكنك أن تفعل شيئا من هذا القبيل عن طريق إضافة وظيفة إلى فئة مقطع فيلم:

MovieClip.prototype.StopEverything = function()
{
    stop();
    for (var i in this) {
        if (typeof(this[i]) == "movieclip") {
            this[i].StopEverything();
        }
    }
}
ASSetPropFlags(MovieClip.prototype, ["StopEverything"], 1);

وهذا الأخير ASSetPropFlags قليلا شيء وجدت أن يسمح StopEverything أعاد فوق الطبقات المدمج في مثل مقطع فيلم باستخدام for..in لكل حقل، حتى الخصائص والعناصر المخفية. دون ASSetPropFlags، قد StopEverything () لا ضرب كل مقطع الفيلم الواردة.

وتجربتي AS2 محدودة جدا (لقد فعلت شيئا من AS3)، ولكن هنا المثل:

وماذا لو أنك كتبت وظيفة متكررة أنه إذا صادف في مقطع فيلم، أن ننظر من خلال كل من انها الكائنات التابعة لقطات الفيلم الأخرى (وفعلت الشيء نفسه عن أي movieclips وجدت هناك، وما إلى ذلك)؟ وظيفة يمكن أن تأخذ المعلمة الكائن، فضلا عن مجموعة من مقاطع "وجدت" الذي تمت إضافته إلى على كل مرور.

وأتمنى أن كتابة التعليمات البرمجية التي من شأنها أن تفعل هذا، ولكن (كما قلت)، وأنا لست بكثير من الرجل AS2: \

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

والسبب في AS2.0 غير الموثقة ميزة ObjectDumper لا تعداد movieclips في الجذر لأنه يتجاهل nameValue أزواج في مستوى الجذر الكائن، وهو عيب واضحة (على أقل تقدير)، لأن تعريف جدا من شركة زميلة مجموعة عبارة عن صفيف / الكائن الذي يتكون من أزواج nameValue في انها الجذر.

وعلى سبيل المثال: أثر (ObjectDumper.toString ({MYNAME: "myValue"})) // الناتج = "". لا عجب أنهم يقم هذا "ميزة" لا يحملون وثائق. بصراحة، أعتقد أنه لأمر مدهش أن لا توجد وسيلة المدمج في تعداد بسهولة وبشكل موثوق عن محتويات كائن لأغراض التصحيح في أي AS2 ولا AS3. إذا كنت تبحث عن الشبكة ستجد وظيفة الإختراق من ل... في الحلقات التي تبدو فقط في جذر مجموعة ... لا شيء العودية.

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