2009-12-18 80 views
1

我正在爲自己創建一個投資組合網站,並希望將swf嵌入到我的主Flash文件中。我的問題是,當我使用此代碼將swf放入我的主Flash文件中時,它不會保留正確的swf尺寸並顯示舞臺外的東西。我似乎無法弄清楚!任何幫助深表感謝!謝謝。swf尺寸加載到fla的問題

這裏是我的代碼。(我使用Flash CS3於AS3)。

var my_Loader:Loader = new Loader(); 

var my_url:URLRequest=new URLRequest("piggybankgame.swf"); 

my_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE, finishLoading); 
my_Loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); 

my_Loader.load(my_url); 

function finishLoading(loadEvent:Event) { 
    addChild(loadEvent.currentTarget.content); 
} 

回答

0

我想你可以只添加加載父顯示對象。例如,

var gameSwf:Loader = new Loader(); 
gameSwf.load(new URLRequest("piggybankgame.swf")); 
gameSwf.x = 100; 
gameSwf.y = 100; 
gameSwf.width = 320; 
gameSwf.height = 200; 
//Maybe make it visible of something  
gameSwf.contentLoaderInfo.addEventListener(Event.COMPLETE, gameLoaded); 
gameSwf.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); 
addChild(gameSwf); 

我知道一個事實,即在Flex 3中使用SWFLoader類,這是我相信的Flex等價物。

+0

是的,你可以直接將加載器添加到它,它是一個更好的方式來做到這一點。 – Patrick 2009-12-18 00:43:38

0

你必須設置你的swf的加載後的大小到你想要什麼=>

function finishLoading(loadEvent:Event) { 
var dob:DisplayObject= loadEvent.currentTarget as DisplayObject; 
// or 
// var dob:Loader = loadEvent.currentTarget as Loader; 
addChild(dob); 
dob.width=myWidth; 
dob.height=myHeight; 
} 

當然要裝入罐做什麼要和寬度的SWF和你逝去的高度。

2

如果我正確理解你,這與Flash遊戲SWF的創建方式有關。最有可能的是,它沒有關心舞臺邊界之外的事情。

一個常見的誤解是由SWF寬度和高度定義的矩形是裁剪邊界。不是這樣。如果顯示SWF的窗口足夠大以顯示它,則任何超出此邊界的內容都將可見。在操作系統中調整獨立Flash Player窗口的大小時,或者將寬度和高度設置爲大於SWF中定義的值的HTML頁面中嵌入SWF時(例如,從Flash CS3/CS4發佈時),也會發生這種情況。

如果您想要像遊戲一樣加載內容到尺寸較大的SWF中,並且只顯示舞臺尺寸範圍內的遊戲SWF部分,則需要對其進行掩蓋。

var loader : Loader = new Loader(); 
loader.load(new URLRequest('my320x240game.swf')); 

var gameMask : Shape = new Shape; 
gameMask.graphics.beginFill(0xffcc00); 
gameMask.graphics.drawRect(0, 0, 320, 240); 

loader.mask = gameMask; 
this.addChild(loader); 

這將創建充當裁剪掩模裝載機的顯示對象的矢量形狀(320×240的矩形)。如果您熟悉蒙版,可以很容易地看到這意味着如何將任何延伸到320x240矩形外部的內容隱藏起來。

有更好的方法來安排代碼當然,但這將有希望讓你朝着正確的方向前進。

+0

這正是我的問題所在。因爲我之前已經將它們嵌入到html文件中,並且沒有任何問題,我只是恢復了導出的swf尺寸是裁剪邊界。我裁剪了我原來的遊戲,現在工作正常。謝謝你的幫助。 – flashey 2009-12-21 03:29:47

+0

其實理查德我有另一個問題,如果你能幫助我。當你點擊遊戲的鏈接時就會出現,現在我正試圖爲人們導航到其他頁面時擺脫它而做準備。我的問題是,如何在遊戲開始時將引用gameSwf在代碼中的所有其他鏈接上刪除它,但尚未將其添加到舞臺上?我確信這是一個非常愚蠢的問題,但我無法解決這個問題。謝謝。 – flashey 2009-12-21 03:36:53

+0

只需使用gameSwf.unloadAndStop()卸載內容並停止其中的所有播放,然後使用gameSwf.parent.removeChild(gameSwf)將其從顯示列表中刪除。 – richardolsson 2009-12-21 07:59:30