基本的ActionScript 3精灵补间

时间:2011-04-11 21:02:08

标签: flash actionscript-3

我正在尝试将一个位图加载到舞台上,然后使用AS代码完全填充它。以下工作,但当它向舞台添加一个新的位图图像时,它会留下最后一个,从而留下相同位图的负载。

有什么想法吗?我尝试添加“removeChild(myLoader);”但那没有做任何事。非常感谢。

import flash.display.MovieClip;
import flash.events.*;

stage.frameRate = 31;
var a =0;

btn111.addEventListener(MouseEvent.CLICK, go);

function go(event:MouseEvent):void
{
    this.addEventListener(Event.ENTER_FRAME, drawrect);

    function drawrect(evt:Event)
    {
        // Create a new instance of the Loader class to work with
        var myLoader:Loader=new Loader();

        // Create a new URLRequest object specifying the location of the external image file
        var myRequest:URLRequest=new URLRequest("logo.png");

        // Call the load method and load the external file with URLRequest object as the parameter
        myLoader.load(myRequest);

        // Add the Loader instance to the display list using the addChild() method
        addChild(myLoader);

        // Position image
        myLoader.x = 100;
        myLoader.y = a++;

        if(a > 50)
        {
            //removeChild(box);
            removeEventListener(Event.ENTER_FRAME, drawrect);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你的问题是,在每一帧上,你实际上都是在显示列表中添加一个新子节点 - 你实际上并没有移动一个对象,而是在不同位置加载多个对象。您需要将加载程序移动到另一个不按帧运行的函数中,或者需要将其封装在if块中以检查它是否存在。

试试这个。

import flash.display.MovieClip;
import flash.events.*;

stage.frameRate = 31;
var a =0;

private var myLoader:Loader;

btn111.addEventListener(MouseEvent.CLICK, go);

function go(event:MouseEvent):void
{
    this.addEventListener(Event.ENTER_FRAME, drawrect);

    function drawrect(evt:Event)
    {
        if (myLoader == NULL)
        {
            // Create a new instance of the Loader class to work with
            myLoader:Loader=new Loader();

            // Create a new URLRequest object specifying the location of the external image file
            var myRequest:URLRequest=new URLRequest("logo.png");

            // Call the load method and load the external file with URLRequest object as the parameter
            myLoader.load(myRequest);

            // Add the Loader instance to the display list using the addChild() method
            addChild(myLoader);
        }

        // Position image
        myLoader.x = 100;
        myLoader.y = a++;

        if(a > 50)
        {
            //removeChild(box);
            removeEventListener(Event.ENTER_FRAME, drawrect);
        }
    }
}

另外,我会建议不要使用函数中的函数(除非你真的知道你希望它是那样的......但你可能不希望它是这样的。)

祝你好运。