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