Avatar billede ravnborg Nybegynder
14. juli 2008 - 01:19 Der er 13 kommentarer og
1 løsning

Knap's navn som variabel

Hvordan laver man følgende, når musen rører en knap bliver knappens navn overført til en variabel.

Jeg har forsøgt mig med denne kode, men den virker ikke.

on (rollOver, dragOver) {
    by = this._name;
}
Avatar billede maqhem Nybegynder
14. juli 2008 - 01:23 #1
on (rollOver, dragOver) {
    var by:String = this._name;
    trace(by);
}

Skriver den ikke rigtigt nok det, den skal?
Avatar billede ravnborg Nybegynder
14. juli 2008 - 02:25 #2
Det hjalp ikke. Den skriver stadig ingenting.

Hvis jeg indsætter by navnet direkte virker det.

on (rollOver, dragOver) {
    var by:String = "københavn";
    trace(by);
}
Avatar billede maqhem Nybegynder
14. juli 2008 - 10:57 #3
Så er det fordi dit movieclip ikke har noget navn, eller fordi du koder ActionScript 3.0 :)

Prøv at klikke på movieclippet, og så i stedet for at gå ind i Actions, så gå ind i Properties og tjek instance name. Dét felt skulle gerne stå tomt, for det er det, den henter og tracer, og når den ikke tracer noget, ja så må feltet jo være tomt.
Hvis du koder ActionScript 3.0, så ændr _name til name, for underscores foran properties er blevet fjernet.
Avatar billede maqhem Nybegynder
14. juli 2008 - 11:02 #4
... Flash 9 har dog den feature, at det selv uddelegerer instance names til de instanser, der befinder sig på scenen uden et sådan. Flash 8 og nedefter vil trace en tom linje, mens Flash 9 vil trance "instanceX", hvor X'et er et tal, der fortæller hvilket nummer i rækkefølgen af movieclips uden navne, den er. Hvis du på scenen har to movieclips og et movieclip inde i ét af dem, vil de to på scenen få navnene "instance1" og "instance2", mens movieclippet inde i et af movieclipsne vil få navnet "instance3". Sådan mener jeg, det er.
Avatar billede ravnborg Nybegynder
14. juli 2008 - 14:49 #5
Jeg bruger Flash 7.0
Jeg har ændret koden til:

on (rollOver, dragOver) {
    by = this.name;
    trace(by);
}

I instance name har jeg indtastet "København"
I det tekst felt der viser variablen by står der nu _level0.by.
Når jeg flytter musen hen over min buttom skriver den undefined i tekst feltet.
Avatar billede maqhem Nybegynder
14. juli 2008 - 14:52 #6
Jeg sagde "hvis du koder ActionScript 3.0", og det gør man ikke i Flash 7. Det skal altså være _name stadigvæk.
Avatar billede ravnborg Nybegynder
16. juli 2008 - 15:22 #7
Jeg kan stadig ikke få det til at virke. Det er garenteret bare et eller andet simpelt jeg ikke har fået med ;-)

Jeg har oploadet filen her:  www.galapagos.dk/test.swf

Jeg håber du vil kikke på den. Jeg har hævet til 60 point
Avatar billede ravnborg Nybegynder
16. juli 2008 - 16:11 #8
http://www.galapagos.dk/test.fla

Det er selvfølgelig en fla fil ikke swf.
Avatar billede maqhem Nybegynder
16. juli 2008 - 19:12 #9
Jeg har fundet fejlen, og det var en, jeg aldrig havde gættet mig frem til, for din instans er jo en knap og ikke et movieclip. Det kan Flash åbenbart ikke lide - én af årsagerne til, jeg aldrig arbejder med deciderede buttons. Gør som følger:

Tryk på knappen og gå ind i properties. Hvor der står Button klikker du og vælger i stedet MovieClip. Den advarer mod, at den vil slette dine actions, og du siger Ok til det.
Du skal have lavet en kode, der får det til at fungere som en knap. Så her er nogle fact:

* Dine frames vil ikke længere have de funktioner, som en knap har. Nu er de bare almindelige frames.
* Der er ikke nogen events, der automatisk affyres, som der er med en knap.

Det første problem rodes der bod på ved på din action på dit movieclip at skrive denne her kode:

---
onClipEvent(load) {
    stop();
}
on(rollOver, dragOver) {
    gotoAndStop(2);
    var by:String = this._name;
    trace(by);
}
on(rollOut, dragOut) {
    gotoAndStop(1);
}
on(press) {
    gotoAndStop(3);
}
---

Og eftersom dine frames ikke længere har de funktioner, de plejer at have, så slet framen Hit, for den er ubrugelig.
Avatar billede maqhem Nybegynder
16. juli 2008 - 19:13 #10
Rettelse: både første og andet problem rodes der bod på med koden.
Avatar billede ravnborg Nybegynder
17. juli 2008 - 12:18 #11
Så ser det næsten ud til at virke, den laver den rigtige Trace, men den skriver ikke variablen by i tekst feltet (den orange firkant)

Hvad er der galt der?
Avatar billede maqhem Nybegynder
17. juli 2008 - 12:38 #12
Altså du har ingen kode overhovedet til at klare det, så det er klart nok, der ikke sker noget. Du kan fange tekstfeltets tekst med _root.bynavn.text:

---
onClipEvent(load) {
    stop();
    this.by = this._name;
}
on(rollOver, dragOver) {
    gotoAndStop(2);
}
on(rollOut, dragOut) {
    gotoAndStop(1);
}
on(press) {
    gotoAndStop(3);
    _root.bynavn.text = by;
}
---

Noget i den stil?
Avatar billede ravnborg Nybegynder
22. juli 2008 - 19:09 #13
Mange tak
opret bare et svar.

mvh
Ravnborg
Avatar billede maqhem Nybegynder
22. juli 2008 - 19:23 #14
Svar.
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