• Skip to primary navigation
  • Skip to main content
  • Skip to footer

Enrique Chavez

Professional WordPress Development

  • Home
  • Blog
  • Contact Me
  • Hire Me

[AS3] FrameRate, Eventos y agregar elementos al Stage

ActionScript, AS3 · Jul 8, 2006

Bien en un post anterior puse un ejemplo de AS3 pero no esta explicado ni nada.

En esta ocasión tratare de explicar lo mas detalladamente posible el código. Como sabrán los eventos de botones y movieClips como “onRelease”, “onPress”, etc ya no son soportados en la nueva versión de ActionScript ahora todo sera gestionado por medio de EventsListenners.

Otra cosa que veremos es como crear Elementos simples (cuadro, circulo) y ponerlos en el stage. La función AttachMovie dejo de existir en AS3, ahora para mostrar un elemento en el stage se debe de usar addChild con este método se pude agregar un elemento de la librerí­a o un objeto creado por código.

Ademas de que veremos que ahora es posible cambiar el FrameRate en tiempo de ejecución. esto habí­a sido pedido a gritos por varios. =)

Lo primero sera agregar elementos al Stage. ya que sin ellos no se puede hacer nada jeje.

Flash cuenta con un API de dibujo que nos facilita la vida, los métodos disponibles son

  • drawCircle(x:Number, y:Number, radius:Number):void
  • drawEllipse(x:Number, y:Number, width:Number, height:Number):void
  • drawRect(x:Number, y:Number, width:Number, height:Number):void
  • drawRoundRect(x:Number, y:Number, width:Number, height:Number, ellipseWidth:Number, ellipseHeight:Number):void

simple no?, un ejemplo sencillo.

[as]
import flash.display.Sprite;
var ball : Sprite = new Sprite ();
ball.graphics.beginFill(0x0099FF)
ball.graphics.drawCircle(50,50,25)
ball.graphics.endFill()
addChild(ball)
[/as]

Lo primero que debemos hacer es importar los paquetes que vamos a utilizar en este caso flash.display.Sprite para poder crear una nueva instancia

En la ultima linea después de crear nuestro circulo debemos agregar el objeto al Stage esto se debe de hacer siempre ya que de otra forma no se vera en nuestro SWF

Otra de las cosas que cambiaron es el modo de los eventos en los objetos en el Stage. Los que usaron los componentes AS2 de Flash no tendrán problema ya que es exactamente lo mismo, los eventos se asignan por media de la función addEventListener

[as]
import flash.display.Sprite;
import flash.events.*
var ball : Sprite = new Sprite ();
ball.graphics.beginFill(0x0099FF)
ball.graphics.drawCircle(50,50,25)
ball.graphics.endFill()
addChild(ball)
ball.addEventListener(MouseEvent.MOUSE_DOWN, handler)
function handler(event:Event){
trace(event)
}
[/as]

Ya no es necesario crear un listener y después asignarlo los eventos, ahora solo agregas el tipo de evento al objeto y la función que se ejecutara cuando se lleve a cabo dicho evento, La función recibe un parámetro del tipo Event, pero podemos acceder a sus propiedades como si fuera un objeto

Las propiedades que recibimos son:

[MouseEvent
type=”mouseDown”
bubbles=true
cancelable=false
eventPhase=2
localX=66
localY=57
stageX=66
stageY=57
relatedObject=null
ctrlKey=false
altKey=false
shiftKey=false delta=0]

Algo que me llamo la atención y me agrado fue que el evento detecta si el usuario esta o no, presionando las teclas Ctrl Alt o Shift es algo muy útil. adiós a los KeyListenners =P

bien, así­ como los eventos del mouse para con los objetos han cambiado, también lo hicieron algunos métodos mas. por ejemplo el onEnterFrame.

Ahora para invocar un enterFrame debemos agregarle un EventListener al Objeto en cuestión por ejemplo:

[as]
import flash.display.Sprite;
import flash.events.*
var ball : Sprite = new Sprite ();
var count:Number = 0
ball.graphics.beginFill(0x0099FF)
ball.graphics.drawCircle(50,50,25)
ball.graphics.endFill()
addChild(ball)
ball.addEventListener (Event.ENTER_FRAME, handlerEnterFrame);
function handlerEnterFrame(event:Event)
{
if(count < 15) { trace(event) ball.x += 5 count++ }else { ball.removeEventListener("enterFrame", handlerEnterFrame) } } [/as] Por ultimo, Ahora se puede cambiar el valor del frameRate en tiempo de ejecución algo que no se podí­a hacer en ninguna de las versiones anteriores de Flash. Esto es algo muy simple tan simple como esto. [as] stage.frameRate = 50 [/as] Ahora el ejemplo terminado. Da click en el rectangulo para cambiar el FrameRate del SWF, Necesitas el FlashPlayer9 para verlo

