#flash #actionscript-3
#flash #actionscript-3
Вопрос:
Я пытаюсь загрузить растровое изображение на сцену, а затем полностью переключать его, используя AS code. Следующее работает, но когда оно добавляет новое растровое изображение на сцену, оно оставляет последнее, таким образом, оставляя загрузку того же растрового изображения.
Есть идеи? Я попытался добавить «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:
Ваша проблема в том, что в каждом кадре вы фактически добавляете нового дочернего элемента в список отображения — фактически вы перемещаете не один объект, а загружаете несколько объектов в разных положениях. Вам либо нужно переместить ваш загрузчик в другую функцию, которая не выполняется для каждого кадра, либо вам нужно инкапсулировать ее в 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);
}
}
}
Кроме того, я бы посоветовал не использовать функции внутри функций (если вы действительно не знаете, что хотите, чтобы это было именно так ….. но вы, вероятно, не хотите, чтобы это было именно так).
Удачи.