我正在尝试将一个位图加载到舞台上,然后使用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);
}
}
}
答案 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);
}
}
}
另外,我会建议不要使用函数中的函数(除非你真的知道你希望它是那样的......但你可能不希望它是这样的。)
祝你好运。