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();
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.