繁体   English   中英

AS3使用ENTER_FRAME为动态创建的影片剪辑制作动画

[英]AS3 animate dynamically created movie clips with ENTER_FRAME

我有一些代码可以从库中加载影片剪辑,然后将其复制并以不同的大小,位置和旋转方式在舞台上传播。 我不知道的是如何使用ENTER_FRAME事件监听器为每个动画设置动画-那么也许我也可以为比例,位置和旋转设置动画了? 任何帮助,不胜感激。 谢谢。

for (var i = 0; i < 20; i++ )
{

    //Generate Item from library
    var MovieClip_mc:mcMovieClip = new mcMovieClip();
    addChild(MovieClip_mc);

    //Size
    var RandomSize = (Math.random() * 0.5) + 0.5;
    MovieClip_mc.scaleX = RandomSize;
    MovieClip_mc.scaleY = RandomSize;

    //Rotation
    var RandomRotation:Number = Math.floor(Math.random()*360);
    MovieClip_mc.rotation = RandomRotation;

    //Position
    MovieClip_mc.x = Math.floor(Math.random() * CanvasWidth);
    MovieClip_mc.y = Math.floor(Math.random() * CanvasHeight);

}

您实际上不需要从外部进行此操作。 您可以在第一帧中使用自己的脚本对其进行动画处理,因此将为每个实例设置动画:

addEventListener(Event.ENTER_FRAME, onFrame);

function onFrame(e:Event):void
{
    // Math.random() - 0.5 will produce a random value from -0.5 to 0.5

    x += Math.random() - 0.5;
    y += Math.random() - 0.5;

    scaleX += (Math.random() - 0.5) / 10;
    scaleY = scaleX;

    rotation += (Math.random() - 0.5) * 5;
}

为了提高性能,最好使用一个ENTER_FRAME处理程序。 该处理程序可以位于您的主类中,并可以通过调用mcMovieClip类中声明的某些方法来更新每个mcMovieClip的属性。 以下是一个简单的示例。

主班

var mcs:Array = [];
for(var i:int = 0; i < 1; i++)
{
    mcs.push(new mcMovieClip());
    addChild(mcs[i]);
}
addEventListener(Event.ENTER_FRAME, updateTime);

function updateTime(e:Event):void
{
    for(var j:int = 0; j < mcs.length; j++)
    {
        mcs[j].updatePosition(Math.random() * stage.stageWidth, 
                              Math.random() * stage.stageHeight);
        mcs[j].updateRotation(Math.random() * 360);
        mcs[j].updateSize(Math.random());
    }
}

mcMovieClip类

function updateSize(size:Number):void
{
    this.scaleX = this.scaleY = size;
}
function updateRotation(rot:Number):void
{
    this.rotation = rot;
}
function updatePosition(newX:Number, newY:Number):void
{
    this.x = newX;
    this.y = newY;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM