سؤال

ولقد حصلت على timerEvent أن يضيف 25 movieclips على المسرح وينعش لهم من العاشر: 0، ص: 0، كل هذا يعمل بشكل جيد! ما أود القيام به هو تعيين كل فيلم كليب قيمة ذ 25px أكثر من الماضي وأضاف في مقطع فيلم إلى المرحلة. فعلت قليلا اختبار من خلال محاولة زيادة قيمة العدد في كل مرة الموقت قام حلقة ولكن لم أكن الزيادة. يجب أن استخدمه لحلقة / مجموعة جدا؟

وشكرا مقدما. جونو

import flash.events.*;
import caurina.transitions.*;

bringItemsOn();

var itemTimer:Timer;
function bringItemsOn():void {
    itemTimer=new Timer(300);
    itemTimer.addEventListener(TimerEvent.TIMER,itemTimer_tick);
    itemTimer.start();
}

function itemTimer_tick(e:TimerEvent):void {    
    itemTimer.currentCount-1;
    var mc:MovieClip = new MovieClip();
    mc.graphics.beginFill(Math.random() * 0x000000);
    mc.graphics.drawRect(0,0,stage.stageWidth,25);
    mc.x=0;
    mc.y=0;
    addChild(mc);
    Tweener.addTween(mc,{y:Math.random()*1000 - 500,
                             x:0,
                             time:.9,
                             transition:"easeOutExpo"});

    if (itemTimer.currentCount>=25) {
        itemTimer.removeEventListener(TimerEvent.TIMER,itemTimer_tick);
    }
}
هل كانت مفيدة؟

المحلول

وبصراحة كنت قد ضبط هذا كل شيء في البداية مع لحلقة. بمجرد الانتهاء عن حلقة، ووضع كل عنصر وفقا لذلك، ثم استخدم TweenLite، أو المفضلة لديك tweening ومن حزمة.

package
{
    import flash.display.Sprite;
    import flash.events.Event;

    import gs.TweenLite;
    import gs.easing.*;

    public class ExampleDocumentClass extends Sprite
    {
        if(stage) _init();
        else addEventListener(Event.ADDED_TO_STAGE, _init(), false, 0, true);
    }
    private function _init(e:Event =null):void
    {
        for(var i:int = 0; i < 25; i++)
        {
            var mc:MovieClip = new MovieClip();
            mc.graphics.beginFill(Math.random() * 0x000000);
            mc.graphics.drawRect(0,0,stage.stageWidth,25);
            //Seperates them by 25, their width, so they will touch.
            mc.x= i * 25; //i * 25 + 1 leaves a space in between.
            mc.y=0;
            addChild(mc);
            TweenLite.to(mc, 0.9, {y:math.random()*1000-500, x: 0, ease: Expo.easeOut});

        if(i == 24) //Total length - 1
        {
            //The loop ended.
        }
    }
}

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

وماذا يحدث: أنا * 25 = 0؛ ط ++؛ أنا * 25 = 25. ط ++؛ أنا * 25 = 50؛

وكما ترون لدينا تحقيق التباعد كنا نبحث عن.

وبريان هودج
hodgedev.com blog.hodgedev.com

نصائح أخرى

استخدم هذا:

 import flash.events.*;
 import caurina.transitions.*;

bringItemsOn();

var extra:int = 0;
var itemTimer:Timer;
function bringItemsOn():void {
    itemTimer=new Timer(300);
    itemTimer.addEventListener(TimerEvent.TIMER,itemTimer_tick);
    itemTimer.start();
}

function itemTimer_tick(e:TimerEvent):void {    
    itemTimer.currentCount-1;
    var mc:MovieClip = new MovieClip();
    mc.graphics.beginFill(Math.random() * 0x000000);
    mc.graphics.drawRect(0,0,stage.stageWidth,25);
    mc.x += extra;
    mc.y=0;
    extra = mc.width;
 /*u can use mc's width for different x value's or

make ur own like extra += 10; each mc.x will be different */
    addChild(mc);
    Tweener.addTween(mc,{y:Math.random()*1000 - 500,
                             x:0,
                             time:.9,
                             transition:"easeOutExpo"});

    if (itemTimer.currentCount>=25) {
        itemTimer.removeEventListener(TimerEvent.TIMER,itemTimer_tick);
    }
}

ولم تحديد حقا الجزء حيث حاولت زيادة متغير أو إضافة 25px إلى y، ولكن حاول هذا:

function itemTimer_tick(e:TimerEvent):void {

    ...

    mc.y = itemTimer.currentCount * 25;
    addChild(mc);

    ...

}

وأنا حقا مختلفة النهج يمكن أن يكون استخدام الخاصية delay من طريقة Tweener.addTween. بدء كل movieclips وزيادة تأخير عن كل واحد قليلا؟

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