[FLASH]http://tmeister.dev/as3/framerate.swf,400,100[/FLASH]

El código completo

[as]
import flash.display.Sprite;
import flash.events. *
import flash.stage. *
var ball : Sprite = new Sprite ();
var square : Sprite = new Sprite ();
var outPut : TextField = new TextField ();
function init ()
{
doBall ()
doButton ()
doTextField ()
addListeners ()
}
function doBall ()
{
ball.graphics.beginFill (0x0099FF)
ball.graphics.drawCircle (10, 20, 10);
ball.graphics.endFill ();
addChild (ball)
}
function doButton ()
{
square.graphics.beginFill (0x0099FF)
square.graphics.drawRect (10, 50, 50, 25);
square.graphics.endFill ();
addChild (square)
}
function doTextField ()
{
outPut.width = 150
outPut.height = 25
outPut.x = 70
outPut.y = 60
addChild (outPut)
}
function addListeners ()
{
ball.addEventListener (Event.ENTER_FRAME, handlerEnterFrame);
square.addEventListener (MouseEvent.MOUSE_UP, handlerButton);
}
function handlerEnterFrame (event : Event)
{
ball.x += 5
if (ball.x > 400)
{
ball.x = 0
}
outPut.text = “FrameRate : ” + stage.frameRate
}
function handlerButton (event : Event)
{
if (stage.frameRate < 120) { stage.frameRate += 12 }else { stage.frameRate = 12 } } init () [/as] y por supuesto el ZIP con el FLA

Related

Filed Under: ActionScript, AS3 Tagged With: ActionScript, AS3

Enrique Chavez

Senior Full Stack WordPress developer & WordPress Enthusiast -
Spend my days building cool stuff with WordPress.

Reader Interactions

Comments

  1. Tata says

    Jul 10, 2006 at 12:31 am

    Excelente!!!
    Muy buen ejemplo, muchas gracias 😉

    Reply
  2. leandono says

    Jul 10, 2006 at 9:01 am

    Excelentes ejemplos ^^

    Reply
  3. eldervaz says

    Jul 12, 2006 at 8:35 pm

    una vez mas mi estimado kike, felicitaciones, es realmente muy sencilla la forma como explicas lo nuevo q nos trae AS 3.0

    Reply
  4. Ramiro says

    Oct 14, 2006 at 4:36 am

    as3, de adonde?, todavia no salio la version 9, pero si el reproductor 9 :S

    Reply
  5. Tmeister says

    Oct 14, 2006 at 11:22 am

    Bueno creo que Ramiro esta un poco desinformado..

    Flex 2 viene con ActionScript3, tambien hay un Alpha de la version 9 de Flash en la cual tambien esta disponible ActionScript3

    http://www.adobe.com/products/flex/

    http://labs.adobe.com/technologies/flash9as3preview/

    Reply
  6. Rafeo says

    Apr 25, 2007 at 6:20 pm

    Qué tal Tmeister?
    Tengo duda con el addChild. Antes con el attachMovie le tenias que indicar el nivel en el que querias cargar el movie clip (addChild(“nombreMC”,”nombreInstanciaMC”,nivel), ahora como se manejan esos niveles con AS3?

    Reply
  7. cristalab says

    Aug 24, 2007 at 2:15 am

    novato…

    Reply
  8. William says

    Oct 20, 2008 at 10:43 am

    gracias me será de gran ayuda…

    Reply

Trackbacks

  1. DarkRasseL Weblog » Archivo del weblog » AS3.0 y algunos tutoriales muy interesantes says:
    Oct 6, 2006 at 4:59 am

    […] Algo de AS3 [AS3] FrameRate, Eventos y agregar elementos al Stage [AS3] Cargando Información Externa. XML. Drag and Drop con ActionScript 3.0 y Flash 9 […]

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Footer

SUBSCRIBE FOR UPDATES

Like what you’ve read? If you're interested in my email, sign up here. No spam I promise!

My WordPress Plugins

  • JWT for WP REST API
  • WP Simple Mail Sender
  • Idea Factory

My SideProjects

  • WordPress Plugin Boilerplate Generator

My Profiles

  • WordPress
  • GitHub
  • Linkedin

Additional Info

  • Blog
  • Hire Me
  • Contact Me

© 2021 Enrique Chavez