Jeg følger instrukserne og har eksempelvis denne kode:
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; } }
Men det kræver, at jeg allerede HAR loadet et MC ind et sted (_root eller MC'er)! Og så er clip's egenskaber IKKE private! clip er nemlig bare et "link" til det MC, some-clip refererer til. Ligesom med arrays! ('etArray = etAndetArray' gør kun etrray til en reference til etAndetArray... hvis etAndetArray ændres, ændres etArray også)
umiddelbart vil jeg mene at; principielt er dit movieclip ikke "ejet" som privat egenskab, men din reference i klassen til det er (du har ikke et movieclip objekt i din klasse, du har kun en reference til et objekt, der fysisk er "andetsteds"). Det betyder at andre klasser der har referencer til samme clip kan manipulere med det, men de kan ikke pille ved din klasses reference til det (eksempelvis overskrive den eller slette den).
Det er muligt at det bliver lidt "kønnere" i AS 3, men det kan jeg ikke rigtigt udtale mig om.
Med en aggregering ("har et") af movieclip *tror* jeg det ikke. Det er ikke muligt at skrive new MovieClip() i AS 2.
Men du kan jo sikkert designe din egen funktionalitet til at forsikre at et clip kun refereres til af et objekt.
mvh mat
Synes godt om
Slettet bruger
04. oktober 2006 - 07:00#6
Jo, jeg kan godt lave new MC-tricket! Jeg kan bare ikke hente et mc fra lib direkte ind i min klasseinstans. Jeg tror bare, jeg laver et tomt mc i mine instanser med nytMc:MovieCLip og så nytMc.attachMovie("BLABLABLA", "physicalMC", 0)
Ville der være noget galt i det?
Synes godt om
Slettet bruger
04. oktober 2006 - 07:02#7
Eks.:
class Bil { private var clip:MovieClip; public function Bil(some_clip:MovieClip) { clip.attachMovie("BLABLABLA", "physicalMC", 0); clip = some_clip; } public function moveTo(x:Number, y:Number):Void { clip._x = x; clip._y = y; } }
Synes godt om
Slettet bruger
04. oktober 2006 - 08:09#8
Nej, vent!
Sådan:
class Bil { private var clip:MovieClip; public function Bil(some_clip:String) { clip.attachMovie(some_clip, "physicalMC", 0); } public function moveTo(x:Number, y:Number):Void { clip._x = x; clip._y = y; } }
"Jo, jeg kan godt lave new MC-tricket!" - Så er det jo sjovt at hjælpen netop noterer: "You do not use a constructor method to create a movie clip[..]", eller at en af de ting der pointeres i relation til AS 3 er at, createEmptyMovieClip og attachMovie er fjernet og erstattet med et mere traditionelt constructor kald....men jeg kan da tage fejl?
"Ville der være noget galt i det?" - Nej det er jo netop det du fik foreslået, det du har med attachMovie er en indlejret reference til et clip der ligger andetsteds "fysisk".
Men i dit eksempel specificerer du ikke hvor du vil attache dit symbol fra library, "clip" er deklareret, men ikke inisialiseret. Et forslag kunne være;
class Bil { private var clip:MovieClip; public function Bil(timeline:MovieClip, some_clip:String) { clip = timeline.attachMovie(some_clip, "physicalMC", 0); } public function moveTo(x:Number, y:Number):Void { clip._x = x; clip._y = y; } }
og så;
var b:Bil = new Bil(this, "link"); b.moveTo(100, 100);
mvh mat
Synes godt om
Slettet bruger
04. oktober 2006 - 10:22#10
Æh... Det var netop det, jeg ville undgå. Så skal MC-instancen, der opgives som argument i "timeline" allerede eksistere andetsteds. Altså bliver værdien af "timeline" en reference til det... Det skete i hvert fald sidst, jeg prøvede. Men igen, ja, jeg kan jo også tage fejl (og det er nok det mest sandsynlige!)
Det er jo pointen, du kan ikke (såvidt jeg ved) lave movieclips uden at knytte dem til en eksisterende tidslinie i AS 2.
Synes godt om
Slettet bruger
04. oktober 2006 - 17:16#12
OOOWW FFS! AS trænger virkelig til den opdatering...
Anyway, gider ikke kaste mig over AS3 BETA før det udkommer "rigtigt".
Så jeg laver alle MC'er i _root. Så har jeg bare lige et problem: Det ville så være smart, at kalde MC'erne det samme som de klasseinstanser, de er knyttet til. Så hvordan finder jeg ud af hvad et instans af en klasse hedder? Ikke som følgende:
class HEJHEJ { function HEJHEJ() { _root.attachMovie(this._name, "ETELLERANDET", 0); } }
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.