首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在starling-framework中检测所有补间完成

如何在starling-framework中检测所有补间完成
EN

Stack Overflow用户
提问于 2012-08-06 12:08:57
回答 2查看 2.3K关注 0票数 0

我正在开发一个使用starling框架的游戏。我的问题是当我在juggler中添加一组元素时,如何检测所有补间是否完成。

目前我的计划是

代码语言:javascript
复制
while(some_condition){ //allocate a set of tween
     var tween=createTween(tweenCount++);
     tween.onComplete=function(){
         tweenCount--;
     }
}
function checkComplete(){
     if(tweenCount==0)
        doStuff();
     else
        setTimeout(checkComplete,1000);
}

还有更好的解决方案吗?耽误您时间,实在对不起!

更新

写一个简单的类来解决这个问题,看起来更好

代码语言:javascript
复制
public class TweenMonitor 
{

    public function TweenMonitor() 
    {
        throw new Error('static class');
    }

    private static var refDict:Dictionary = new Dictionary();

    public static function monit(tweens:Vector.<Tween>,onAllFinish:Function,id:String='$default$'):void 
    {
        for (var i:int = 0; i < tweens.length; i++) 
        {
            var tween:Tween = tweens[i];
            if (tween == null)
                continue;
            if (refDict[id] == null) {
                refDict[id] = 1;
            }else
                refDict[id]++;
            tween.addEventListener(Event.REMOVE_FROM_JUGGLER,function (e:Event):void 
            {
                refDict[id]--;
                if (refDict[id] == 0)
                    onAllFinish && onAllFinish();
            });
        }
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-06 12:55:37

你只需要Tween类的onComplete property (Starling框架)

下面是一个示例:

代码语言:javascript
复制
function addTween() { 

   var tween:Tween = new Tween(object, 2.0, Transitions.EASE_IN_OUT);
   tween.animate("x", object.x + 50);
   tween.animate("rotation", deg2rad(45));
   tween.fadeTo(0);   
   tween.onComplete = tween_complete;
   Starling.juggler.add(tween); 
}

function tween_complete() {

   // Handle Tween Complete Action Here   
}

编辑

在多个补间的情况下,您可以通过附加一个timer类而不是settimeout来做得更好:

代码语言:javascript
复制
while(some_condition){ //allocate a set of tween
     var tween=createTween(tweenCount++);
     tween.onComplete = function() { tweenCount--; }
}

var timer : Timer = new Timer(1000);
timer.addEventListener(TimerEvent.TIMER,update);
timer.start();    

function update(e) {

     if(tweenCount > 0) return;

     timer.stop();
     timer = null;

     doStuff();
}
票数 2
EN

Stack Overflow用户

发布于 2012-08-06 14:41:41

我会这样做:

代码语言:javascript
复制
OnComplete = tweenDone;

...

function tweenDone() {
    TweenCount--;
    If(TweenCount == 0) doStuff();
}

这是在手机上写的,所以我不得不走很多捷径,如果你需要更多信息,请留言!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11822469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档