Google暗示以下问题并不罕见:使用Loader将某些内容加载到Flash阶段中,我想调整它的大小。但是,如果您在加载内容之前执行此操作,调整图像大小会使其消失。在Event.COMPLETE后调整Flash加载器的大小不起作用
建议的解决方案通常为Event.COMPLETE使用Event侦听器。这里是我的代码:
public function FlixelTest()
{
super();
// support autoOrients
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
myLoader = new Loader();
myLoader.x = (stage.fullScreenWidth-640)/2;
myLoader.y = (stage.fullScreenHeight-480)/2;
addChild(myLoader);
var url:URLRequest = new URLRequest("stuff.swf");
myLoader.load(url);
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadProdComplete);
}
function loadProdComplete(e:Event):void{
myLoader.height = 480;
myLoader.width = 640;
}
根据每个帖子我能找到到目前为止网上,这个解决方案应该工作。事件触发时,加载器完成并可调整大小。但是,它没有。注释修改.height和.width的行会导致SWF出现,取消注释并再次运行,并且SWF不会加载。
其他任何事情都可能在这里干扰?这是使用FlashBuilder构建一个Actionscript3 - > Android项目。
编辑 - 这里的解决方案似乎并没有工作,要么:Problem resizing loader after loading swf
更新 - 我有一个工作,而可怕的解决方案,它是如下:
function loadProdComplete(e:Event):void{
if(myLoader.width != 0){
myLoader.width = 640;
myLoader.content.width = 640;
}
else{
timer = new Timer(500);
timer.addEventListener(TimerEvent.TIMER, timertick); // there should be a comma here but yahoo replaces it with ...
timer.start();
}
}
function timertick(e:TimerEvent){
timer.stop();
stage.dispatchEvent(new Event(Event.COMPLETE));
}
它基本上使用内容的宽度来查看它是否完成加载。如果没有,则等待半秒钟并且拒绝COMPLETE事件。这实际上有助于显示它(虽然宽度尚未调整,我认为这是一个单独的问题) - 我不能相信这是让它工作的唯一方法...
这可能不是问题,但我注意到在调用'myLoader.load()'之后添加了监听器...如果SWF是本地文件(似乎是),那么可能在加载之前完成加载听众被添加:)傻了,可能不是问题... – 2012-07-07 02:17:00
感谢您的洞察力!在这种情况下,我认为这不是问题,因为COMPLETE肯定会触发该功能。如果有的话,它太早发射!不过谢谢。 – mtrc 2012-07-07 12:00:24