سؤال

لدي أزرار على المرحلة (run1_btn - run5-btn) التي عند النقر عليها تضيف مقطع فيلم إلى المرحلة. (يد) يحتوي مقطع الفيلم على عدد قليل من إطارات الرسوم المتحركة. عند النقر فوق زر، يتم إضافة movieclip ولكن يتم الانتهاء من الرسوم المتحركة بالفعل. اعتقدت أنه عندما أضيفت MC إلى المرحلة، سيبدأ الرسوم المتحركة، ولكن هذا لا يبدو أن هذا هو الحال. لا أحد يعرف طريقة حول هذا.

هنا هو رمزي:

var handSlap:hand;
handSlap = new hand();

//event listeners
newPig.run1_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run2_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run3_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run4_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run5_btn.addEventListener(MouseEvent.CLICK, clickArea);




//functions
function clickArea(evtObj:MouseEvent):void
{
    trace(evtObj.target.name);
    addChild(handSlap);
    handSlap.x =200;
    handSlap.y=200;

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

المحلول

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

hand.addEventListener(Event.ADDED_TO_STAGE, onHandAddedToStage, false, 0, true);
function onHandAddedToStage(event:Event):void
{
    var mc:Movieclip = MovieClip(event.currentTarget);
    mc.gotoAndPlay(1);
}

إذا لم تكن معتادا على طراز الحدث، فإن "False و 0، True" يضمن فقط أنه إذا كنت بحاجة إلى تفريغ اليد، فلن يتم التعصب من قبل مستمع الحدث والبقاء في الذاكرة، وربما لا تفعل " ر بحاجة إليها ولكنها لا ضرر.

نصائح أخرى

  var newPig:pig;
newPig = new pig();
addChild(newPig);
newPig.y=360;
newPig.x=350;

var handSlap:hand;
handSlap = new hand();

//event listeners
newPig.run1_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run2_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run3_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run4_btn.addEventListener(MouseEvent.CLICK, clickArea);
newPig.run5_btn.addEventListener(MouseEvent.CLICK, clickArea);

handSlap.addEventListener(Event.ADDED_TO_STAGE, onHandAddedToStage, false, 0, true);


//functions
function clickArea(evtObj:MouseEvent):void
{
    trace(evtObj.target.name);

    addChild(handSlap);
    handSlap.x =200;
    handSlap.y=200;


}

function onHandAddedToStage(event:Event):void
{
    var mc:MovieClip = MovieClip(event.currentTarget);
    mc.gotoAndPlay(1);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top