代码之家  ›  专栏  ›  技术社区  ›  Gulvan

使用长时间循环时,Haxe+OpenFL应用程序冻结

  •  0
  • Gulvan  · 技术社区  · 8 年前

    所以,问题就在标题中。当我进行长时间循环时,无论目标平台如何,应用程序都会冻结。 第三方循环也会导致冻结:

    var s:Socket = new Socket();
    var data:String; 
    s.connect(new Host("localhost"), 5000);
    s.waitForRead();
    

    1 回复  |  直到 8 年前
        1
  •  2
  •   bsinky    8 年前

    openfl.net.Socket 可能就是你想要的-它延伸了 openfl.events.EventDispatcher ,从而利用基于事件的API来处理侦听/接收数据等,因此可以使用它 不堵塞主线

    因此,如何设置其中一个的示例可能看起来像这样(从 an OpenFL forum post )

    socket.addEventListener(Event.CONNECT, onConnect);
    socket.addEventListener(Event.CLOSE, onClose);
    socket.addEventListener(IOErrorEvent.IO_ERROR, onError);
    socket.addEventListener(ProgressEvent.SOCKET_DATA, onResponse);
    socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecError);
    trace("Connecting to server.");
    socket.connect("52.36.8.250", 443);
    

    有一件事需要注意,似乎是 addEventListener listener 参数为 Dynamic -> Void ,因此使用传递给回调的值可能有点棘手。