PDA

Volledige versie bekijken : Functie die MouseEvent.CLICK afhandelt opnieuw oproepen?


arckodrazen
%Europe/Berlin %663 %2007, 16:55
Greetings,

Wederom een vraagje van ivm coding style.

Ik heb volgende code (je moet de code niet indepth bekijken :p):


// Hide error or warning message
error_mc.addEventListener(MouseEvent.CLICK, handleErrorClick);
error_mc.buttonMode = true;

function handleErrorClick(e:MouseEvent):void {
// Reset error fields
error_mc.errorttl_txt.text = "";
error_mc.errormsg_txt.text = "";

// Hide error message
error_mc.visible = false;

// Release blocking of buttons
switchBlocker(false);
};


Mijn vraag: wat moet ik doen als ik de functie handleErrorClick een extra keer wil oproepen? Bij mij: wanneer het .swf'je start moet deze functie opgeroepen worden maar ze hangt dus niet aan een knop. Zoals je wel zal weten verwacht de functie een event-parameter die je moet meegeven.

Alvast bedankt
Bart

TheDutch
%Europe/Berlin %692 %2007, 17:37
Heel eenvoudig, zo dus:

handleErrorClick(new MouseEvent());

arckodrazen
%Europe/Berlin %703 %2007, 17:53
Lichte correctie:

handleErrorClick(new MouseEvent(MouseEvent.CLICK));

Omdat MouseEvent construct minstens 1 parameter verplicht moet hebben.
Bedankt voor je reply.

AD

Sjeiti
%Europe/Berlin %709 %2007, 18:02
je kan ook dit doen:function handleErrorClick(e:MouseEvent=null):void {op die manier hoef je niet per se een parameter mee te geven

TheDutch
%Europe/Berlin %716 %2007, 18:12
Omdat MouseEvent construct minstens 1 parameter verplicht moet hebben.
Je hebt helemaal gelijk, glad vergeten :D.

@Sjeiti: Dat is ook een goede oplossing, maar in andere gevallen dan deze - wanneer je MouseEvent elementen verwacht - wat foutgevoeliger :).

Sjeiti
%Europe/Berlin %789 %2007, 19:56
Dat is ook zo... ik gebruik ook altijd gewoon e:Event=null ook al is het eigenlijk een MouseEvent. Het stamt er immers vanaf.

TheDutch
%Europe/Berlin %834 %2007, 21:01
Dat is niet slim aangezien je daardoor geen volledige code-completion meer hebt, je onnodig moet casten wanneer je elementen wilt benaderen die in een subclass zitten van Event, en het zoals reeds gezegd foutgevoeliger is en minder flexibel :).

Sowieso zou ik het zo doen:

private function mouseEventHandler(event:MouseEvent):void
{
switch(event.type)
{
case MouseEvent.CLICK:
this.doSomething();
break;
}
}

private function doSomething():void
{
// code
}

Op deze manier kan je doSomething() altijd aanroepen zonder dat je met de mouse event handler moet gaan stoeien. Laat elke functie zijn werk doen waarvoor het bedoeld is.

arckodrazen
%Europe/Berlin %863 %2007, 21:43
Een vraag die hierbij aansluit, je kan dus callback functies aanroepen, maar wat als je nu een parameter wenst mee te geven?

bla_mc.addEventListener("onRelease", functieke)

Ik wil met die aanroep een parameter meegeven met bvb een numerieke waarde in.

TheDutch
%Europe/Berlin %874 %2007, 21:59
arckodrazen, precies dezelfde vraag is een paar dagen terug ook al gesteld. Zie hier: http://www.flashfocus.nl/forum/showthread.php?t=31126

Sjeiti
%Europe/Berlin %937 %2007, 23:29
ach ja... zoals moppersmurf zou zeggen: "Ik haat autocompletion"
maar op die andere punten heb je gelijk