0

共有の使用に関して、アドビのドキュメントに誤りがあるようobject.send()です。send メソッドをすべてのクライアントに実行しようとしています。

Adobe からクライアント側とサーバー側のコードをコピーしましたが、関数を呼び出すことができません。これは、出力のコンパイル エラーです。

Line 31 1119: Access of possibly undefined property doSomething through a reference with static type flash.net:SharedObject.

これをas3初心者に修正する方法を提案してください。誰でも私を助けることができますか?

var nc:NetConnection = new NetConnection();

nc.connect("rtmfp://localhost/submitSend");

nc.addEventListener(NetStatusEvent.NET_STATUS, netHandler);

function netHandler(event:NetStatusEvent):void{
    switch(event.info.code){
        case "NetConnection.Connect.Sucess":
        trace("Connecting...");
        break;

        case "NetConnection.Connect.Failed":
        trace("Unable to connect up");
        break;

        case "NetConnection.Connect.Rejected":
        trace("Whoops");
        break;
    }
}

var so:SharedObject = SharedObject.getRemote("mySo", nc.uri, true);

so.connect(nc);

so.doSomething = function(str) {
    // Process the str object.
};

サーバ側:

var so = SharedObject.get("mySo", true);
so.send("doSomething", "This is a test");
4

1 に答える 1

0

私の以前のコメントで述べたように、あなたが参照しているドキュメントへのリンクは、人々があなたを助けるのを助けるために大歓迎です...

すでに言及すべきいくつかのポイントがあります。

  • を呼び出す前に、イベント リスナーを追加する必要がありますconnect()
  • イベントを受け取ったら、共有オブジェクトを接続する必要がありますNetConnection.Connect.Success(ちなみに、この名前のサンプルにはタイプミスがあります)。
  • クラス インスタンスを共有オブジェクトのクライアントとして設定する必要があります。

これですべて問題が解決するかどうかはわかりませんが、これを試すことができます:

var nc:NetConnection = new NetConnection();

private function netHandler(event:NetStatusEvent):void
{
    switch(event.info.code)
    {
        case "NetConnection.Connect.Success":
        {
            trace("Connecting...");
            connectSharedObject();
            break;
        }
        case "NetConnection.Connect.Failed":
        {
            trace("Unable to connect up");
            break;
        }
        case "NetConnection.Connect.Rejected":
        {
            trace("Whoops");
            break;
        }
    }
}

private function connectSharedObject():void
{
    var so:SharedObject = SharedObject.getRemote("mySo", nc.uri, true);
    so.client = this;
    so.connect(nc);
}

public function doSomething(str:String):void
{
    // Process the str object.
}

nc.addEventListener(NetStatusEvent.NET_STATUS, netHandler);
nc.connect("rtmfp://localhost/submitSend");
于 2013-05-10T02:38:08.203 に答える