Базовая анимация спрайтов в ActionScript 3 - PullRequest
0 голосов
/ 12 апреля 2011

Я пытаюсь загрузить растровое изображение на сцену, а затем полностью изменить его с помощью кода 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 голосов
/ 12 апреля 2011

Ваша проблема в том, что в каждом кадре вы фактически добавляете нового дочернего элемента в список отображения - вы фактически не перемещаете один объект, а загружаете несколько объектов в разных положениях. Вам нужно либо переместить ваш загрузчик в другую функцию, которая не запускается для каждого кадра, либо вам нужно поместить его в блок 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);
        }
    }
}

Кроме того, я бы советовал не использовать функции внутри функций (если только вы действительно не знаете, что хотите, чтобы это было так ... но вы, вероятно, не хотите, чтобы это было так).

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...