我有一个代码绿色代码的等价AS3代码?
var timeline:TimelineLite=new TimelineLite ;
timeline.append(new TweenLite(MyClip,1,{y:367,ease:Expo.easeOut}));
我需要在动作脚本对应的代码3.
编辑:我怎么能执行这个动画使用了使用GreenSock插件的功能呢? 这里“TimelineLite”是一个类,“append”是成员函数,所以用这个我怎么做动画。
我有一个代码绿色代码的等价AS3代码?
var timeline:TimelineLite=new TimelineLite ;
timeline.append(new TweenLite(MyClip,1,{y:367,ease:Expo.easeOut}));
我需要在动作脚本对应的代码3.
编辑:我怎么能执行这个动画使用了使用GreenSock插件的功能呢? 这里“TimelineLite”是一个类,“append”是成员函数,所以用这个我怎么做动画。
是,该代码是有效的ActionScript3。 TimelineLite和TimelineMax是GreenSock补间引擎的一部分。见这里:TimelineLite – Sequence/Group Multiple Tweens, Control Them as a Whole。
你到底想要什么,没有插件?
MyClip.addEventListener(Event.ENTER_FRAME, onEnterFrame);
var time:Number = 0;
var deltaTime:Number = 1/stage.frameRate;
var initY:Number = MyClip.y
var deltaY:Number = 367 - initY;
function onEnterFrame(event:Event):void
{
time += deltaTime;
if (t >= 1)
{
MyClip.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
MyClip.y = 367;
}
else
{
MyClip.y = deltaY * (-Math.pow(2, -10 * time) + 1) + initY;
}
}
我想,虽然我没有测试过它。
缓解从robertpenner.com方程,尽管mighy是可优化的
使用输入帧可能不是最佳的,见my blog post上代号为更多的信息。
真的,你应该使用补间库。它们是由聪明的人组成的,他们希望从性能繁重的操作中挤出每盎司的性能。您也可以考虑查看Grant Skinner's GTween,因为它的许可限制比TweenLite/TweenMax更少。
您无法使用基本AS3功能复制此内容。 Greensock的补间库增加了一些功能,它允许您将很多补间组合成一个时间线,以便补间顺序运行。如果您想要复制它,则必须为每个要补间的项目创建补间,并在每个补间之后使用TweenEvent.MOTION_FINISHED事件来启动下一补间。
编辑:更新了代码,以便它创建一个假时间轴。此代码基于alecmce答案。只是增加了Tweens排序的可能性。由于您的问题是关于如何在没有类的情况下复制类成员,因此使用动态actionscrip可以在对象内伪类编写类,并在调用函数时为您提供相同的语法。换言之:这样做的唯一建议是给你相同的语法。删除timeline
对象可以实现相同的功能。
2个测序twens例如:使用动态动作
// updated code
var timeline:Object = new Object();
timeline.memory = new Array();
timeline.append = function (tween_obj:MovieClip, toY:Number){
this.memory.push ([tween_obj, toY]);
};
timeline.checkTimeline = function(){
if (this.memory[0] != null) {
this.TweenFeather(MovieClip(this.memory[0][0]));
}
};
timeline.startAnimation = function() {
this.checkTimeline();
};
timeline.TweenFeather = function TweenFeather(_do:MovieClip):void
{
_do.addEventListener(Event.ENTER_FRAME, _onEnterFrame);
var time:Number = 0;
var deltaTime:Number = 1/stage.frameRate;
var initY:Number = _do.y;
var deltaY:Number = this.memory[0][1] - initY;
function _onEnterFrame(event:Event):void
{
time += deltaTime;
if (time >= 1)
{
_do.removeEventListener(Event.ENTER_FRAME, _onEnterFrame);
_do.y = timeline.memory[0][1];
timeline.memory.shift();
timeline.checkTimeline();
}
else
{
_do.y = deltaY * (-Math.pow(2, -10 * time) + 1) + initY;
}
}
}
timeline.append(MyClip, 367);
timeline.append(MyClip2, 200);
timeline.startAnimation();
你失去一切:
timeline.append(MyClip, 367);
timeline.append(MyClip2, 200);
timeline.startAnimation();
(见下面的更新代码)
我10分钟笨拙的方法as3的好东西,不知道你是如何限制k的。 G运气
为什么你会这样做?我的方法有什么优势?无类型的对象,匿名函数,额外的变量,额外的方法调用都会增加应用程序的权重并减慢速度。它看起来像你采取我的方法,并使其更慢? – alecmce
完全开放,我只是把你的代码,并做了一个伪时间线。认为这很明显,因为我没有改变你的代码名称变量中的任何东西。但是如果你花一些时间阅读这个问题,你会发现有一点比补间更好。需要时间表。我笨拙的代码(正如我之前所说的)只是你如何做到这一点的草图。在startAnimation中添加更多功能后,您可以轻松地对每个与其他人的补间关系进行更多控制。我是我错了吗? –
嘿,你应该回去,并回答你的问题接受! – grapefrukt
试图在不使用TweenLite的情况下重写它是非常复杂的。你必须创建一个定时器,创建缓动功能,并做一堆东西来播放/停止/倒带。我建议你只使用TweenLite,它可以为你节省大量时间,让生活更有趣。 –
为什么你想在没有图书馆的情况下做到这一点?它是大小? – back2dos