我正在绘制不同程度的圆形线条。我希望动画持续约0.5秒。由于原因,我不能很慢地解决它的运行问题。脚本:非常慢的动画片段
奇怪的是,如果我跳过补间并调用函数tweenToNext,它会立即渲染。
var degrees:int;
var posX:int = 102;
var posY:int = 102;
var rad:int = 100;
var mc:MovieClip = new MovieClip();
addChild(mc);
mc.graphics.lineStyle(5, 0xFF0000, 1);
mc.graphics.moveTo(posX, posY - rad)
mc.i = -Math.PI/2;
tweenToNext();
function tweenToNext(per:Number = 360):void {
degrees += 1;
if (mc.i <= (3 * Math.PI/2) && degrees < per) {
var x:Number = posX + Math.cos(mc.i) * rad;
var y:Number = posY + Math.sin(mc.i) * rad;
mc.graphics.lineTo(x, y);
mc.i += Math.PI/180;
TweenLite.to(mc, 0.001, {onComplete:tweenToNext});
}
}
我试过Timer和setTimeout,但是这些产生的速度相同。
矢量路径越复杂,渲染速度越慢。我建议或者查看[drawPath()](http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WSA8BD9022-BAB1-46d3-9B26-0D9649743C8E.html),它应该更高效或者使用BitmapData实例画线。 –
看看[这个答案](https://stackoverflow.com/questions/24227493/actionscript-3-0-tracing-the-path-of-a-moving-body/24229255#24229255) –
也请做不是嵌套函数,你可能会错误地认为它们依赖于外部声明的变量。 – Vesper