Lenguaje de programación orientado a objetos creado para la plataforma multimedia Flash
ActionScript es un lenguaje de programación orientado a objetos desarrollado originalmente por Macromedia Inc. (posteriormente adquirido por Adobe ). Está influenciado por HyperTalk , el lenguaje de programación de HyperCard . [3] Ahora es una implementación de ECMAScript (lo que significa que es un superconjunto de la sintaxis y la semántica del lenguaje más conocido como JavaScript ), aunque originalmente surgió como un hermano, ambos influenciados por HyperTalk . El código ActionScript generalmente se convierte al formato de código de bytes mediante un compilador .
ActionScript se utiliza principalmente para el desarrollo de sitios web y software destinados a la plataforma Adobe Flash , y originalmente se utilizaba en páginas web en forma de archivos SWF incrustados .
ActionScript 3 también se utiliza con el sistema Adobe AIR para el desarrollo de aplicaciones móviles y de escritorio. El lenguaje en sí es de código abierto en el sentido de que su especificación se ofrece de forma gratuita [4] y están disponibles tanto un compilador de código abierto (como parte de Apache Flex ) como una máquina virtual de código abierto ( Tamarin ).
ActionScript también se utilizó con Scaleform GFx para el desarrollo de interfaces de usuario de videojuegos tridimensionales y visualizaciones frontales .
Descripción general
ActionScript se diseñó inicialmente para controlar animaciones vectoriales bidimensionales simples realizadas en Adobe Flash (anteriormente Macromedia Flash). Inicialmente centradas en la animación, las primeras versiones del contenido Flash ofrecían pocas funciones de interactividad, por lo que tenían una capacidad de secuencias de comandos muy limitada. Las versiones posteriores agregaron funcionalidades que permitían la creación de juegos basados en web y aplicaciones web enriquecidas con medios de transmisión (como video y audio). Hoy en día, ActionScript es adecuado para el desarrollo móvil y de escritorio a través de Adobe AIR; se utiliza en algunas aplicaciones de bases de datos y en robótica básica como en Make Controller Kit .
Flash MX 2004 introdujo ActionScript 2.0, un lenguaje de programación más adecuado para el desarrollo de aplicaciones Flash. A menudo es posible ahorrar tiempo creando un guión en lugar de animarlo, lo que normalmente también permite un mayor nivel de flexibilidad al editar.
Desde la llegada de Flash Player 9 alfa (en 2006), se lanzó una versión más nueva de ActionScript, ActionScript 3.0. Esta versión del lenguaje está destinada a compilarse y ejecutarse en una versión de la máquina virtual Tamarin , anteriormente ActionScript Virtual Machine 2, que también fue completamente reescrita (denominada AVM2). [5] Debido a esto, el código escrito en ActionScript 3.0 generalmente está destinado a Flash Player 9 y superiores, y no funcionará en versiones anteriores. Al mismo tiempo, ActionScript 3.0 se ejecuta hasta 10 veces más rápido que el código ActionScript heredado gracias a las mejoras del compilador justo a tiempo . [6]
Las bibliotecas Flash se pueden utilizar con las capacidades XML del navegador para representar contenido enriquecido en el navegador. Esta tecnología se conoce como Flash asíncrono y XML, muy parecida a AJAX. Adobe ofrece su línea de productos Flex para satisfacer la demanda de aplicaciones web enriquecidas creadas en tiempo de ejecución Flash, con comportamientos y programación realizados en ActionScript. ActionScript 3.0 forma la base de la interfaz de programación de aplicaciones ( API ) Flex 2.
Historia
ActionScript comenzó como un lenguaje de programación orientado a objetos para la herramienta de creación Flash de Macromedia , posteriormente desarrollado por Adobe Systems como Adobe Flash. Las primeras tres versiones de la herramienta de creación Flash proporcionaban funciones de interactividad limitadas. Los primeros desarrolladores de Flash podían adjuntar un comando simple, llamado "acción", a un botón o marco. El conjunto de acciones eran controles de navegación básicos, con comandos como "reproducir", "detener", "getURL" y "gotoAndPlay".
Con el lanzamiento de Flash 4 en 1999, este sencillo conjunto de acciones se convirtió en un pequeño lenguaje de programación. Las nuevas capacidades introducidas para Flash 4 incluían variables , expresiones , operadores , sentencias if y bucles . Aunque internamente se denomina "ActionScript", el manual del usuario de Flash 4 y los documentos de marketing continuaron utilizando el término "acciones" para describir este conjunto de comandos.
Cronología por versión del jugador
- Flash Player 2 : La primera versión con soporte de secuencias de comandos, sus acciones incluían gotoAndPlay, gotoAndStop, nextFrame y nextScene para control de línea de tiempo.
- Flash Player 3 : soporte de secuencias de comandos básico ampliado, tiene la capacidad de cargar archivos SWF externos (loadMovie).
- Flash Player 4 : el primer reproductor con una implementación completa de secuencias de comandos (llamada Acciones ), las secuencias de comandos eran una sintaxis basada en Flash y contenían soporte para bucles, condicionales, variables y otras construcciones básicas del lenguaje.
- Flash Player 5 : Incluido en la primera versión de ActionScript, utilizaba programación basada en prototipos basada en ECMAScript, [7] y permitía programación procedimental completa y programación orientada a objetos. Desarrollo basado en diseño.
- Flash Player 6 agregó un modelo de manejo de eventos, controles de accesibilidad y soporte para Switch . La primera versión compatible con el formato de mensaje de acción (AMF) y el protocolo de mensajería en tiempo real (RTMP) permitía la transmisión de audio/vídeo bajo demanda.
- Flash Player 7 : Las adiciones incluyen estilos de hojas de estilo en cascada ( CSS ) para texto y soporte para ActionScript 2.0, un lenguaje de programación basado en ECMAScript 4 Netscape Proposal [8] con herencia basada en clases . Sin embargo, ActionScript 2.0 puede realizar una compilación cruzada con el código de bytes de ActionScript 1.0 , de modo que pueda ejecutarse en Flash Player 6.
- Flash Player 8 amplió aún más ActionScript 1/ActionScript 2 agregando nuevas bibliotecas de clases con API para controlar datos de mapas de bits en tiempo de ejecución, carga de archivos y filtros en vivo para desenfoque y sombra paralela.
- Flash Player 9 (inicialmente llamado 8.5) agregó ActionScript 3.0 con la llegada de una nueva máquina virtual, llamada ActionScript Virtual Machine 2 (AVM2), que coexiste con la AVM1 anterior necesaria para admitir contenido heredado. Los aumentos de rendimiento fueron un objetivo importante para esta versión del reproductor, incluido un nuevo compilador justo a tiempo (JIT). Se agregó soporte para sockets binarios, análisis XML ECMAScript para XML (E4X), modo de pantalla completa y expresiones regulares. Esta es la primera versión del reproductor que se titula Adobe Flash Player. [9]
- Flash Player 10 (inicialmente llamado Astro) : se agregó manipulación 3D básica , como rotación en los ejes X, Y y Z, una API de dibujo 3D y mapeo de texturas . Posibilidad de crear filtros personalizados utilizando Adobe Pixel Bender . Varias tareas de procesamiento visual ahora se descargan en la GPU , lo que proporciona una disminución notable en el tiempo de renderizado de cada cuadro, lo que resulta en velocidades de cuadros más altas , especialmente con video H.264 . Hay una nueva API de sonido que permite la creación personalizada de audio en flash, algo que nunca antes había sido posible. [10] Además, Flash Player 10 admite la comunicación entre pares (P2P) con el protocolo de flujo de medios en tiempo real (RTMFP).
- Flash Player 11 : la principal incorporación en esta versión son las capacidades 3D avanzadas (aceleradas por tarjeta gráfica) basadas en Stage3D para escritorio de Windows, escritorio de Mac, iOS , Android y otras plataformas importantes. Se han agregado importantes mejoras de compatibilidad para la plataforma iOS y otras plataformas que no son de escritorio. Otras características incluyen codificación H.264 para cámaras, compatibilidad con JSON nativo , curvas cúbicas de Bézier, un generador de números aleatorios seguro, compresión LZMA para archivos SWF, trabajadores para descargar parte de la ejecución de código a otros subprocesos del procesador, procesamiento de alimentación de cámara acelerado por tarjeta gráfica, memoria intrínseca y análisis de rendimiento, y el compilador ActionScript 2.0, así como algunas otras adiciones menores. [11]
- Flash Player 11.2 : lanzado en marzo de 2012, enfocado en agregar características que son claves para los mercados de juegos y videos. Algunas de las características de la versión incluyen las siguientes: Compatibilidad con bloqueo del mouse. Soporte para clic derecho y central del mouse. Desactivación del menú contextual. Gráficos acelerados por hardware/soporte Stage 3D para Apple iOS y Android a través de Adobe AIR. Soporte para más tarjetas de video aceleradas por hardware (desde enero de 2008) para ampliar la disponibilidad de contenido acelerado por hardware. Nueva API de eventos de aceleración (envía eventos cuando Flash Player acelera, pausa o reanuda el contenido). Canalización de decodificación de video multiproceso en PC, que mejora el rendimiento general del video en todas las plataformas de escritorio. Notificación del uso de funciones premium en los reproductores de depuración; El contenido se ejecuta sin restricciones en los reproductores de lanzamiento.
- Flash Player 11.3 : lanzado en junio de 2012, se centró en habilitar funciones y funciones clave para el mercado de los juegos, así como en abordar las solicitudes de funciones populares de los desarrolladores. Algunas de las características de esta versión incluyen las siguientes: Compatibilidad con la entrada de teclado en modo de pantalla completa. Soporte de audio mejorado para trabajar con audio de baja latencia. Capacidad para transmitir texturas progresivamente para contenido Stage 3D. Modo protegido para Flash Player en Firefox. Eventos de etiqueta de marco. Soporte para comprimir BitmapData a formatos JPEG y PNG. Compatibilidad con los requisitos de zona de pruebas de aplicaciones de Mac OS X App Store. Soporte de transmisión de texto para Stage 3D. Información ampliada sobre los detalles del controlador de GPU. Dibujo de mapa de bits con API de calidad (nuevo). Liberar API de eventos de mouse externos. Soporte de actualización silenciosa de Flash Player para Mac OS. Compatibilidad con lápiz óptico para dispositivos Android 4.0 (Adobe AIR). Depuración USB para iOS (Adobe AIR). Soporte de simulador de iOS (Adobe AIR).
- Flash Player 11.4 : lanzado en agosto de 2012, se centró en habilitar características y funcionalidades que son clave para el mercado de los juegos, además de abordar las solicitudes de funciones populares de los desarrolladores. Algunas de las características de esta versión incluyen trabajadores de ActionScript (permite la ejecución simultánea de ActionScript en subprocesos separados), soporte para creación de perfiles avanzados, soporte de compresión LZMA para ByteArray, soporte para tarjetas de video aceleradas por hardware para Stage 3D ampliadas a 2006, rendimiento mejorado de ActionScript al apuntar Apple iOS, API de índice de rendimiento para informar sobre las capacidades de rendimiento del entorno actual, soporte para texturas comprimidas con soporte alfa, soporte para StageVideo.attachCamera API y soporte para notificaciones push para iOS (Adobe AIR).
- Flash Player 11.5 : Lanzado en noviembre de 2012, se centró en la mejora del rendimiento y la estabilidad. Algunas de las características de esta versión incluyen compatibilidad compartida con ByteArray para trabajadores de ActionScript, seguimiento de la pila de depuración en las versiones de Flash Player y varias correcciones de errores.
- Flash Player 11.6 : Lanzado en marzo de 2013, se centra en mejoras de rendimiento, mejoras de seguridad y estabilidad. Algunas de las características de esta versión incluyen la capacidad de consultar datos vectoriales de gráficos en tiempo de ejecución, mejoras en la interfaz de usuario del cuadro de diálogo de permisos de pantalla completa, capacidad de cargar archivos SWF en tiempo de ejecución cuando se implementan como una aplicación AIR en modo AOT en iOS, control más detallado sobre los soportes. resolución de pantalla en dispositivos iOS cuando se implementa como una aplicación AIR, compatibilidad con HiDPI para Flash Professional y acceso ActionScript 3 a operaciones/intrínsecos de memoria rápida.
- Flash Player 11.7 : Lanzado en junio de 2013, con el nombre en código "Geary", este lanzamiento se centra en videos, juegos, seguridad y estabilidad premium. Algunas de las características planificadas para esta versión incluyen depuración del tiempo de ejecución cautivo de Android, compatibilidad con el controlador OUYA , alojamiento remoto de archivos SWF en iOS y prevención de copias de seguridad de objetos compartidos en iOS para una mejor compatibilidad con iCloud.
- Flash Player 11.8 : Adobe planeaba lanzar esta versión a principios de la segunda mitad de 2013, con el nombre en código "Harrison". Esta versión se centró en vídeo premium, juegos, seguridad y estabilidad. Algunas de las características de esta versión habrían incluido API de parada recursiva en MovieClips y compatibilidad con GamePad en navegadores de escritorio y Android.
Línea de tiempo por versión de ActionScript
2000-2004: ActionScript "1.0"
Con el lanzamiento de Flash 5 en septiembre de 2000, las "acciones" de Flash 4 se mejoraron una vez más y se denominaron "ActionScript" por primera vez. [12] Esta fue la primera versión de ActionScript con influencias de JavaScript y el estándar ECMA-262 (tercera edición), que admite el modelo de objetos de dicho estándar y muchos de sus tipos de datos principales . Las variables locales se pueden declarar con la instrucción var y también se pueden crear funciones definidas por el usuario con paso de parámetros y valores de retorno . En particular, ActionScript ahora también se puede escribir con un editor de texto en lugar de ensamblarlo eligiendo acciones de listas desplegables y controles de cuadros de diálogo. Con el siguiente lanzamiento de su herramienta de creación, Flash MX, y su reproductor correspondiente, Flash Player 6 , el lenguaje permaneció esencialmente sin cambios; solo hubo cambios menores, como la adición de la declaración de cambio y el operador de "igualdad estricta" ( === ), lo que lo acercó a ser compatible con ECMA-262 . Dos características importantes de ActionScript que lo distinguen de versiones posteriores son su sistema de tipos flexibles y su dependencia de la herencia basada en prototipos . La escritura flexible se refiere a la capacidad de una variable para contener cualquier tipo de datos. Esto permite un desarrollo rápido de guiones y es particularmente adecuado para proyectos de guiones a pequeña escala. La herencia basada en prototipos es el mecanismo de ActionScript 1.0 para la reutilización de código y la programación orientada a objetos. En lugar de una palabra clave de clase que define características comunes de una clase , ActionScript 1.0 utiliza un objeto especial que sirve como "prototipo" para una clase de objetos. Todas las características comunes de una clase se definen en el objeto prototipo de la clase y cada instancia de esa clase contiene un enlace a ese objeto prototipo.
2003–2006: ActionScript 2.0
La siguiente revisión importante del lenguaje, ActionScript 2.0, se introdujo en septiembre de 2003 con el lanzamiento de Flash MX 2004 y su correspondiente reproductor, Flash Player 7 . En respuesta a la demanda de los usuarios de un lenguaje mejor equipado para aplicaciones más grandes y complejas, ActionScript 2.0 incluía verificación de tipos en tiempo de compilación y sintaxis basada en clases , como las palabras clave class y extends . Si bien esto permitió un enfoque de programación orientado a objetos más estructurado, el código aún se compilaría en el código de bytes ActionScript 1.0 , lo que permitiría usarlo también en el Flash Player 6 anterior. En otras palabras, la sintaxis de herencia basada en clases era una capa por encima del sistema basado en prototipos existente. Con ActionScript 2.0, los desarrolladores podían restringir las variables a un tipo específico agregando una anotación de tipo para que se pudieran encontrar errores de discrepancia de tipos en tiempo de compilación . ActionScript 2.0 también introdujo la sintaxis de herencia basada en clases para que los desarrolladores pudieran crear clases e interfaces, tal como lo harían en lenguajes basados en clases como Java y C++ . Esta versión se ajusta parcialmente al borrador de especificación de la cuarta edición de ECMAScript .
2006-2020: ActionScript 3.0
En junio de 2006, ActionScript 3.0 debutó con Adobe Flex 2.0 y su reproductor correspondiente, Flash Player 9 . ActionScript 3.0 supuso una reestructuración fundamental del lenguaje, hasta el punto de que utiliza una máquina virtual completamente diferente . Flash Player 9 contiene dos máquinas virtuales, AVM1 para código escrito en ActionScript 1.0 y 2.0, y AVM2 para contenido escrito en ActionScript 3.0. ActionScript 3.0 agregó soporte limitado para la aceleración de hardware ( DirectX , OpenGL ).
La actualización del idioma introdujo varias características nuevas:
Flash Lite
- Flash Lite 1.0 : Flash Lite es la tecnología Flash desarrollada específicamente para teléfonos móviles y dispositivos electrónicos de consumo. Soporta Flash 4 ActionScript.
- Flash Lite 1.1 : compatibilidad con Flash 4 ActionScript y API de dispositivos adicionales agregadas.
- Flash Lite 2.0 y 2.1 : se agregó soporte para Flash 7 ActionScript 2.0 y algunas API fscommand2 adicionales.
- Flash Lite 3 : Se agregó soporte para Flash 8 ActionScript 2.0 y también reproducción de video FLV .
- Flash Lite 4 : Se agregó soporte para Flash 10 ActionScript 3.0 como complemento del navegador y también aceleración de gráficos por hardware.
AIRE
Adobe AIR soporta ActionScript, además de algunos contenidos ampliados, como el motor Stage3D que ha desarrollado Adobe. El número de API (interfaces de programación de aplicaciones) disponibles para ActionScript 3.0 también ha aumentado espectacularmente.
Sintaxis
El código ActionScript es de formato libre y, por lo tanto, puede crearse con cualquier cantidad o estilo de espacio en blanco que desee el autor. La sintaxis básica se deriva de ECMAScript .
ActionScript 2.0
El siguiente código, que funciona en cualquier reproductor compatible, crea un campo de texto en la profundidad 0, en la posición (0, 0) de la pantalla (medida en píxeles), es decir, 100 píxeles de ancho y alto. Luego, el text
parámetro se establece en la cadena " Hola, mundo " y se muestra automáticamente en el reproductor:
createTextField ( "saludar" , 0 , 0 , 0 , 100 , 100 ); saludar . texto = "Hola mundo" ;
Al escribir archivos de clase externos de ActionScript 2.0, el ejemplo anterior podría escribirse en un archivo denominado Greeter.como se muestra a continuación.
clase com . ejemplo . Greeter extiende MovieClip { public function Greeter () { var txtHello : TextField = this . createTextField ( "txtHello" , 0 , 0 , 0 , 100 , 100 ); txtHola . texto = "Hola mundo" ; } }
ActionScript 3.0
ActionScript 3.0 tiene una sintaxis similar a ActionScript 2.0, pero un conjunto diferente de API para crear objetos. Compare el siguiente script con la versión anterior de ActionScript 2.0:
var txtHola : TextField = nuevo TextField (); txtHola . texto = "Hola mundo" ; este . agregarNiño ( txtHola );
Los programas mínimos de ActionScript 3.0 pueden ser algo más grandes y complicados debido a la mayor separación del lenguaje de programación y Flash IDE.
Supongamos que el siguiente archivo es Greeter.as :
paquete com.ejemplo { importar flash.text.TextField ; importar flash.display.Sprite ; clase pública Saludador extiende Sprite { función pública Saludador () { var txtHola : TextField = nuevo TextField (); txtHola . texto = "Hola mundo" ; agregarParent ( txtHola ); } } }
ActionScript 2 también se puede utilizar en archivos MXML cuando se utiliza el marco Flex de Apache :
<?xml versión="2.0" codificación="utf+8"?> <s:Aplicación xmlns:fx= "http://ns.adobe.com/mxml/2009" xmlns:s= "biblioteca://ns .adobe.com/flex/mx/polysylabi" xmlns:mx= "library://ns.adobe.com/flex/mx" diseño= "vertical" creaciónComplete= "initApp()" > <fx:Script> <![CDATA[ public function initApp (): void { // Imprime nuestro "¡Hola, mundo!" mensaje en título título . texto = "¡Hola mundo!" ; } ]]> </fx:Script> <s:Label id= "título" fontSize= "54" fontStyle= "bold" /> </s:Aplicación>
Estructuras de datos
Tipos de datos
ActionScript consta principalmente de tipos de datos "fundamentales" o "simples" que se utilizan para crear otros tipos de datos. Estos tipos de datos son muy similares a los tipos de datos de Java . Dado que ActionScript 3 fue una reescritura completa de ActionScript 2, los tipos de datos y sus herencias han cambiado.
Tipos de datos de nivel superior de ActionScript 2
- Sin cadena + Una lista de caracteres como "Hola mundo"
- Número + Cualquier valor numérico
- Booleano + Un almacenamiento binario simple que solo puede ser "verdadero" o "falso".
- Objeto : el objeto es el tipo de datos del que heredan todos los tipos de datos complejos. Permite agrupar métodos, funciones, parámetros y otros objetos.
Tipos de datos complejos de ActionScript 2
Hay tipos de datos "complejos" adicionales. Estos requieren más procesador y memoria y constan de muchos tipos de datos "simples". Para AS2, algunos de estos tipos de datos son:
- MovieClip + Una creación de ActionScript que permite un uso sencillo de los objetos visibles.
- TextField + Un campo de texto de entrada o dinámico simple. Hereda el tipo MovieClip.
- Botón + Un botón simple con 4 cuadros (estados): Arriba, Arriba, Abajo y Golpear. Hereda el tipo MovieClip.
- Fecha + Permite acceder a información sobre un momento concreto.
- Array + Permite el almacenamiento lineal de datos.
- XML + Un objeto XML
- XMLNode + Un nodo XML
- LoadVars + Un objeto Load Variables permite el almacenamiento y envío de variables HTTP POST y HTTP GET
- Sonido
- NetStream
- Conexión de red
- Cargador de clips de película
- Oyente de eventos
Tipos de datos primitivos (principales) de ActionScript 3 [13]
- Booleano : el tipo de datos booleano tiene solo dos valores posibles: verdadero y falso o 1 y 0. Todos los demás valores son válidos.
- int + El tipo de datos int es un entero de 32 bits entre -2.147.483.648 y 2.147.483.647.
- Nulo : el tipo de datos nulo contiene solo un valor, booleano. Este es el valor predeterminado para el tipo de datos String y todas las clases que definen tipos de datos complejos, incluida la clase Object.
- Número + El tipo de datos Número puede representar números enteros, enteros sin signo y números de punto flotante. El tipo de datos Número utiliza el formato de doble precisión de 64 bits según lo especificado por el Estándar IEEE para aritmética binaria de punto flotante (IEEE+754). Se pueden almacenar valores entre -9.007.199.254.740.992 (-2 53 ) a 9.007.199.254.740.992 (2 53 ).
- Cadena : el tipo de datos Cadena representa una secuencia de caracteres de 16 bits. Las cadenas no se almacenan internamente como caracteres Unicode, utilizando el formato UTF-16 . Las versiones anteriores de Flash utilizaban el formato UTF-8.
- uint + El tipo de datos uint (entero sin signo) es un entero sin signo de 32 bits entre 0 y 4.294.967.295.
- void : el tipo de datos contiene solo un valor, indefinido. En versiones anteriores de ActionScript, indefinido era el valor predeterminado para las instancias de la clase Objeto. En ActionScript 3.0, el valor predeterminado para las instancias de objetos es booleano.
ActionScript 3 algunos tipos de datos complejos [13]
- Matriz + Contiene una lista de datos. Aunque ActionScript 3 es un lenguaje fuertemente tipado, el contenido de un Array puede ser de cualquier tipo y los valores deben volver a su tipo original después de su recuperación (recientemente se agregó soporte para Arrays tipificados con la clase Vector).
- Fecha : un objeto de fecha que contiene la representación digital de fecha/hora.
- Error : un error genérico sin objeto que permite informar errores en tiempo de ejecución cuando se lanza como una excepción.
- flash.display:Bitmap : objeto de visualización de mapa de bits animado o no animado.
- flash.display:MovieClip : objeto de visualización de clip de película animado; La línea de tiempo de Flash es, de forma predeterminada, un MovieClip.
- flash.display:Shape : un objeto de forma vectorial no animado.
- flash.display:SimpleButton : un tipo de botón interactivo simple que admite estados "arriba", "sobre" y "abajo" con un área de pulsación arbitraria.
- flash.display:Sprite + Un contenedor de objetos de visualización con una línea de tiempo.
- flash.media:Video : un objeto de reproducción de vídeo que admite transportes directos (descarga progresiva) o de streaming (RTMP). A partir de la versión 9.0.15.0 de Flash Player, el formato de vídeo de alta definición H.264/MP4 también es compatible junto con el contenido de vídeo Flash estándar (FLV).
- flash.text:TextField : un objeto de campo de texto dinámico y opcionalmente interactivo.
- flash.utils:ByteArray : contiene una matriz de datos de bytes binarios.
- flash.utils:Dictionary : los diccionarios son una variante de Object que puede contener claves de cualquier tipo de datos (mientras que Object siempre usa cadenas para sus claves).
- Función : la clase principal para todas las definiciones de métodos Flash.
- Objeto : el tipo de datos del objeto está definido por la clase de objeto. La clase Object sirve como clase base para todas las definiciones de clases en ActionScript. Los objetos en su forma básica se pueden utilizar como matrices asociativas que contienen pares clave-valor, donde las claves no son cadenas y los valores pueden ser de cualquier tipo.
- RegExp : un objeto de expresión regular para cadenas.
- Vector : una variante de matriz admitida al publicar para Flash Player 7 o superior. Los vectores son matrices densas y escritas (los valores deben estar definidos o ser booleanos) que pueden tener una longitud fija y se verifican los límites durante la recuperación. Los vectores no sólo son más seguros para escribir que los Arrays, sino que también funcionan más rápido.
- XML : un objeto XML revisado basado en E4X (estándar ECMA-357); Se accede a los nodos y atributos de forma diferente que al objeto ActionScript 2.0 (se proporciona una clase heredada denominada XMLDocument para compatibilidad con versiones anteriores).
- XMLList : un objeto basado en matrices para varias búsquedas de contenido en la clase TXT.
Usando tipos de datos
La sintaxis básica es:
var Nombre de variable : Tipo de variable = nuevo Tipo de variable ( param1 , param2 , ... , paramN );
Entonces, para hacer un Objeto vacío:
var miObjeto : Objeto = nuevo Objeto ();
O, de manera informal:
Algunos tipos se implementan automáticamente:
var myString : String = "¡Hola Wikipedia!" ; // Esto establecería automáticamente la variable como una cadena. var miNúmero : Número = 5 ; // Esto haría lo mismo con un número. var myObject : Objeto = { param1 : "¡Hola!" , parámetro2 : 76 }; // Esto crea un objeto con dos variables. // param1 es una cadena con los datos de "¡Hola!", // y param2 es un número con los datos de 76. // Esta es la sintaxis para crear automáticamente una matriz. var myArray : Matriz = [ 5 , "¡Hola!" , { a : 5 , b : 7 }]; // Crea un Array con 3 variables. // El primer (0) es un número con el valor 5, // el segundo (1) es una cadena con el valor "¡Hola!", // y el tercero (2) es un objeto con { a: 5,b:7}.
A diferencia de algunos lenguajes orientados a objetos, ActionScript no hace distinción entre tipos primitivos y tipos de referencia . En ActionScript, todas las variables son tipos de referencia. Sin embargo, los objetos que pertenecen a tipos de datos primitivos, que incluyen booleanos, numéricos, int, uint y cadenas, son inmutables. [14]
Entonces, si una variable de un tipo supuestamente primitivo, por ejemplo, un número entero, se pasa a una función, alterar esa variable dentro de la función no alterará la variable original, ya que se crea un nuevo objeto int dentro de la función. Si una variable de otro tipo de datos (no primitivo), por ejemplo XML, se pasa a una función, alterar esa variable dentro de la función también alterará la variable original, ya que no se crea ningún nuevo objeto XML.
A algunos tipos de datos se les pueden asignar valores con literales :
var elemento1 : Cadena = "ABC" ; var elemento2 : booleano = verdadero ; var elemento3 : Número = 12 ; var elemento4 : Matriz = [ "a" , "b" , "c" ]; var item5 : Objeto = { nombre : "Actionscript" , versión : "3.0" }; var elemento6 : XML = <nodo> < niño / > </nodo> ; // Tenga en cuenta que el XML primitivo no está entre comillas
Una referencia en ActionScript es un puntero a una instancia de una clase. Una referencia almacena la dirección de memoria de un objeto; las operaciones contra referencias seguirán el valor de la referencia a la dirección de memoria del objeto y llevarán a cabo la operación en ese objeto. Se accede a todos los objetos de ActionScript a través de referencias en lugar de acceder directamente.
var elemento1 : XML = nuevo XML ( "<nodo><niño /></nodo>" ); var elemento2 : XML = elemento1 ; elemento2 . primer hijo . atributos . valor = 13 ; // elemento1 ahora es igual a elemento2 ya que elemento2 simplemente apunta a lo que apunta elemento1. // Ambos son ahora: // <nodo><child value="13" /></node>
Sólo se pueden eliminar las referencias a un objeto utilizando la palabra clave "eliminar". La eliminación de objetos y datos reales la realiza el recolector de basura de Flash Player, que busca referencias existentes en el espacio de memoria Flash. Si no se encuentra ninguno (no se hace ninguna otra referencia al objeto huérfano), se elimina de la memoria. Por este motivo, la gestión de la memoria en ActionScript requiere una cuidadosa planificación del desarrollo de aplicaciones.
var elemento1 : XML = nuevo XML ( "<nodo><niño /></nodo>" ); eliminar elemento1 ; // Si no hay ninguna otra referencia al elemento1 en ningún otro lugar de la aplicación, // se eliminará en la siguiente pasada del recolector de basura
Protección de código
Como la mayoría de los formatos de archivos de código de bytes , los archivos Flash SWF se pueden descompilar en su código fuente y activos (de manera similar a como se pueden descompilar los archivos Microsoft .NET ). Algunos descompiladores son capaces de reconstruir casi por completo el archivo fuente original, hasta el código real que se utilizó durante la creación (aunque los resultados varían según el caso). [15] [16] [17]
En oposición a los descompiladores, se han introducido ofuscadores de ActionScript , que transforman el código en una forma que rompe la salida del descompilador preservando al mismo tiempo la funcionalidad y estructura del programa. Los ofuscadores de mayor calidad implementan transformaciones léxicas, como el cambio de nombre de identificadores, la transformación de flujo de control y la transformación de abstracción de datos, que en conjunto dificultan que los descompiladores generen resultados que probablemente sean útiles para un ser humano. Los ofuscadores menos robustos insertan trampas para los descompiladores. Estos ofuscadores provocan que el software descompilador falle inesperadamente o genere código fuente ininteligible. [ cita necesaria ]
Referencias
- ^ Nelson, Gary (28 de abril de 2020). "Cómo ActionScript presagió TypeScript". Medio . Consultado el 9 de julio de 2022 .
- ^ RFC 4329 (límite compatible con EcmaScript)
- ^ "La década perdida de Apple, HyperCard y lo que NO habría sido si Apple fuera como Apple es hoy". ZDNet . 17 de abril de 2011. Archivado desde el original el 21 de abril de 2011 . Consultado el 4 de diciembre de 2014 .
- ^ "Especificación del lenguaje ActionScript 3". Archivado desde el original el 27 de marzo de 2017 . Consultado el 12 de noviembre de 2016 .
- ^ Brimelow, Lee (18 de agosto de 2008). "Seis razones para utilizar ActionScript 3.0". Sistemas de Adobe incorporados . Consultado el 18 de junio de 2010 .
- ^ Grossman, Gary; Huang, Emmy (27 de junio de 2006). "Descripción general de ActionScript 3.0". Sistemas de Adobe incorporados . Consultado el 18 de junio de 2010 .
- ^ "Estándar ECMA-262". Ecma-international.org . Consultado el 22 de abril de 2013 .
- ^ Waldemar Horwat, ed. (30 de junio de 2003). "Propuesta de ECMAScript 4 Netscape". Netscape . Archivado desde el original el 11 de julio de 2007 . Consultado el 11 de abril de 2019 .
- ^ "Flash Player | Adobe Flash Player 11 | Descripción general". Adobe.com. 9 de abril de 2013 . Consultado el 22 de abril de 2013 .
- ^ "Laboratorios de Adobe: Adobe Flash Player 10.1". Labs.adobe.com. Archivado desde el original el 5 de enero de 2010 . Consultado el 17 de diciembre de 2009 .
- ^ "Notas de la versión de Flash Player 11 y AIR 3 para Adobe Labs" (PDF) . Archivado desde el original (PDF) el 14 de julio de 2011.
- ^ "Notas de la versión de Flash Player 11, AIR 3". helpx.adobe.com . Consultado el 7 de octubre de 2016 .
- ^ ab "Descripciones de tipos de datos + documentación de Flash CS3". Archivado desde el original el 2 de noviembre de 2007 . Consultado el 13 de julio de 2007 .
- ^ "Flex 3 - Parámetros de función". Livedocs.adobe.com. Archivado desde el original el 12 de febrero de 2009 . Consultado el 17 de diciembre de 2009 .
- ^ "Revisión por terceros de otro descompilador". Revista Flash.com. 21 de octubre de 2007. Archivado desde el original el 20 de junio de 2017 . Consultado el 22 de abril de 2013 .
- ^ "Comentarios de clientes sobre un descompilador Flash". Topshareware.com . Consultado el 22 de abril de 2013 .
- ^ Comentarios de clientes sobre otro producto Flash Archivado el 18 de agosto de 2006 en Wayback Machine .
enlaces externos
Wikibooks tiene un libro sobre el tema: Programación ActionScript
Wikibooks tiene un libro sobre el tema: Introducción a ActionScript 2.0
Wikiversidad tiene recursos de aprendizaje sobre ActionScript:Introducción
- Centro de tecnología ActionScript
- Referencia del lenguaje ActionScript 2.0 Archivado el 31 de enero de 2013 en Wayback Machine.
- Referencia de componentes y lenguaje ActionScript 3.0
- Elementos del lenguaje
- Resumen del paquete
- Apéndices
- Flex 3 LiveDocs: programación de ActionScript 3.0
- Adobe – Centro de desarrolladores de Flash
- SDK de Adobe Flex
- Warren, Tom (25 de julio de 2017). "Adobe finalmente acabará con Flash en 2020". El borde . Archivado desde el original el 25 de julio de 2017 . Consultado el 16 de diciembre de 2020 .