我有多人Flash遊戲(AS3),我想要防止多盒子,例如阻止用戶在一臺計算機上運行我的遊戲的兩個(或更多)實例。有沒有簡單可靠的方法如何做到這一點?我不想根據IP地址對它們進行過濾。如何防止Flash遊戲中的多盒?
我試圖使用LocalConnection,但它是不可靠的。它在大部分時間都有效,但由於某種原因,它有時會失敗。
然後我嘗試使用SharedObject向它寫入隨機值並檢查週期性間隔中的更改。想法是,當第二個實例啓動時,它會覆蓋以前的值,並在第一次檢查將失敗。
public function MultiboxPreventer(callback:Function)
{
uniqueKey = Math.random() * uint.MAX_VALUE;
so = SharedObject.getLocal("prefs");
so.data.multiboxKey = uniqueKey;
so.flush();
trace("MB init: " + so.data.multiboxKey);
so = null;
this.callback = callback;
var t:Timer = new Timer(10000, 0);
t.addEventListener(TimerEvent.TIMER, checkKey);
t.start();
}
private function checkKey(event:TimerEvent):void {
so = SharedObject.getLocal("prefs");
if(so.data.multiboxKey != uniqueKey) {
callback();
}
trace("MB check: " + so.data.multiboxKey);
}
但是當我測試它時,它的行爲就好像每個實例都有自己的SharedObject,因此它們不會重寫對方的值。
完成此操作的最佳方法是什麼?
有你在嘗試的getLocal使用本地路徑()?您的SWF文件(本地文件,託管)的上下文是什麼? –
我正在測試它作爲本地文件以及託管在我的網站上,但它沒有任何工作方式。我沒有嘗試在getLocal()中設置路徑,我將按照原始問題中提到的方式研究它 – Lope