2009-06-17 79 views
0

我們正在爲我們的歐洲客戶開發一個小型Flash小遊戲,他們要求我們開發我們的Flash遊戲,以便他們可以將我們的SWF遊戲加載到他們的ActionScript 3項目,動態。將SWF加載到ActionScript 3項目中(Flex Builder)

基本上他們有一個控制檯,可以在我們自己的遊戲中加載許多其他Flash遊戲,具體取決於玩家在「選擇遊戲」屏幕上按下哪個按鈕。

基本上,我們有一個FLA項目,我們在Flash Professional CS4中編寫,而且一切都基本上是一個簡單的Flash遊戲。當我們通過Ctrl + Enter測試遊戲或者通過雙擊運行編譯的SWF文件時,一切運行良好,遊戲執行完美,每個人都是一個快樂的兔子。

我們需要把握的是我們加載到SWF我們的客戶AS3的項目,基本上是在Flex Builder 3中創建的外部ActionScript 3項目中的客戶端發佈我們下面的代碼加載SWF:

var myGame:FunkyChickenGame = new FunkyChickenGame(); 
addChild(myGame); 

...它在客戶端應用程序的ActionScript 3應用程序構造函數中執行,或者在「選擇您的遊戲」屏幕上按下按鈕的事件處理程序。

我們嘗試在Flex Builder中創建一個空白的AS3項目,並嘗試按照上面的代碼片段加載SWF。我們在外部SWF文檔類中的所有跟蹤都在Flex Builder控制檯視圖中按預期顯示,因此代碼運行良好。

我們遇到的問題是,儘管調用addChild(myGame)...我們沒有看到任何圖形,只是封裝AS3項目的默認背景顏色。

但是請注意,當我們通過在Windows中雙擊Game.swf文件來運行SWF時,它將全部執行完美,遊戲沒有缺陷和故障。

任何有關這個主題的幫助將不勝感激。先謝謝你。

+0

你沒有得到任何錯誤?對我來說,這聽起來像是Game.swf中的一個空白參考。在舞臺參考之前,你能想到你可能試圖與舞臺談話的地方嗎?直到addChild(myGame),階段引用纔會存在;執行 。 – 2009-06-17 16:08:51

+0

FunkyChickenGame的構造函數中是否有Event.ADDED_TO_STAGE事件的事件監聽器?這將允許您監聽遊戲何時添加到舞臺上(通過客戶端的addChild()方法),然後可以在觸發該事件時初始化您的遊戲。 – wpjmurray 2010-01-08 23:16:39

回答

1

你需要使用什麼是Loader類的實例,比如:

var loader:Loader = new Loader(); 

// you'll need to write a method named onLoaded to capture the COMPLETE event 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded); 

loader.load(new URLRequest("game.swf")); 
addChild(loader); 
0

創建類的實例是工資,因爲它可以得到的。你的客戶有一個有趣的方式發佈引用。

但是FunkyChickenGame可能是客戶端創建的一個類,可以啓動您的遊戲。也許遊戲嵌入到他們的Flash應用程序中,但這意味着需要較長的加載時間。如果真的有很多遊戲是這樣「裝載」的。

我的建議是,你不要使用舞臺,根或任何可能鏈接到主應用程序而不是你的遊戲的屬性,並讓客戶端決定如何加載它。

相關問題