[as3] buttons door function allemaal MouseEvents geven

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • edwinistrator
  • Registratie: December 2000
  • Laatst online: 23-03-2022
Ik heb deze functie gevonden die dus een movieclip mouseEvents meegeeft.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
import flash.display.*;
import flash.events.*;
function myNav ($e:MouseEvent):void {
    var myObj:MovieClip = $e.currentTarget as MovieClip;
    if ($e.type == "mouseOver") {
        trace ("over");
    }
    if ($e.type == "mouseDown") {
        trace ($e.currentTarget.name);
    }
    if ($e.type == "mouseOut") {
    }
}

Er staan meerdere movieClips op de stage met instance name btn0, btn1 en btn2. Onderstaande werkt dus niet, maar hoe zou ik de functie moeten aanroepen zodat movieclip de mouseEvents krijgt? (Ik denk nog teveel in AS2 volgens mij...)
code:
1
myNav(btn0);

Acties:
  • 0 Henk 'm!

  • LB Back
  • Registratie: November 2004
  • Laatst online: 03-06 11:07
Je moet eerst de currentTarget naar een mc verwijzen.

Acties:
  • 0 Henk 'm!

  • Spiked
  • Registratie: Mei 2008
  • Laatst online: 24-07 14:50
$e? De manual zegt hierover:
The dollar sign is intended for use only in mechanically generated code. Dit kan rare effecten hebben op je programma.

Acties:
  • 0 Henk 'm!

  • Tsjilp
  • Registratie: November 2002
  • Niet online

Tsjilp

RS[I]ds

mc0.addEventListener(MouseEvent.CLICK, mouseHandler), en dat ook voor MouseOver en MouseOut, en voor al je MC's (eventueel in een for loop).

Beter is om je buttons een class te laten extenden, waarin je in de constructor deze events toekent.

Raar... Is zo gek nog niet


Acties:
  • 0 Henk 'm!

  • edwinistrator
  • Registratie: December 2000
  • Laatst online: 23-03-2022
Tsjilp schreef op dinsdag 02 februari 2010 @ 18:07:
...
Beter is om je buttons een class te laten extenden, waarin je in de constructor deze events toekent.
ja ik zocht inderdaad iets handigs, herbruikbaars.
Dus opgelost met het volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package {
    import flash.display.MovieClip;
    import flash.events.*;
    class ClickableMovieClip extends MovieClip {
        function ClickableMovieClip():void {
            this.buttonMode = true;
            this.useHandCursor = true;  
            this.addEventListener(MouseEvent.ROLL_OVER, onRollOverHandler);
            this.addEventListener(MouseEvent.MOUSE_UP, onReleaseHandler);
        }
        function onRollOverHandler(myEvent:MouseEvent) {
            trace("onRollOver");
        }
        function onReleaseHandler(myEvent:MouseEvent) {
            trace("onRelease");
            trace(this.name)
        }
    }
}

Acties:
  • 0 Henk 'm!

  • Alfredo
  • Registratie: Maart 2007
  • Laatst online: 31-07 19:40
Als je buttonMode op true zet, staat useHandCursor automatisch ook op true. Dat hoef je niet nog eens te declareren.
Pagina: 1