读书人

as3.0中如何让flash播放到最后一帧的

发布时间: 2012-11-08 08:48:11 作者: rapoo

as3.0中,怎么让flash播放到最后一帧的时候重启
注意:不是让他返回第一帧。
----------------------
我的最终目标是实现,一个物体(纸板)的一层一层堆叠效果。
我的思路是这样子的:每一帧,画一个块纸板,每块纸板在Y方向上有一定的偏移,这样就形成了不断的叠加效果。
但是这样做之后,就有了这样一个问题:
在第二次播放这个flash的时候,图片上就会出现残影,也就是说有他之前画的笔迹。
因此,我想到在每次结束之后,让这个flash重启。
重启这个需求似乎不太可能做到。
那么怎么样的一个设计,能够达到我的纸板堆叠效果
源程序很短,如下:

//画图的原点
var StartX:Number=82;
var StartY:Number=95;
//画图函数,画一块纸板
function donghua():void
{
var mySprite:Sprite =new Sprite();
mySprite.x=StartX;
mySprite.y=StartY;
this.addChild(mySprite);
mySprite.graphics.lineStyle(2,0xddbb57);
mySprite.graphics.beginFill(0xffcc00);

mySprite.graphics .moveTo(mySprite.x ,mySprite.y);
mySprite.graphics .lineTo(mySprite.x+68,mySprite.y+16);
mySprite.graphics.lineTo(mySprite.x+177,mySprite.y-4);
mySprite.graphics.lineTo(mySprite.x+121,mySprite.y-11);
mySprite.graphics.lineTo(mySprite.x,mySprite.y);
mySprite.graphics.endFill();

}
//增加事件监听
addEventListener(Event.ENTER_FRAME,onEnterFrame);
function onEnterFrame(event:Event):void
{/*
mySprite.x+=2;
mySprite.y+=;
*/
donghua();
StartY+=-0.1;//每次Y方向上增加0.1模拟出叠加的效果
//if(i==200)
}




以下是本人百度网盘上的原程序(fla文件):
http://pan.baidu.com/share/link?shareid=86680&uk=335693634

[解决办法]
你的程序从效率上是有问题的。
你在每一帧都创建了一个sprite,并且添加到显示列表,数分钟后可能因为显示列表sprite过多造成播放器崩溃。

mySprite可以是全局变量,所有的图像都是在这里面绘制的。当你重新开始时,只需要清空mySprite即可。

读书人网 >Flash

热点推荐