0

最初に読んでいただきありがとうございます。

これは私のコードです:

private function send( pkt:ByteArray )
{
     var int count = 0;
     var request:URLRequest = new URLRequest( ... );
     var loader:URLLoader = new URLLoader( ... );

     request.contentType = URLLoaderDataFormat.BINARY;
     request.method = URLRequestMethod.POST;
     loader.addEventListener(Event.COMPLETE, loader_complete);
     loader.dataFormat = URLLoaderDataFormat.BINARY;

     request.data = pkt;
     loader.load( request );

     //to pause the execution
     while( count < 100000000 );
}

COMPLETE イベントは、最後の while ループが終了する前に送出されません。つまり、URLLoader.load( URLRequest ) の後、ローダーはすぐにデータを送信しません (遅延なし)? 多数の loader.load(request) コマンドを継続的に実行する必要があるため、順番に、ロード コマンドごとに遅延なくデータを順番に送信する必要があります。それを解決する方法は?

ありがとう。

4

1 に答える 1

0

私が正しく理解していれば、あなたは次のようなものを探しています:

private function loader_complete(e:Event):void{
    if(this._ba.bytesAvailable > 0){
        this.send();
    }
}

private function send():void{
       var sendBA:ByteArray = new ByteArray();
       this._ba.readBytes(sendBA, 0, Math.min(1024, this._ba.bytesAvailable));
       var request:URLRequest = new URLRequest("...");
       request.contentType = URLLoaderDataFormat.BINARY;
       request.method = URLRequestMethod.POST;
       request.data = sendBA;
       var loader:URLLoader = new URLLoader(request);
       loader.addEventListener(Event.COMPLETE, loader_complete);
       loader.dataFormat = URLLoaderDataFormat.BINARY;
}
于 2013-05-21T04:36:53.803 に答える