مبتدئ:إدراج إطار ديناميكيًا في MovieClip في Haxe/ActionScript3

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

سؤال

لنفترض أن لدي ملف مورد يتم تصديره mc1 مع 4 إطارات فيه.وأود أن إنشاء جديد MovieClip وأدخل إطارات مثل هذا:

mc2:flash.display.MovieClip = new flash.display.MovieClip()

mc1.gotoAndStop(2);
mc2.gotoAndStop(1);
mc2.currentFrame = mc1.currenctFrame
mc1.gotoAndStop(1);
mc2.gotoAndStop(2);
mc2.currentFrame = mc1.currenctFrame
mc1.gotoAndStop(2);
mc2.gotoAndStop(3);
mc2.currentFrame = mc1.currenctFrame
mc1.gotoAndStop(4);
mc2.gotoAndStop(4);
mc2.currentFrame = mc1.currenctFrame

[عدل] مزيد من التفاصيل

أنا لا أستخدم Flash IDE.انا استخدم:

  • إنكسكيب (لجيل SVG)
  • swfmill (لإنشاء ملفات الأصول)
  • Haxe (لإنشاء رسوم متحركة)

أنا لا أحاول في هذه المرحلة بناء ألعاب أو أي شيء تفاعلي.لقد تمكنت من إنشاء رسم متحرك بسيط حيث يدور كائن الخلفية (وهذا كل شيء).إستعملت TimerEventس لتحقيق ذلك.ولكن بدلاً من ذلك، أود حقًا أن أكون قادرًا على إنشاء MovieClip وإرفاق إطارات فردية عليه ثم تشغيله بشكل متكرر.

وبدلاً من ذلك، يمكنني إنشاء MovieClip والرسم عليه إطارًا تلو الآخر برمجيًا.(ثم ​​بالطبع اللعب في الحلقة)

أرغب بشكل أساسي في استخدام ActionScript لإنشاء محتوى بدلاً من ملف XML الخاص بـ swfmill (وليس ملف simple لهجة, simple على ما يرام).وبما أنني مبتدئ فلا أعرف ما هي المعلومات الأخرى التي يمكنني أن أقدمها لك.لذا من فضلك قل لي إذا كان بإمكاني تقديم أي تفاصيل أخرى؟

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

المحلول

بدون Flash IDE، لا فائدة من استخدام gotoAndStop() وما إلى ذلك.

نظرًا لأنه لا يمكنك إضافة أصولك المختلفة على إطارات مختلفة، فيجب عليك إضافتها جميعًا كطبقات باستخدام addChild(assetToAdd) وتعيين الكل باستثناء واحد على visual = false.ثم قم بإضافة وظيفة بسيطة مثل هذا:

function showFrame(num:int):void
{
    for (var i:int = 0; i < numChildren; i++)
    {
       if (i == num)
       {
          getChildAt(i).visible = true;
       }
       else
       {
          getChildAt(i).visible = false;
       }
    }
}

نصائح أخرى

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

اقتراحي، إذا كنت بحاجة إلى إعادة ترتيب الإطارات ديناميكيًا، سيكون تغليف MovieClip هذا في فئة مخصصة تترجم gotoAndPlay(x) إلى أي رقم تريده.

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

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