2014-06-14 61 views
1

使用ActionScript,當幾個客戶端連接到遠程SharedObject時,它可以作爲「實時」數據交換,所有客戶端在任何客戶端進行更改時都會更新。這顯然是有效的,因爲只有服務器有實際的訪問權限,並且只是簡單地播放這個改變。幾個本地SWF可以共享一個本地SharedObject嗎?客戶端可以共享服務器上的遠程SharedObject嗎?

有沒有辦法在加載到獨立投影儀的幾個本地swf文件之間啓用相同類型的功能?

具體來說:用戶可以運行一個在線遊戲客戶端的多個(有些具有60個或更多....)實例,其中包括相同虛擬世界的地圖。如果每個實例都可以訪問相同的數據,那麼它將會節省很多(地圖比喬治亞州大)內存。

由於每個客戶端都需要讀寫訪問權限,sharedObject明顯會產生文件訪問頭痛。有沒有其他技術可用或加載輔助swf的方式可能作爲'服務器'?

回答

0

是的,你可以使用Flash SharedObject做類似的事情。你幾乎找到了名字,你只需要搜索它:)

檢查出getLocal方法 - 它允許你從多個文件訪問本地持久信息。

幾件事情:

  • 請記住,爲了設置正確的localPath,以便能夠從多個文件讀取數據。
  • 請記住,此存儲空間首先受到限制,並且此限制通常由用戶定義。
  • 另外至關重要事情是本地存儲可以被用戶拒絕。這意味着不確定你總是可以在那裏寫信。
  • 雖然它可以與Flash Media Server一起使用,但當屬性發生更改時,標準本地存儲不會派發事件。如果需要實時更新,您需要創建自己的腳本。

希望幫助:)

+0

都能跟得上。不起作用。使用API​​中的示例,更改'清除'功能以重新加載mySo。運行一個實例,設置一個值。打開另一個,它讀取正確的值。現在嘗試再次寫入。第一例從未得到改變。打開另一個實例,它會得到正確的值。添加一個按鈕關閉並重新讀取SO。仍然沒有去。 (我甚至用setTimeout試過)一個打開的實例永遠不會更新,任何新的實例將始終正確讀取上次保存的值...任何正在運行的實例總是隻能看到它自己的更改。 – schwack

+0

您是否設置了相同的**自定義**所有這些實例的'localPath'?如果你沒有提供這些,它將無法工作。如果您閱讀手冊,則說這是可能的,所以.. :) –

+0

實際上,getLocal()方法的API指出:'返回僅對當前客戶端可用的本地持久共享對象的引用「。但!有一個部分的解決方案:不管有多少客戶共享該對象,最後一個寫入它的對象始終是永久的,因此關閉並重新打開它將檢索當前值。不幸的是,由於SharedObject沒有擴展EventDispatcher,所以沒有可以訂閱的事件。我相信這確實給了我足夠多的功能 – schwack

相關問題