我正在开发一款游戏,基于具有不同“耐心”的多个实体。如果意外下降,实体将会死亡。很简单。
玩家限制“助推器”,如果你将这些助推器给予实体,他们的耐心会增加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的实际持续时间。
我希望有人可以为我解决问题:)
答案 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
。但是,在我的测试中,这会导致一些不稳定的行为(跳过)。