ActionScript, ActionScript 3, Flash, Tutorials

Gestire onReleaseOutside con Actionscript 3

Fino ad actionscript 2 pulsanti e movieclip gestivano anche l’evento onReleaseOutside. Con l’avvento di flash 9 (pardon, cs3), il release outside √® stato depennato, non si sa bene per quale motivo, per√≤, per la disperazione di grandi e piccini, quell’evento non c’√® pi√π.

Gestire l’onReleaseOutside in actionscript 3 √® per√≤ pi√π facile di quanto si possa credere.
Scaricatevi questo file >> onReleaseOutside actionscript 3

Dentro ci troverete due classi:
la classe interessante √® “Button.as”.

La classe Button estende la classe nativa di actionscript 3 “SimpleButton” e aggiunge semplicemente il gestore dell’evento release outside.

Con as3 √® possibile rilevare l’ onRelease e l’ onRollOut di un SimpleButton tramite i gestori di evento della classe MouseEvent.
Ma come √® possibile combinare questi due eventi per gestire l’ onReleaseOutside?
La logica è la seguente:

  1. all’ onRollOut del mouse sul pulsante controlla se il mouse √® ancora premuto
  2. se il mouse è ancora premuto aggiungi un event listener sul release del mouse rispetto allo stage

Niente di complesso… diamo un’occhiata al codice:

//gestore del press

internal function onPress(e:MouseEvent):void

{

 trace("press");

}//gestore del release

internal function onRelease(e:MouseEvent):void

{

 trace("release");

}

//gestore del FAMIGERATO release outside

internal function onReleaseOutside(e:MouseEvent):void

{

 trace("release outside");

}

//gestore del rollout

internal function onRollOut(e:MouseEvent):void

{

 trace("rollout");

 if(e.buttonDown){

//QUI AGGIUNGO L'EVENTO PER GESTIRE IL RELEASE OUTSIDE

 	e.target.stage.addEventListener(MouseEvent.MOUSE_UP, onReleaseOutside);

 }

}

//gestore del rollover

internal function onRollOver(e:MouseEvent):void

{

 trace("rollover");

//al rollover del mouse sul pulsante elimino il releaseoutside

 e.target.stage.removeEventListener(MouseEvent.MOUSE_UP, onReleaseOutside);

}

Nel file zip allegato trovate il resto della classe Button e una classe flashfuckit (bel nome eh? :D) per visualizzare l’esempio.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s