假设我们在其中声明了一个函数和一个套接字。我们打电话给connect
。现在我们打电话给addEventListener
进行连接。
理论上,我们可以设置提供给eventDispatcher的函数来更改类变量,而最初调用addEventListener
的函数可以锁定在该变量上(类似while(!class_instancce.is_connected)
)。
我的问题是:传递给addEventListener
的函数被调用flash运行时间会等待“等待”的函数结束吗?
答案 0 :(得分:0)
传入addEventListener的函数将在您正在侦听的实例调度后立即运行(如果有多个侦听器,则这将基于事件优先级。
听起来我想要尝试使套接字连接同步发生。你不能用套接字来做这件事,尽管AS中有some things你可以强制同步。
老实说,你应该尽早熟悉事件驱动的架构,因为它可以为你提供各种OOP可爱。
如果您受到约束并确定,您可以使用匿名函数。你可以自己研究一下。我认为这是一个坏习惯,除非你真的知道你正在做什么以及如何避免内存泄漏等。
答案 1 :(得分:0)
以下是套接字在AS3中的工作方式:
首先创建套接字并添加Listeners:
_socket = new Socket();
// or if secure
_socket = new TLSSocket();
_socket.addEventListener(Event.CONNECT, onConnect);
_socket.addEventListener(ProgressEvent.SOCKET_DATA, onData);
// also add listeners for errors, close etc
_socket.connect(myURL, myPORT);
private function onConnect(event:Event):void{
//connection is live now so do whatever like send something
var request:String = "create a request here";
_socket.writeUTFBytes(request);
_socket.flush();
}
private function onData(event:ProgressEvent):void{
//this gets called EVERY time new data comes over the socket
// the socket will stay connected until you close it (or an error makes it drop)
// here is how you read what came over the socket
while(_socket.bytesAvailable){
theData = _socket.readUTFBytes(_socket.bytesAvailable);
}
// now do something with the data
}
希望能帮助您设置套接字