Bien aquí vengo con ejemplo de AS3.
Lo primero que salta a la vista es que, ahora a las instancias de MovieClip y Botones no se les podrá agregar acciones mediante onRelease, onRollOver, onPress etc etc estos métodos dejaron de existir.
Ahora todo sera mediante eventos, así es del tipo addEventListener.un ejemplo simple para detectar un click del mouse sobre un MovieClip
[as]
import flash.display.Sprite;
var child:Sprite = new Sprite();
child.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler(event:MouseEvent):void {
trace(event)
}
[/as]
No se ve tan complicado cierto. Repito ahora todo sera mediante eventos.
En AS3 existen varios eventos nuevos el que mas me llamo la atención hasta ahora(no he visto todos) es el evento mouseLeave, ¿que hace esto? Este evento se dispara cuando el cursor deja el área del SWF en cuestión.
En el desarrollo de la Versión 3 de computadora.de el detectar que el mouse saliera del entorno del SWF nos dio dolores de cabeza (bueno al tachas.) :), la solución en ese momento fue crear un margen de 5 pixeles alrededor del SWF y estar monitoreando el _xmouse y el _ymouse en fin, con este evento se facilita la vida.
Aquí les dejo ejemplo sencillo de eventos del mouse sobre un MovieClip y la detección de cuando el mouse deja el área del SWF.
[as]
import flash.display.Sprite;
import flash.events.MouseEvent
import flash.utils.trace;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
var size:uint = 50;
var bgColor:uint = 0x000C00;
var box:Sprite;
var child:Sprite = new Sprite();
var isDraging:Boolean
function init(){
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
child.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
child.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
stage.addEventListener(Event.MOUSE_LEAVE, mouseLeaveHandler);
draw(child);
box = Sprite(addChild(child));
box.x = (stage.stageWidth-box.width)/2
box.y = (stage.stageHeight-box.height)/2
}
function mouseLeaveHandler(event:Event):void{
if(isDraging){
box.stopDrag()
isDraging = false
box.x = (stage.stageWidth-box.width)/2
box.y = (stage.stageHeight-box.height)/2
outPut.text = “Saliste del SWF…”
}
}
function mouseDownHandler(event:MouseEvent):void {
var sprite:Sprite = Sprite(event.target);
isDraging = true;
sprite.startDrag()
outPut.text = “”
}
function mouseUpHandler(event:MouseEvent):void {
var sprite:Sprite = Sprite(event.target);
isDraging = false;
sprite.stopDrag()
}
function draw(sprite:Sprite):void {
sprite.graphics.beginFill(bgColor);
sprite.graphics.drawRect(0, 0, size, size);
sprite.graphics.endFill();
}
init()
[/as]
Arrastra el cuadro fuera del Stage y suelta el mouse
No olvides que necesitas el flashPlayer 9 para la correcta visualizacion
Después publico mas cosillas….
Muy buen ejemplo para ir metiendose en AS 3.0, gracias ^^
Vamos, igual que java.
Menuda mierda de as3.0 para hacer una cosa tan sencilla antes necesitavamos escribir 4 lineas y ahora necesitamos 40.000 y es menos intuitivo que antes, el as3.0 hay que quemarlo
Hola!
Muy buena aportacion espero que sigas asi de bien, gracias!!
Buen ejemplo, pero AS3 a la hogeraaaaaaaaaaaaaaaaaaaa !!!!!
AS3 es excelente! Mucho mas si trabajas con un buen framework de base como es pureMVC (que aun estoy aprendiendo pero ya me salvo muchas horas de trabajo). Además AS3 es mucho mas claro y ordenado en todos los aspectos.
Aclaro que soy diseñador y no me costo mucho pasar a esta nueva versión y no volverá a AS2 a menos que sea una necesidad puntual del trabajo (pero usará igual el lenguaje estricto que aprendí a respetar gracias a AS3, algo que finalmente ayudo a optimizar mi trabajo).