Avatar billede Slettet bruger
19. september 2006 - 09:25 Der er 16 kommentarer og
2 løsninger

Ekstra parametre til brugerdefinerede MC-klasser

Hej eksperter!

Jeg har her to filer:

---

// test.fla
// LIBRARY: BIL:  AS2 class: BIL,  identifier: BIL
_root.attachMovie("BIL", "minBil", _root.getNextHighestDepth());

// BIL.fla
class BIL extends MovieClip {
   
    // Constructor
    function BIL(P_MESSAGE:String) {
        trace(P_MESSAGE);
    }
   
}

---

Hvordan får jeg så tilføjet argumenter til udtrykket
_root.attachMovie("BIL", "minBil", _root.getNextHighestDepth())
?
Avatar billede barklund Nybegynder
19. september 2006 - 09:33 #1
Det kan man ikke. Du kan lave en init-funktion, hvilke de fleste oftest gør:

// BIL.fla
class BIL extends MovieClip {
 
    // Constructor
    function BIL() {
    }
    function init(P_MESSAGE:String):Void {
        trace(P_MESSAGE);
    }
 
}

...
_root.attachMovie("BIL", "minBil", _root.getNextHighestDepth())
minBil.init("Min besked");
Avatar billede Slettet bruger
19. september 2006 - 14:58 #2
Hm. Når du siger det, tror jeg det gerne...
Men er det ikke lidt fjollet, at man ikke kan lave en rigtig constructor???
Bare smid et svar.
Avatar billede barklund Nybegynder
19. september 2006 - 15:20 #3
Det er en del af prisen ved at nedarve fra movieclip :)
Avatar billede Slettet bruger
19. september 2006 - 21:11 #4
Tja... Nå, det bliver forhåbentlig lavet om i AS3.
Og så lige...
"Det er en del af prisen ved at nedarve fra movieclip :)"
Er der andre metoder til at binde et objekt på scenen til en klasse?
Du skal stadig bare smide et svar ;)
Avatar billede mat Nybegynder
19. september 2006 - 21:44 #5
Du kan bare give din klasse en reference til et movieclip.

mvh mat
Avatar billede mat Nybegynder
19. september 2006 - 21:45 #6
(eller et andet objekt for den sags skyld)
Avatar billede Slettet bruger
19. september 2006 - 21:54 #7
Hvordan?
Hvorfor skriver I altid indforstået, når I ved, man ikke fatter, hvad I siger?!
Avatar billede Slettet bruger
19. september 2006 - 21:54 #8
Dumme, dumme eksperter ^^
Avatar billede mat Nybegynder
19. september 2006 - 22:39 #9
class MyClass {
    private var clip:MovieClip;
   
    public function MyClass(some_clip:MovieClip) {
   
        clip = some_clip;
       
    }
 
}

Og så kan du eksempelvis instanciere med;

var mc:MyClass = new MyClass(this);

..eller et andet movieclip instance..
Avatar billede barklund Nybegynder
20. september 2006 - 09:41 #10
Forskellen mellem de to måder skal ses som en dybere forståelse af OOP. "Separation of concerns" og andet. Hvis jeg har en klasse:

class Bil {
    private var clip:MovieClip;
    public function Bil(some_clip:MovieClip) {
        clip = some_clip;
    }
    public function moveTo(x:Number, y:Number):Void {
        clip._x = x;
        clip._y = y;
    }
}

Så kan jeg lave en bil og flytte den. Men hvis jeg istedet laver:


class Bil extends MovieClip {
}

Så kan jeg lave en bil, flytte den (direkte via _x og _y), skalere den, dragge den, swappe den dybde, ... Altså jeg arver jo alle metoder og egenskaber fra movieclip, og det giver jo kun mening, hvis alle de ting skal kunne gøres ved min bil. Hvis min bil ikke må kunne skaleres, skifte farve, dragges og så videre, så er MovieClip-nedarvning ikke den rigtige vej at gå. Så bør man lave en klasse som ovenstående, der "dekorerer" et movieclip, og altså har et movieclip lokalt inden i som en privat egenskab og kun kan tilgås af klassen selv. Så kan andre klasser kun gøre de ting ved vores bil, som vi ønsker, at de skal gøre.

Håber du forstår :)

--
Morten Barklund
Avatar billede Slettet bruger
20. september 2006 - 18:11 #11
Ja. Nu forstår jeg det :D

Og I skal STADIG STADIG bare smide et svar... Nu bliver jeg snart gal >:(
Avatar billede Slettet bruger
20. september 2006 - 18:11 #12
^^
Avatar billede barklund Nybegynder
20. september 2006 - 18:55 #13
Moki :)
Avatar billede Slettet bruger
21. september 2006 - 10:03 #14
Hvaaa...
Mat, vil di ikke have nogle point?
Avatar billede Slettet bruger
21. september 2006 - 10:03 #15
*du
Avatar billede mat Nybegynder
21. september 2006 - 10:48 #16
tjoh, men det var jo Barklund der lavede arbejdet? :)
Avatar billede Slettet bruger
23. september 2006 - 22:20 #17
Tja, jeg er i mit socialistiske lune :)
Avatar billede barklund Nybegynder
25. september 2006 - 10:36 #18
Tarker :)
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