Avatar billede jakwag Nybegynder
15. december 2006 - 14:27 Der er 11 kommentarer og
1 løsning

Delegate problem

Hej

Jeg har en class hvor jeg bruger delegate. Jeg kan ikke helt få den til at virke.

import mx.utils.Delegate;
class Harmonika extends MovieClip
{
    function Harmonika()
    {
        init();
    }
    private function init():Void
    {
        var itemHead:MovieClip = this.attachMovie("harmonikaItemHead", "itemHead", 1);
        itemHead.onRelease = Delegate.create(this, itemHeadOnRelease);
    }
    function itemHeadOnRelease(eventObj:Object):Void
    {
        trace(eventObj.target);// returner gerne itemHead
    }
}

Den returnere undefined når jeg trace eventObj.target. Hvorfor?

Jakob
Avatar billede mat Nybegynder
15. december 2006 - 17:20 #1
Det kan godt være det bare er mig, men Delegate.create bruges vel egentlig bare til at redelegere scope, jeg er ikke sikker på at den sender et objekt med en attribut, der peger på det oprindelige scope?

Det ligner lidt en kombination af en EventDispatching ting og Delegate du har gang i?

(men som sagt, kan det bare være min indsigt i Delegate, der ikke er dyb nok?)

mvh mat
Avatar billede thulstrup Nybegynder
15. december 2006 - 18:12 #2
Mat> du har helt ret.

Jakwag > Skriv istedet:

import mx.utils.Delegate;
class Harmonika extends MovieClip
{
    function Harmonika()
    {
        init();
    }
    private function init():Void
    {
        var itemHead:MovieClip = this.attachMovie("harmonikaItemHead", "itemHead", 1);
        itemHead.onRelease = Delegate.create(itemHead, itemHeadOnRelease);
    }
    function itemHeadOnRelease():Void
    {
        trace(this);// returner itemHead
    }
}
Avatar billede mat Nybegynder
15. december 2006 - 19:53 #3
Hvis du delegerer scope ud er "this" vel klasse scope, og dermed en reference til objektet selv, fremfor "itemHead"?

Det er vel netop det der er pointen med Delegate, at få "this" til at pege i klassens scope og ikke som i indlejrede funktioner, hvor "this" er røget ind i et aggregeret objekts scope?

..eller?

mvh mat
Avatar billede thulstrup Nybegynder
15. december 2006 - 21:34 #4
Right again - Den havde jeg ikke lige gennemtænkt :o)

Så sådan her da:
import mx.utils.Delegate;
class Harmonika extends MovieClip
{
    function Harmonika()
    {
        init();
    }
    private function init():Void
    {
        var itemHead:MovieClip = this.attachMovie("harmonikaItemHead", "itemHead", 1);
        var del = itemHead.onRelease = Delegate.create(this, itemHeadOnRelease);
        del.item = itemHead;
    }
    function itemHeadOnRelease():Void
    {
        trace(arguments.caller.item);// returner itemHead
    }
}
Avatar billede jakwag Nybegynder
17. december 2006 - 19:40 #5
tak for svarende begge to. Ja, det kan godt være jeg nogen gange blander tingene lidt sammen. Jeg leder for tiden efter en rigtig hardcore as2 bog, men jeg synes det er svært at finde en der ikke starter med at forklare hvad en variabel er... Kender i nogle gode som går godt i dybden?

Thulstrup det virker jo som det skal, desværre er jeg ikke helt sikker på hvorfor? Kan du forklare?

Du kan bare lægge et svar så kommer der point.

: ) Jakob
Avatar billede mat Nybegynder
17. december 2006 - 20:02 #6
Den eneste AS 2 bog jeg har læst er Essential Actionscript 2.0 ( http://www.amazon.com/Essential-ActionScript-2-0-Colin-Moock/dp/0596006527 ). Den er ganske udemærket :)

Iøvrigt kan du kigge her http://www.calvinly.com/weblog/000130.html hvor netop problemet med parametre og Delegate diskuteres, og der linkes til et alternativ til Delegate, der løser problemstillingen.

mvh mat
Avatar billede jakwag Nybegynder
18. december 2006 - 09:48 #7
mat > Proxy classen er jo lige hvad jeg skal bruge! :D
Avatar billede mat Nybegynder
18. december 2006 - 10:34 #8
søg og du skal finde....eller noget.. :)
Avatar billede thulstrup Nybegynder
18. december 2006 - 22:49 #9
Her er et svar, men mat bør også have del i pointhøsten.
Avatar billede jakwag Nybegynder
19. december 2006 - 22:10 #10
Helt enig. Mat, læg et svar.

Og tak igen, Proxy classen er blevet min nye bedste ven!
Avatar billede jakwag Nybegynder
10. januar 2007 - 10:19 #11
nå... sorry mat. det var hvad min tålmodighed rækkede til. Håber du klarer den ellers må du brokke dig.
Avatar billede mat Nybegynder
10. januar 2007 - 21:56 #12
det er skam helt ok
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester