20. oktober 2005 - 20:31Der er
7 kommentarer og 1 løsning
Funktion i funktion
Hej Flashere,
Jeg har lavet mig en lille class til data-kommunikations styring. I den er der en funktion der forbinder til min XMLSocket, eksempelvis: class Socket{ public function doConnect():Boolean{ var Socket:XMLSocket = new XMLSocket(); Socket.onConnect = ??????????? Socket.connect(ip, port); } }
Her er så problemet (Markeret med "???????") at jeg gerne vil have denne event ud til når jeg bruger min class. Eksempelvis:
var Data:Socket = new Socket(); Data.onConnect = ????? Data.doConnect();
Klassisk brug af delegate - dog vil du nok gerne have XMLSocket-instansen som egenskab på klassen:
class Socket { public var onConnect:Function; private var socket:XMLSocket public function doConnect(ip:String, port:Number):Boolean{ socket:XMLSocket = new XMLSocket(); socket.onConnect = mx.utils.Delegate.create(this, onConnect); return socket.connect(ip, port); } }
Hej! Tusind tak for hjælpen, men min kode accepterer det ikke umiddelbart. Som du kan se har jeg en sådan class: class Socket { public var conStatus:Function; private var _host : String = "#.#.#.#"; private var _port : Number = 1337; private var _socket : XMLSocket;
public function Socket () { _socket = new XMLSocket (); _socket.onConnect = mx.utils.Delegate.create(this, conStatus); } public function doConnect () : Boolean { _socket.connect (_host, _port); } }
Og så har jeg en swf med denne kode:
stop(); var Socket:Socket = new Socket(); Socket.conStatus = function(e){ if(e){ trace("Ping"); } else { trace("Pong"); } } Socket.doConnect();
Altså, det burde virke... Prøv næste skridt med en:
class Socket { public var conStatus:Function; private var testConStatus:Function; private var _host : String = "#.#.#.#"; private var _port : Number = 1337; private var _socket : XMLSocket;
public function Socket () { _socket = new XMLSocket (); _socket.onConnect = mx.utils.Delegate.create(this, testConStatus); testConStatus = function(s:Boolean):Void { trace("this is "+this); trace("s is "+s); } } public function doConnect () : Boolean { _socket.connect (_host, _port); } public function toString():String { return "Socket-instance: "+_host+":"+_port; } }
Så kan du måske komme lidt tættere på i din debugging :)
Well, tak for point, men jeg er som sagt stadig villig til at løse problemet i fællesskab :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.