Avatar billede Slettet bruger
30. september 2006 - 22:01 Der er 20 kommentarer og
1 løsning

Øhh, Barklund?

Hej igen!

Der er noget ved et svar, du har givet mig, der undrer mig...
Se http://www.eksperten.dk/spm/733197.

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å)

Hvordan kan dette undgås?!
Avatar billede maqhem Nybegynder
30. september 2006 - 22:06 #1
Nu hedder jeg ikke Morten Barklund, men kan man ikke bare indsætte en attachMovie() lige før din clip = some_clip;?
Avatar billede Slettet bruger
01. oktober 2006 - 07:59 #2
Jo, Wahlqvist.
Men så ligger MovieClip'et i _root'en :S
Det er det, jeg mener med, at det ikke er private...
Avatar billede mat Nybegynder
02. oktober 2006 - 23:31 #3
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.

mvh mat
Avatar billede Slettet bruger
03. oktober 2006 - 09:58 #4
Så det kan ikke gøres på anden måde i AS2?!
Avatar billede mat Nybegynder
03. oktober 2006 - 10:42 #5
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
Avatar billede 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?
Avatar billede 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;
    }
}
Avatar billede 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;
    }
}
Avatar billede mat Nybegynder
04. oktober 2006 - 09:26 #9
"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
Avatar billede 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!)
Avatar billede mat Nybegynder
04. oktober 2006 - 11:29 #11
Det er jo pointen, du kan ikke (såvidt jeg ved) lave movieclips uden at knytte dem til en eksisterende tidslinie i AS 2.
Avatar billede 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);
    }
}

- Det har jeg nemlig prøvet uden held ;)

Men hvordan så?
Avatar billede mat Nybegynder
04. oktober 2006 - 18:42 #13
Lav et felt i din klasse der holder på et navn?

class HEJHEJ {
private var navn:String = "HEJHEJ";
    function HEJHEJ() {
        _root.attachMovie(navn, "ETELLERANDET", 0);
    }
}

mvh mat
Avatar billede Slettet bruger
04. oktober 2006 - 19:19 #14
Jo, der har jeg overvejet.
Men er det ikke en egenskab eller motode til at finde en klasseinstans' navn???
Avatar billede Slettet bruger
04. oktober 2006 - 19:19 #15
*men er der
Avatar billede Slettet bruger
04. oktober 2006 - 19:20 #16
LOL! Byt lige om på der og det...
Sådan:

Jo, deT har jeg overvejet.
Men er deR ikke en egenskab eller motode til at finde en klasseinstans' navn???
Avatar billede mat Nybegynder
04. oktober 2006 - 23:09 #17
Det er vel klassens navn du vil finde og ikke et instans? Men jeg ved det faktisk ikke?
Avatar billede Slettet bruger
05. oktober 2006 - 09:03 #18
Nej, jeg vil finde instansens navn.
Men jeg vil egentlig også gerne vide, hvordan jeg finder klassens navn...
Avatar billede mat Nybegynder
05. oktober 2006 - 12:05 #19
ok, men det ved jeg ikke, desværre.
Avatar billede Slettet bruger
05. oktober 2006 - 17:32 #20
Nå. Okay, så...
Bare smid et svar alligevel.
Avatar billede mat Nybegynder
05. oktober 2006 - 17:49 #21
det iorden
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