0

こんにちは、フラッシュでソケットを開こうとしています。したがって、1 つのチュートリアルに従いましたが、エラーが発生しました。

package com.game.game
{
    import flash.net.socket;
    import flash.events.*;
    public dynamic class game
    {
        var mysocket:Socket = new Socket();

        Security.allowDomain("*");

        mysocket.addEventListener(Event.CONNECT, onConnect);
        mysocket.addEventListener(Event.CLOSE, onClose);
        mysocket.addEventListener(IOErrorEvent.IO_ERROR, onError);
        mysocket.addEventListener(ProgressEvent.SOCKET_DATA, onResponse);
        mysocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecError);

        mysocket.connect("hejp.co.uk", 80);
    }

}

これらのエラーが発生しました:

1120: Access of undefined property mysocket.
1120: Access of undefined property onConnect.
1120: Access of undefined property mysocket.
1120: Access of undefined property onClose.
1120: Access of undefined property mysocket.
1120: Access of undefined property onError.
1120: Access of undefined property mysocket.
1120: Access of undefined property onResponse.
1120: Access of undefined property mysocket.
1120: Access of undefined property onSecError.
1120: Access of undefined property mysocket.
The class 'com.game.game.game' must subclass 'flash.display.MovieClip' since it is linked to a library symbol of that type.

何かをインポートする必要がありますか??? 何か案は ?

4

1 に答える 1

1

ソケットの正しいコードがあるように見えますが、メソッド内にある必要があります。ソケットをインスタンス化するコードをコンストラクター メソッド内に配置すると、クラスをインスタンス化するときにソケットに接続されます。または、クラスの外部から呼び出すことができる別のパブリック メソッド内にソケット コードを配置することもできます。

宣言で public または private を指定して、クラス プロパティとメソッドのスコープを指定する必要がある場合もあります。

また、各リスナー関数を宣言する必要があります。そうしないと、ソケットに接続する関数がありません。

package com.game.game
{
    import flash.net.socket;
    import flash.events.*;
    public dynamic class game
    {
        //public class variables
        public var mysocket:Socket;

        //constructor
        public function game() {
            mysocket = new Socket();

            Security.allowDomain("*");

            mysocket.addEventListener(Event.CONNECT, onConnect);
            mysocket.addEventListener(Event.CLOSE, onClose);
            mysocket.addEventListener(IOErrorEvent.IO_ERROR, onError);
            mysocket.addEventListener(ProgressEvent.SOCKET_DATA, onResponse);
            mysocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecError);

            mysocket.connect("hejp.co.uk", 80);
        }

        //private listener methods
        private function onConnect(evt:Event):void {
            //connect method code
        }

        private function onClose(evt:Event):void {
            //close method code
        }

        private function onError(evt:IOErrorEvent):void {
            //error method code
        }

        private function onResponse(evt:ProgressEvent):void {
            //response method code
        }

        private function onSecError(evt:SecurityErrorEvent):void {
            //security error method code
        }
    }

}
于 2012-10-02T15:25:06.540 に答える