0

假设我们有一个函数和一个在其中声明的套接字。我们呼吁connect它。现在我们调用addEventListener连接。

理论上,我们可以设置提供给 eventDispatcher 的函数来更改类变量,而最初调用的函数addEventListener可以锁定在该变量上(类似while(!class_instancce.is_connected))。

我的问题是:传递给addEventListener闪存运行时调用的函数会等待“等待”的函数结束吗?

4

2 回答 2

0

只要您正在侦听的任何事件被您正在侦听的实例分派,传递给 addEventListener 的函数就会运行(如果有多个侦听器,这将基于事件优先级。

在我看来,您想尝试使套接字连接同步发生。你不能用套接字来做到这一点,尽管在 AS 中有一些你可以强制同步的东西。

老实说,您应该尽早适应事件驱动的架构,因为它使您可以使用各种 OOP 的可爱之处。

如果您有约束力和决心,您可以使用匿名函数。你可以自己研究一下。我认为这是一个坏习惯,除非你真的知道自己在做什么以及如何避免内存泄漏等。

于 2012-11-03T03:52:11.687 回答
0

下面是套接字在 AS3 中的工作方式:

首先创建套接字并添加监听器:

_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
}

希望这可以帮助您设置套接字

于 2012-11-03T15:15:43.867 回答