ACTION SCRIPT 3.0 DECLARAR VARIABLES. var nombre:Tipo; var value2:Number = 17; Variables sin tipo: var someObj:*; var someObj;
Tipos de datos:
String: un valor de texto como, por ejemplo, un nombre o el texto de un capítulo de un libro Numeric: ActionScript 3.0 incluye tres tipos de datos específicos para datos numéricos: o Number: cualquier valor numérico, incluidos los valores fraccionarios o no fraccionarios o int: un entero (un número no fraccionario) o uint: un entero sin signo, es decir, que no puede ser negativo Boolean: un valor true (verdadero) o false (falso), por ejemplo, si un conmutador está activado o si dos valores son iguales
Tipos de datos complejos:
MovieClip: un símbolo de clip de película TextField: un campo de texto dinámico o de texto de entrada SimpleButton: un símbolo de botón Date: información sobre un solo momento temporal (una fecha y hora)
CABEZAL DEL REPRODUCTOR. Clic de pelicula.gotoAndStop(1);//va al primer fotograma del clip de película y luego se detiene
GESTIÓN BÁSICA DE EVENTOS Lo de negro es lo que se modifica para nuestra necesidad. function eventResponse(eventObject:EventType):void { // Aquí deben incluirse las acciones realizadas en respuesta al evento.
} eventSource.addEventListener(EventType.EVENT_NAME, eventResponse);
Ejemplos: function eventResponse(event:MouseEvent):void { // Actions performed in response to the event go here. } myButton.addEventListener(MouseEvent.CLICK, eventResponse);
Hacer clic en un botón para iniciar la reproducción del clip de película actual. En el siguiente ejemplo, playButton es el nombre de instancia del botón y this es el nombre especial, que significa "el objeto actual": this.stop(); function playMovie(event:MouseEvent):void { this.play(); }
Detectar que se está escribiendo en un campo de texto. En este ejemplo, entryText es un campo de introducción de texto y outputText es un campo de texto dinámico: function updateOutput(event:TextEvent):void { var pressedKey:String = event.text; outputText.text = "You typed: " + pressedKey; } entryText.addEventListener(TextEvent.TEXT_INPUT, updateOutput);
Detectar que se está escribiendo en un campo de texto. En este ejemplo, entryText es un campo de introducción de texto y outputText es un campo de texto dinámico: function updateOutput(event:TextEvent):void { var pressedKey:String = event.text; outputText.text = "You typed: " + pressedKey; } entryText.addEventListener(TextEvent.TEXT_INPUT, updateOutput);
CREACION DE INSTANCIA DE OBJETOS. Valor numérico literal (introducir el número directamente):
var someNumber:Number = 17.239; var someNegativeInteger:int = -53; var someUint:uint = 22;
Valor de cadena literal (poner el texto entre comillas dobles): var firstName:String = "George"; var soliloquy:String = "To be or not to be, that is the question...";
En los demás tipos de datos, para crear una instancia de objeto, se utiliza el operador new con el nombre de clase, como en el siguiente ejemplo: var raceCar:MovieClip = new MovieClip(); var birthday:Date = new Date(2006, 7, 9);
VALORES PREDETERMINADOS PARA VARIABLES SIN INICIALIZAR.
PARA COMPROBAR SI ES O NO está el operador is. El operador is examina la jerarquía de herencia adecuada y se puede utilizar no sólo para verificar si un objeto es una instancia de una clase específica, sino también en el caso de que un objeto sea una instancia de una clase que implementa una interfaz determinada. En el siguiente ejemplo se crea una instancia de la clase Sprite denominada mySprite y se utiliza el operador is para comprobar si mySprite es una instancia de las clases Sprite y DisplayObject, y si implementa la interfaz IEventDispatcher. var mySprite:Sprite = new Sprite(); trace(mySprite is Sprite); // true trace(mySprite is DisplayObject); // true trace(mySprite is IEventDispatcher); // true
EL OPERADOR as El operador as, una de las novedades de ActionScript 3.0, también permite comprobar si una expresión es un miembro de un tipo de datos determinado. Sin embargo, a diferencia del operador is, el operador as no devuelve un valor booleano. El operador as devuelve el valor de la expresión en lugar de true y null en lugar de false. En el siguiente ejemplo se muestran los resultados de utilizar el operador as en lugar del operador is en el caso sencillo de comprobar si una instancia de Sprite es un miembro de los tipos de datos DisplayObject, IEventDispatcher y Number. var mySprite:Sprite = new Sprite(); trace(mySprite as Sprite); // [object Sprite] trace(mySprite as DisplayObject); // [object Sprite] trace(mySprite as IEventDispatcher); // [object Sprite] trace(mySprite as Number); // null
FUNCIONES. Ejemplo: function traceParameter(aParam:String) { trace(aParam); } traceParameter("hello"); // hello Asigna la función en un array: var traceArray:Array = new Array(); traceArray[0] = function (aParam:String) { trace(aParam); }; traceArray[0]("hello");
DEVOLVER VALORES DE UNA FUNCIONES. Ejemplo: function doubleNum(baseNum:int):int { return (baseNum * 2); }
FUNCIONES ANIDADAS. Ejemplo: function getNameAndVersion():String {
function getVersion():String { return "9"; } function getProductName():String { return "Flash Player"; } return (getProductName() + " " + getVersion()); } trace(getNameAndVersion()); // Flash Player 9
FUNCIONES POR VALOR. Ejemplo: function passPrimitives(xParam:int, yParam:int):void { xParam++; yParam++; trace(xParam, yParam); } var xValue:int = 10; var yValue:int = 15; trace(xValue, yValue); // 10 15 passPrimitives(xValue, yValue); // 11 16 trace(xValue, yValue); // 10 15
FUNCIONES POR REFERENCIA. Ejemplo:
function passByRef(objParam:Object):void { objParam.x++; objParam.y++; trace(objParam.x, objParam.y); } var objVar:Object = {x:10, y:15}; trace(objVar.x, objVar.y); // 10 15 passByRef(objVar); // 11 16 trace(objVar.x, objVar.y); // 11 16
VALORES PREDETERMINADOS DE LOS PARÁMETROS. Se ejecutan cuando los parámetros no están completos o sea se asignan los valores que están como predeterminados. Ejemplo: function defaultValues(x:int, y:int = 3, z:int = 5):void { trace(x, y, z); } defaultValues(1); // 1 3 5
EL OBJETO ARGUMENTS. Cuando se pasan parámetros a una función, se puede utilizar el objeto arguments para acceder a información sobre los parámetros pasados a la función. Algunos aspectos: El objeto arguments es una matriz que incluye todos los parámetros pasados a la función. La propiedad arguments.length notifica el número de parámetros pasados a la función. La propiedad arguments.callee proporciona una referencia a la misma función, que resulta útil para llamadas recursivas a expresiones de función. Nota: El objeto arguments no estará disponible si algún parámetro tiene el nombre arguments o si se utiliza el parámetro ... (rest). Ejemplo: function traceArgArray(x:int):void { for (var i:uint = 0; i < arguments.length; i++) { trace(arguments[i]); } } traceArgArray(1, 2, 3); // salida: // 1 // 2 // 3 Nota: el compilador tiene que estar desmarcado el modo Estricto. Ejemplo función recursiva. var factorial:Function = function (x:uint) { if(x == 0) {
return 1; } else { return (x * arguments.callee(x - 1)); } } trace(factorial(5)); // 120
EL PARÁMETRO ...(REST). Se utiliza en vez de el objeto arguments, o sea no esta disponible el objeto arguments. Ejemplo: function traceArgArray(... args):void { for (var i:uint = 0; i < args.length; i++) { trace(args[i]); } } traceArgArray(1, 2, 3); // salida: // 1 // 2 // 3
FUNCIONES COMO OBJETOS. En el ejemplo siguiente, que sólo se compila en modo estándar porque el modo estricto requiere una coincidencia exacta entre el número de argumentos pasados y el número de parámetros definidos, se muestra la diferencia entre las dos propiedades: Ejemplo: function traceLength(x:uint, y:uint):void { trace("arguments received: " + arguments.length); //numero de argumentos trace("arguments expected: " + traceLength.length); //numero de argumentos pasados } traceLength(3, 5, 7, 11); /* salida: argumentos recibidos: 4 argumentos esperados: 2 */
El código siguiente crea una propiedad de función fuera de la declaración de la función e incrementa el valor de la propiedad cada vez que se llama a la función:
CIERRES DE FUNCION. Por ejemplo, el código siguiente crea dos funciones: foo(), que devuelve una función anidada denominada rectArea() que calcula el área de un rectángulo y bar(), que llama a foo() y almacena el cierre de función devuelto en una variable denominada myProduct. Aunque la función bar() define su propia variable local x (con el valor 2), cuando se llama al cierre de función myProduct(), conserva la variable x (con el valor 40) definida en la función foo(). Por tanto, la función bar() devuelve el valor 160 en lugar de 8. function foo():Function { var x:int = 40; function rectArea(y:int):int { //definicion de cierre de funcion return x * y; } return rectArea; } function bar():void { var x:int = 2; var y:int = 4; var myProduct:Function = foo(); trace(myProduct(4));// llamada a cierre de función } bar();// 160 El parámetro y dela función rectArea toma automáticamente el valor de y de bar() o sea 4.
DEFINICIONES DE CLASE. Por ejemplo, el código siguiente crea una clase denominada Shape que contiene una variable denominada visible: public class Shape { var visible:Boolean = true; } En ActionScript 3.0 se incluye la sentencia package y hay que incluir el nombre del paquete en la declaración del paquete, no en la declaración de clase. Por ejemplo, las siguientes declaraciones de clase muestran la manera de definir la clase BitmapData, que forma parte del paquete flash.display, en ActionScript 2.0 y en ActionScript 3.0: // ActionScript 3.0 package flash.display { public class BitmapData {} }