كيف يمكنك الرجوع إلى صورة نقطية على المسرح في actionscript؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

كيف يمكنك الرجوع إلى صورة نقطية على الجزء الرئيسي في الفلاش باستخدام actionscript 3؟

لدي صورة نقطية على المسرح في شكل فلاش وفي نهاية الفيلم أود استبدالها بالصورة التالية في التسلسل قبل تكرار الفيلم.لدي في مكتبتي 3 صور، تم تصديرها لـ actionscript، باسم الفئة img1/img2/img3.إليكم كيفية تحديد طبقاتي في الفلاش.

layer 5 : mask2:MovieClip
layer 4 : img2:Bitmap
layer 3 : mask1:MovieClip
layer 2 : img1:Bitmap
layer 1 : background:Bitmap

في نهاية الفيلم، أرغب في تبديل img1 بـ img2، بحيث يتم تكرار الفيلم بسلاسة، ثم من الأفضل تبديل img2 (في الطبقة 4) بـ img3 وهكذا حتى أصل إلى نهاية صوري.

لكن لا يمكنني معرفة كيفية الرجوع إلى الصور التي تم وضعها بالفعل على المسرح (في وقت التصميم)، هل لدى أي شخص أي فكرة عن كيفية القيام بذلك؟

نأمل أن يقوم الفيلم النهائي بتحميل الصور ديناميكيًا من خادم الويب (لدي رمز لهذا الجزء) ويعرضها بالإضافة إلى img1/img2/img3.

سيكون موضع تقدير أي مساعدة.

يحرر:

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

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

المحلول

للإشارة إلى شيء ما على المسرح، تحتاج إلى إعطاء اسم للمثيل المسرحي - وليس إعطاء الرمز الموجود في المكتبة اسم فئة.

انقر على العنصر الموجود على المنصة وانظر إلى لوحة الخصائص.يجب أن يكون هناك مربع إدخال نص أعلى مربعات الإدخال مباشرة لأبعاد العنصر.أدخل اسمًا هناك.

في مكان آخر من التعليمات البرمجية الخاصة بك، يمكنك بعد ذلك الإشارة إلى هذا العنصر على الجزء الرئيسي من خلال اسم المثيل الخاص به.

نصائح أخرى

يجب أن يكون شيء من هذا القبيل:

imageHolder.removeChild( imageIndex )

أو

imageHolder.removeChildByName( imageName )

وبعد ذلك

imageHolder.addChild( newImage )

ربما سأفعل شيئًا كهذا في فئة المستندات الخاصة بك

for(var i:int=0; i<numChildren; i++){
    trace(getChildAt(i),"This is the child at position "+i);
}

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

الآن بعد أن أصبح لديك الأطفال والفهرس الموجود بالفعل داخل المرحلة، يمكنك الرجوع إليهم عن طريق استدعاء getChildAt(int)، ويمكنك إزالةChildAt(int)، ويمكنك addChildAt(displayObject, int) وswapChildrenAt(int, int ).سيمثل int الموجود في هذه الوسيطات موضع الفهرس الذي تم إرجاعه بواسطة عبارة التتبع الخاصة بك ومن الواضح أن DisplayObject سيمثل فقط أي شيء تريد إضافته إلى المرحلة أو DisplayObject الأصل.

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

@81bronco يجب على One بالتأكيد تسمية الأصول الخاصة بك على المسرح إذا كنت تريد الإشارة إليها بشكل فريد على وجه التحديد لتجنب أي ارتباك إذا انتهى الأمر بوجود الكثير من العناصر على المسرح

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

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

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