首先感谢你的阅读。
这是我的代码:
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 );
}
在最后一个while循环结束之前,不会调度COMPLETE事件。 也就是说在URLLoader.load(URLRequest)之后,加载器不会立即发送数据(没有延迟)? 导致需要继续执行一些loader.load(request)命令并按顺序执行,我需要按顺序为每个加载命令无延迟地发送数据。 怎么解决?
感谢。
答案 0 :(得分: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;
}