Knap som forsvinder?

Forums: 

Fra Linselus

 

Jeg skal have lavet en knap som forsvinder efter man har klikket på den. Konceptet er at der er et billede underneden en række af billeder, som kommer til syne efter at man har "klikket knapperne væk".

Ligenu har jeg et script som dragger og dropper, men jeg vil hellere have at den skal blive usynlig...

Hvordan ser en kode ud til sådan en knap i AS 3.0?

 

Hej Linselus.

Du kan gøre det på flere måder, der er mere eller mindre fikse. Jeg kan starte med at vise den mest oplagte.

Forestil dig, at du har dækket et område med knapper. Hvergang der klikkes på én af disse knapper skal den fjernes og vis det billede, der er nedenfor. Koden til knapperne kunne så se således ud:

function removeMe(e:MouseEvent):void
{
var dest:MovieClip = e.target as MovieClip;
dest.parent.removeChild(dest);
dest.removeEventListener(MouseEvent.CLICK, removeMe);
dest = null;
}

knap1.addEventListener(MouseEvent.CLICK, removeMe);
knap2.addEventListener(MouseEvent.CLICK, removeMe);
knap3.addEventListener(MouseEvent.CLICK, removeMe);

funktionen removeMe() kan knyttes til et hvert movieclip, som du vil have fjernet. Den første linje overfører en reference til det objekt, der blev klikket på til variablen dest. Denne variabel vil jeg bruge i resten af funktionen, da selve event-objektet er af typen "read-only".

Næste linje fjerner knappen fra scenen ved først at pege på det forældreobjektet og kalde removeChild() på dette. removeChild() vil altid kigge på de objekter, som det indeholder, derfor kan du ikke bare kalde metoden hvorfra det passer dig.

De to sidste linjer i funktionen er ikke strengt nødvendige i mindre opgaver, men kan blive et problem senere hen. Her forholder du dig til "Garbage Collection" og gør objektet klar til at blive "smidt i skraldespanden". Det kan det kun få lov til når alle referencer til movie clip'et er væk. Først fjernes event listeneren og derefter sættes selve objektet til null.

Udenfor funktionen er er tre knapper, der får tilføjet listeneren og kalder den ved klik med musen.

Du kan med fordel bygge denne funktion ind i en klasse, så knappen kan det fra starten af. Skriv lige igen, hvis det var det du havde i tankerne.

Held og lykke