AS3 TweenMax:有没有办法覆盖补间持续时间?

时间:2014-09-19 14:30:23

标签: actionscript-3 flash overwrite tweenmax

我正在开发一款游戏,基于具有不同“耐心”的多个实体。如果意外下降,实体将会死亡。很简单。

玩家限制“助推器”,如果你将这些助推器给予实体,他们的耐心会增加5;

public function initTimer (_count) {
    _count = _count + State.globalPatience;
    TweenMax.to(filler, _count, // counts back
            {width: 1 ,ease:Linear.easeNone,     //  and display it
                onComplete : Control.updateLifes,    // -1 life
                onCompleteParams : [this],           // and remove this entity
            });

}

这部分工作正常。 但我坚持使用助推器覆盖部分。

public function updatePatience( _more):void // _more == 5
{   
    var current = TweenMax.getTweensOf(loader);
    trace('add: ' + _more + ' sec to : ' + loader.duration );

}

这跟踪:“添加:5秒到:未定义”

基本想法是抓住加载器持续时间,并覆盖它。 或者 - 终止当前的Tween,并使用更新的持续时间初始化另一个。但似乎我甚至无法获得当前Tween的实际持续时间。

我希望有人可以为我解决问题:)

1 个答案:

答案 0 :(得分:0)

首先,您在updatePatience中获得了一些奇怪的代码,您将current设置为TweenMax.getTweensOf(loader),但您从未使用它。然后,您尝试访问duration上的loader媒体资源。

在绿色块中覆盖补间的最简单方法是使用overwrite属性

来自文档:

  

overwrite:String(或整数) - 控制其他补间的方式(以及如果)   同一目标被覆盖。有几种模式可供选择   来自,但是" auto"是默认的

我建议你这样做:

TweenMax.to(filler, [your new count],
            {width: 1 ,ease:Linear.easeNone,
                onComplete : Control.updateLifes,
                onCompleteParams : [this],
                overwrite: "all"
            });

这将立即更新你的补间。

话虽这么说,你可以访问补间的持续时间:

public function updatePatience( _more):void // _more == 5
{   
    var current:Array = TweenMax.getTweensOf(loader);
    for each(var tween:TweenMax in current)
    {
        trace(tween.duration());
    }
}

注意:您还可以通过将值传递给该方法来更新duration。但是,在我的测试中,这会导致一些不稳定的行为(跳过)。

相关问题