2012-03-20 54 views
1

我目前正在做一個Facebook遊戲,並且我有一個關於整合一個生命計數器的問題,這個計數器會隨着時間的推移重新生成一個Facebook遊戲。爲Facebook遊戲創建一個持久性生命計數器

該遊戲是一個簡單的Flash/AS3射擊遊戲,其中用戶正在爭奪最高分。

由於金錢的原因,每個遊戲都需要一個生命,如果所述生命計數器大於等於1,用戶應該只能開始一個新遊戲。

要明確的事情了,我提交了一個鏈接到PopCap的Facebook遊戲「祖瑪閃電戰」:

ZUMA Blitz

我能想到的幾個方法可以做到這一點,但我不知道這是最好的/最簡單的方法。

難道是最好的:

  1. 通過PHP與服務器的通信使它在AS3?

  2. 或者在JavaScript中完成並將計數返回給AS3?

另一個可能相關的問題是,我怎麼告訴我的數據庫,從壽命計數器的數據應該存儲在遊戲被關閉(例如,通過關閉瀏覽器)。

我可以從Flash做到這一點,或者我必須應用html/JavaScript方法嗎?

+2

我相信你的問題得到了投票,因爲是有點混亂。嘗試更清楚,也許你會得到更好的結果/迴應。 +1,因爲沒有人說他們爲什麼投票給你。 – 2012-03-20 13:07:41

+0

我同意,這不是一個壞的問題,只是一些狂野的措辭。 +1 – Feltope 2012-03-20 15:00:29

回答

1

方法1. 只要你可以,使用ActionScript與服務器通信。正如jocky所說,URLLoader和URLRequestMethod是要走的路。

無論何時您不能使用使用ActionScript進行操作,ExternalInterface都可爲您提供所有JavaScript功能。

對於遊戲關閉事件(瀏覽器標籤關閉事件),則可以用JavaScript接口這樣的:

import flash.external.ExternalInterface; 
// ... 
ExternalInterface.addCallback("closeGame", tellDatabaseToStore); 
// ... 
public function tellDatabaseToStore():void{ 
// ... 
} 

在JavaScript:

window.onbeforeunload = clean_up; 
function clean_up() 
{ 
    var flash = document.${application} || window.${application}; 
    flash.closeGame(); 
} 

${application}應與["YourEmbeddedFlashElementName"]取代。

+0

STALTZ ...完全真棒非常感謝你!那正是我期待的! – TicketToRide 2012-03-20 21:03:23

0

我會用選項1來做。我的意思是,你當然可以使用ExternalInterface在JavaScript和ActionScript之間進行通信,然後讓JavaScript中繼消息到你的服務器,但是更簡單的做一個POST查詢來自ActionScript。

查找關於URLLoader和URLRequestMethod的信息。

+0

非常感謝您的回覆!但是如果我這樣做,那麼當應用程序關閉並且應該存儲最後一個數據時,我該如何告訴服務器? – TicketToRide 2012-03-20 13:32:27