ActionScript es un lenguaje de programación orientado a objetos desarrollado originalmente por Macromedia Inc. (adquirida posteriormente por Adobe ). Está influenciado por HyperTalk , el lenguaje de scripting de HyperCard . [ 2 ] 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 lenguaje hermano, ambos influenciados por HyperTalk. El código ActionScript suele ser convertido a formato de bytecode por un compilador .
ActionScript se utiliza principalmente para el desarrollo de sitios web y software destinados a la plataforma Adobe Flash , y originalmente se empleaba 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 de escritorio y móviles. El lenguaje en sí es de código abierto, ya que su especificación se ofrece gratuitamente [ 3 ] 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 pantallas de visualización frontal .
Descripción general
ActionScript se diseñó inicialmente para controlar animaciones vectoriales bidimensionales sencillas creadas con Adobe Flash (antes Macromedia Flash). Centradas inicialmente en la animación, las primeras versiones de Flash ofrecían pocas funciones interactivas, por lo que su capacidad de scripting era muy limitada. Las versiones posteriores añadieron funcionalidades que permitieron la creación de juegos web y aplicaciones web enriquecidas con transmisión de contenido multimedia (como vídeo y audio). Actualmente, ActionScript es apto para el desarrollo de aplicaciones de escritorio y móviles mediante 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 scripting más adecuado para el desarrollo de aplicaciones Flash. A menudo es posible ahorrar tiempo programando en lugar de animando, lo que generalmente también permite una mayor flexibilidad al editar.
Desde la llegada de la versión alfa de Flash Player 9 (en 2006), se ha publicado una versión más reciente de ActionScript, ActionScript 3.0. Esta versión del lenguaje está diseñada para compilarse y ejecutarse en una versión de la máquina virtual Tamarin , anteriormente conocida como ActionScript Virtual Machine 2, que también fue completamente reescrita (denominada AVM2). [ 4 ] Debido a esto, el código escrito en ActionScript 3.0 generalmente está dirigido a Flash Player 9 y versiones posteriores, 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 anterior gracias a las mejoras del compilador justo a tiempo . [ 5 ]
Las bibliotecas Flash se pueden usar con las capacidades XML del navegador para mostrar contenido enriquecido. Esta tecnología se conoce como Flash y XML asíncronos, similar a AJAX. Adobe ofrece su línea de productos Flex para satisfacer la demanda de aplicaciones web enriquecidas basadas en el entorno de ejecución Flash, con comportamientos y programación en ActionScript. ActionScript 3.0 constituye la base de la interfaz de programación de aplicaciones ( API ) de Flex 2.
Historia
ActionScript comenzó como un lenguaje de programación orientado a objetos para la herramienta de autoría Flash de Macromedia , posteriormente desarrollada por Adobe Systems como Adobe Flash. Las tres primeras versiones de Flash ofrecían funciones de interactividad limitadas. Los primeros desarrolladores de Flash podían adjuntar un comando simple, llamado "acción", a un botón o un marco. El conjunto de acciones consistía en controles de navegación básicos, con comandos como "reproducir", "detener", "obtenerURL" e "ir a reproducción".
Con el lanzamiento de Flash 4 en 1999, este sencillo conjunto de acciones se convirtió en un pequeño lenguaje de scripting. Las nuevas funcionalidades introducidas en Flash 4 incluían variables , expresiones , operadores , sentencias condicionales y bucles . Aunque internamente se le denominaba "ActionScript", el manual de usuario y los documentos de marketing de Flash 4 seguían 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 para scripts, sus acciones incluían gotoAndPlay, gotoAndStop, nextFrame y nextScene para el control de la línea de tiempo.
- Flash Player 3 : Ofrece compatibilidad con scripts básicos ampliados y 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 Actions ). La sintaxis de las secuencias de comandos se basaba en Flash y contenía 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, [ 6 ] y permitía programación procedimental completa y programación orientada a objetos. Desarrollo basado en el diseño.
- Flash Player 6 añadió un modelo de gestión de eventos, controles de accesibilidad y compatibilidad con interruptores . La primera versión, con compatibilidad 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 y vídeo bajo demanda.
- Flash Player 7 : Entre sus novedades se incluyen el uso de hojas de estilo en cascada ( CSS ) para el texto y la compatibilidad con ActionScript 2.0, un lenguaje de programación basado en la propuesta ECMAScript 4 de Netscape [ 7 ] con herencia basada en clases . Sin embargo, ActionScript 2.0 puede compilarse de forma cruzada al código de bytes de ActionScript 1.0 , lo que permite su ejecución en Flash Player 6.
- Flash Player 8 amplió aún más ActionScript 1/ActionScript 2 al agregar nuevas bibliotecas de clases con API para controlar datos de mapa 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) incorporó ActionScript 3.0 con la llegada de una nueva máquina virtual, denominada ActionScript Virtual Machine 2 (AVM2), que coexiste con la anterior AVM1 necesaria para admitir contenido heredado. El aumento del rendimiento fue un objetivo principal de esta versión del reproductor, incluyendo un nuevo compilador justo a tiempo (JIT). Se añadió compatibilidad con sockets binarios, análisis XML de 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. [ 8 ]
- Flash Player 10 (inicialmente llamado Astro) : Añadió manipulación 3D básica , como rotación en los ejes X, Y y Z, una API de dibujo 3D y mapeo de texturas . Capacidad para crear filtros personalizados usando Adobe Pixel Bender . Varias tareas de procesamiento visual ahora se descargan a la GPU , lo que produce una disminución notable en el tiempo de renderizado para cada fotograma, lo que resulta en velocidades de fotogramas 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 había sido posible antes. [ 9 ] Además, Flash Player 10 admite comunicación Peer to Peer ( P2P ) con Real Time Media Flow Protocol (RTMFP).
- Flash Player 11 : La principal novedad de esta versión son las capacidades 3D avanzadas (aceleradas por tarjeta gráfica) basadas en Stage3D para Windows Desktop, Mac Desktop, iOS , Android y otras plataformas importantes. Se han añadido mejoras significativas 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 Bézier cúbicas , un generador seguro de números aleatorios , compresión LZMA para archivos SWF, trabajadores para descargar parte de la ejecución del código a otros subprocesos del procesador, renderizado de señales de cámara acelerado por tarjeta gráfica, análisis de rendimiento e intrínsecos de memoria, y el compilador ActionScript 2.0, así como otras adiciones menores. [ 10 ]
- Flash Player 11.2 : lanzado en marzo de 2012, se centró en agregar características clave para los mercados de juegos y video. Algunas de las características de esta versión incluyen: Compatibilidad con bloqueo del ratón. Compatibilidad con clic derecho y central del ratón. Deshabilitación del menú contextual. Compatibilidad con gráficos acelerados por hardware/Stage 3D para Apple iOS y Android a través de Adobe AIR. Compatibilidad con 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 limitación (envía un evento cuando Flash Player limita, pausa o reanuda el contenido). Canalización de decodificación de video multihilo en PC, que mejora el rendimiento general del video en todas las plataformas de escritorio. Notificación del uso de características 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, enfocado en habilitar características y funcionalidades clave para el mercado de juegos, así como en abordar las solicitudes de características populares de los desarrolladores. Algunas de las características en esta versión incluyen las siguientes: Compatibilidad con entrada de teclado en modo de pantalla completa. Compatibilidad de audio mejorada para trabajar con audio de baja latencia. Capacidad de transmitir progresivamente texturas para contenido Stage 3D. Modo protegido para Flash Player en Firefox . Eventos de etiquetas de marco. Compatibilidad para comprimir BitmapData a formatos JPEG y PNG . Compatibilidad con los requisitos de sandboxing de aplicaciones de Mac OS X App Store . Compatibilidad con transmisión de texto para Stage 3D. Información ampliada sobre detalles del controlador de GPU . Dibujo de mapa de bits con API de calidad (nuevo). Lanzamiento fuera de la API de eventos del ratón. Compatibilidad con 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). Compatibilidad con simulador de iOS (Adobe AIR).
- Flash Player 11.4 : Lanzado en agosto de 2012, se centró en habilitar características y funcionalidades clave para el mercado de los videojuegos, así como en atender las solicitudes de características más populares de los desarrolladores. Algunas de las características de esta versión incluyen trabajadores de ActionScript (que permiten la ejecución concurrente de ActionScript en subprocesos separados), compatibilidad con la creación de perfiles avanzados, compatibilidad con la compresión LZMA para ByteArray, compatibilidad con tarjetas de video aceleradas por hardware para Stage 3D ampliada hasta 2006, rendimiento mejorado de ActionScript al dirigirse a Apple iOS, API de índice de rendimiento para informar sobre las capacidades de rendimiento del entorno actual, compatibilidad con texturas comprimidas con soporte alfa, compatibilidad con la API StageVideo.attachCamera y compatibilidad con notificaciones push para iOS (Adobe AIR).
- Flash Player 11.5 : Lanzada 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 con ByteArray compartido para trabajadores de ActionScript, seguimiento de pila de depuración en las versiones estables de Flash Player y diversas correcciones de errores.
- Flash Player 11.6 : Lanzado en marzo de 2013, se centra en mejoras de rendimiento, 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 diálogo de permisos a pantalla completa, la capacidad de cargar archivos SWF en tiempo de ejecución al implementar como una aplicación AIR en modo AOT en iOS, un control más preciso sobre la resolución de pantalla compatible en dispositivos iOS al implementar como una aplicación AIR, compatibilidad con HiDPI para Flash Professional y acceso a operaciones/funciones intrínsecas de memoria rápidas mediante ActionScript 3.
- Flash Player 11.7 : Lanzada en junio de 2013 con el nombre en clave "Geary", esta versión se centra en vídeo de alta calidad, juegos, seguridad y estabilidad. Algunas de las características previstas para esta versión incluyen la depuración de tiempo de ejecución cautivo de Android, compatibilidad con el controlador OUYA , alojamiento remoto de archivos SWF en iOS y la 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 clave "Harrison". Esta versión se centraba en vídeo de alta calidad, juegos, seguridad y estabilidad. Algunas de las características incluidas habrían sido la API de parada recursiva en MovieClips y la compatibilidad con GamePad en navegadores de escritorio y Android.
Cronología 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. [ 11 ] Esta fue la primera versión de ActionScript con influencias de JavaScript y el estándar ECMA-262 (Tercera Edición), compatible con 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 . Cabe destacar que ActionScript ahora también se podía escribir con un editor de texto en lugar de ensamblarse eligiendo acciones de listas desplegables y controles de cuadros de diálogo. Con el siguiente lanzamiento de su herramienta de autoría, 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 instrucción switch 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 tipado flexible y su dependencia de la herencia basada en prototipos . El tipado flexible se refiere a la capacidad de una variable para almacenar cualquier tipo de dato. Esto permite un desarrollo rápido de scripts y es particularmente adecuado para proyectos de scripting 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 `class` que define las 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 reproductor correspondiente, 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 incorporó 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 orientada a objetos más estructurado, el código aún se compilaría a bytecode de ActionScript 1.0 , lo que permitió usarlo también en el anterior Flash Player 6. En otras palabras, la sintaxis de herencia basada en clases era una capa sobre el sistema existente basado en prototipos. Con ActionScript 2.0, los desarrolladores podían restringir las variables a un tipo específico agregando una anotación de tipo para que los errores de incompatibilidad de tipos pudieran encontrarse en tiempo de compilación . ActionScript 2.0 también introdujo la sintaxis de herencia basada en clases, lo que permitió a los desarrolladores crear clases e interfaces, de forma similar a como lo harían en lenguajes basados en clases como Java y C++ . Esta versión se ajustaba parcialmente al borrador de la 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 utilizar una máquina virtual completamente diferente . Flash Player 9 contiene dos máquinas virtuales: AVM1 para el código escrito en ActionScript 1.0 y 2.0, y AVM2 para el contenido escrito en ActionScript 3.0. ActionScript 3.0 añadió soporte limitado para la aceleración por hardware ( DirectX , OpenGL ).
La actualización del idioma introdujo varias características nuevas:
- Verificación de tipos en tiempo de compilación y en tiempo de ejecución : la información de tipos existe tanto en tiempo de compilación como en tiempo de ejecución.
- Rendimiento mejorado gracias a un sistema de herencia basado en clases, independiente del sistema de herencia basado en prototipos.
- Compatibilidad con paquetes , espacios de nombres y expresiones regulares .
- Se compila en un tipo de código de bytes completamente nuevo , incompatible con el código de bytes de ActionScript 1.0 y 2.0.
- API de Flash Player revisada , organizada en paquetes .
- Sistema unificado de gestión de eventos basado en el estándar de gestión de eventos DOM .
- Integración de ECMAScript para XML (E4X) con fines de procesamiento de XML .
- Acceso directo a la lista de visualización en tiempo de ejecución de Flash para un control total de lo que se muestra durante la ejecución.
- Implementación que cumple totalmente con el borrador de la especificación de la cuarta edición de ECMAScript .
- Soporte limitado para objetos 3D dinámicos (rotación en los ejes X, Y y Z, y mapeo de texturas).
Linterna
- 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. Compatible con Flash 4 ActionScript.
- Flash Lite 1.1 : Se agregó compatibilidad con Flash 4 ActionScript y API adicionales para dispositivos.
- Flash Lite 2.0 y 2.1 : Se agregó compatibilidad con Flash 7 ActionScript 2.0 y algunas funciones adicionales de la API fscommand2.
- Flash Lite 3 : Se ha añadido compatibilidad con Flash 8 ActionScript 2.0 y también con la reproducción de vídeo FLV .
- Flash Lite 4 : Se agregó compatibilidad con Flash 10 ActionScript 3.0 como complemento del navegador y también aceleración gráfica por hardware.
AIRE
Adobe AIR es compatible con ActionScript, además de ofrecer contenido adicional, como el motor Stage3D desarrollado por Adobe. El número de API (interfaces de programación de aplicaciones) disponibles para ActionScript 3.0 también ha aumentado considerablemente.
Sintaxis
El código ActionScript es de formato libre y, por lo tanto, puede crearse con cualquier cantidad o estilo de espacios en blanco que el autor desee. La sintaxis básica 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 ), que tiene 100 píxeles de ancho y alto. Luego, el textparámetro se establece en la cadena " Hello, world " y se muestra automáticamente en el reproductor:
createTextField ( "greet" , 0 , 0 , 0 , 100 , 100 ); greet . text = "Hola, mundo" ;Al escribir archivos de clase ActionScript 2.0 externos, el ejemplo anterior podría escribirse en un archivo llamado Greeter.as de la siguiente manera.
paquete org . wikipedia . example { import flash . display . MovieClip ;class Greeter extends MovieClip { public function Greeter () { var txtHello : TextField = this . createTextField ( "txtHello" , 0 , 0 , 0 , 100 , 100 ); txtHello . text = "Hola, mundo" ; } } }ActionScript 3.0
ActionScript 3.0 tiene una sintaxis similar a la de 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 txtHello : TextField = new TextField (); txtHello.text = " Hola Mundo " ; this.addChild ( txtHello ) ;Los programas mínimos de ActionScript 3.0 pueden ser algo más grandes y complejos debido a la mayor separación entre el lenguaje de programación y el entorno de desarrollo integrado (IDE) de Flash.
Supongamos que el siguiente archivo es Greeter.as :
paquete org.wikipedia.example { import flash.display.Sprite ; import flash.text.TextField ;public class Greeter extends Sprite { public function Greeter () { var txtHello : TextField = new TextField (); txtHello . text = "Hello World" ; this . addChild ( txtHello ); } } }ActionScript 3 también se puede utilizar en archivos MXML cuando se utiliza el framework Flex de Apache :
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx= "http://ns.adobe.com/mxml/2009" xmlns:s= "library://ns.adobe.com/flex/mx/polysylabi" xmlns:mx= "library://ns.adobe.com/flex/mx" layout= "vertical" creationComplete= "initApp()" ><fx:Script> <![CDATA[ public function initApp (): void { // Imprime nuestro mensaje "¡Hola, mundo!" en el título title . text = " ¡Hola, mundo!" ; } ]]> </fx:Script><s:Label id= "title" fontSize= "54" fontStyle= "bold" /> </s:Application>Estructuras de datos
Tipos de datos
ActionScript se compone 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 de Java . Dado que ActionScript 3 supuso una reescritura completa de ActionScript 2, los tipos de datos y su herencia han cambiado.
Tipos de datos de nivel superior de ActionScript 2
- Cadena : Una lista de caracteres como "Hola Mundo"
- Número : Cualquier valor numérico
- Booleano : Un simple almacenamiento binario que solo puede ser "verdadero" o "falso".
- Objeto : El objeto es el tipo de dato 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
Existen otros tipos de datos "complejos". Estos requieren más procesamiento 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 el uso sencillo de objetos visibles.
- TextField : Un campo de texto simple, dinámico o de entrada. Hereda el tipo MovieClip.
- Botón : Un botón simple con 4 estados: Arriba, Sobre, Abajo y Golpe. Hereda el tipo MovieClip.
- Fecha : Permite acceder a información sobre un momento específico.
- Matriz : Permite el almacenamiento lineal de datos.
- XML : Un objeto XML
- XMLNode : Un nodo XML
- LoadVars : Un objeto LoadVars permite almacenar y enviar variables HTTP POST y HTTP GET.
- Sonido
- NetStream
- Conexión de red
- Cargador de clips de películas
- EventListener
Tipos de datos primitivos (prime) de ActionScript 3 [ 12 ]
- Booleano : El tipo de dato booleano solo tiene dos valores posibles: verdadero y falso, o 1 y 0. No se admiten otros valores.
- int : El tipo de dato int es un entero de 32 bits entre -2.147.483.648 y 2.147.483.647.
- Nulo : El tipo de datos Nulo contiene un único valor, nulo. Este es el valor predeterminado para el tipo de datos Cadena y todas las clases que definen tipos de datos complejos, incluida la clase Objeto.
- Número : El tipo de datos Número puede representar 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 especificado por el estándar IEEE para aritmética binaria de punto flotante ( IEEE-754 ). El tipo Número puede almacenar enteros entre -9.007.199.254.740.992 (-2 53 ) y 9.007.199.254.740.992 (2 53 ), y valores de punto flotante entre Number.MAX_VALUE (1,79769313486231e+308) y Number.MIN_VALUE (4,940656458412467e-324).
- Cadena : El tipo de datos Cadena representa una secuencia de caracteres de 16 bits. Las cadenas 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 void contiene un único valor: undefined. En versiones anteriores de ActionScript, undefined era el valor predeterminado para las instancias de la clase Object. En ActionScript 3.0, el valor predeterminado para las instancias de Object es null.
ActionScript 3 algunos tipos de datos complejos [ 12 ]
- Array : 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 convertirse de nuevo a su tipo original después de recuperarlos (recientemente se ha añadido compatibilidad con Arrays tipados con la clase Vector).
- Fecha : Un objeto de fecha que contiene la representación digital de la fecha y la hora.
- Error : Un objeto de error genérico que permite informar sobre errores en tiempo de ejecución cuando se lanza como una excepción.
- flash.display:Bitmap : Un objeto de visualización de mapa de bits no animado.
- flash.display:MovieClip : Objeto de visualización de clip de película animado; la línea de tiempo de Flash es, por defecto, un MovieClip.
- flash.display:Shape : Un objeto de forma vectorial no animado.
- flash.display:SimpleButton : Un tipo de botón interactivo simple que admite los estados "arriba", "sobre" y "abajo" con un área de pulsación arbitraria.
- flash.display:Sprite : Un contenedor de objetos de visualización sin línea de tiempo.
- flash.media:Video : Un objeto de reproducción de vídeo que admite transporte directo (descarga progresiva) o en streaming (RTMP). A partir de la versión 9.0.115.0 de Flash Player, también se admite el formato de vídeo de alta definición H.264/MP4 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 binarios en bytes.
- 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 Objeto se define mediante la clase Objeto. La clase Objeto sirve como clase base para todas las definiciones de clases en ActionScript. Los objetos en su forma básica se pueden usar como matrices asociativas que contienen pares clave-valor, donde las claves son cadenas de texto y los valores pueden ser de cualquier tipo.
- RegExp : Un objeto de expresión regular para cadenas de caracteres.
- Vector : Una variante de array compatible con la publicación en Flash Player 10 o superior. Los vectores son arrays densos y tipados (los valores deben estar definidos o ser nulos), de longitud fija y con comprobación de límites durante la recuperación. Los vectores no solo ofrecen mayor seguridad de tipos que los arrays, sino que también son más rápidos.
- XML : Un objeto XML revisado basado en el estándar E4X (ECMA-357); se accede a los nodos y atributos de forma diferente a como se hace en los objetos de ActionScript 2.0 (se proporciona una clase heredada llamada XMLDocument para garantizar la compatibilidad con versiones anteriores).
- XMLList : Un objeto basado en matrices para realizar diversas búsquedas de contenido en la clase XML.
Utilizando tipos de datos
La sintaxis básica es:
var variableName : VariableType = new VariableType ( param1 , param2 , ... , paramN );Entonces, para crear un objeto vacío:
var myObject : Object = new Object ();O, de forma informal:
var myObject = {};Algunos tipos se configuran automáticamente:
var myString : String = "Hello Wikipedia!" ; // Esto establecería automáticamente la variable como una cadena. var myNumber : Number = 5 ; // Esto haría lo mismo para un número. var myObject : Object = { param1 : "Hi!" , param2 : 76 }; // Esto crea un objeto con dos variables. // param1 es una cadena con los datos "Hi!", // y param2 es un número con los datos 76.// Esta es la sintaxis para crear automáticamente un Array. var myArray : Array = [ 5 , "Hello!" , { a : 5 , b : 7 }]; // Crea un Array con 3 variables. // La primera (0) es un número con el valor 5, // la segunda (1) es una cadena con el valor "Hello!", // y la tercera (2) es un objeto con { a: 5, b: 7 }.A diferencia de algunos lenguajes orientados a objetos, ActionScript no distingue entre tipos primitivos y tipos de referencia . En ActionScript, todas las variables son tipos de referencia. Sin embargo, los objetos que pertenecen a los tipos de datos primitivos, que incluyen Boolean, Number, int, uint y String, son inmutables. [ 13 ]
Por lo tanto, si se pasa una variable de un tipo supuestamente primitivo, por ejemplo, un entero, a una función, modificar esa variable dentro de la función no alterará la variable original, ya que se crea un nuevo objeto entero dentro de la función. Si se pasa una variable de otro tipo de dato (no primitivo), por ejemplo XML, a una función, modificar esa variable dentro de la función también alterará la variable original, ya que no se crea un nuevo objeto XML.
A algunos tipos de datos se les pueden asignar valores con literales :
var item1 : String = "ABC" ; var item2 : Boolean = true ; var item3 : Number = 12 ; var item4 : Array = [ "a" , "b" , "c" ]; var item5 : Object = { name : "Actionscript" , version : "3.0" }; var item6 : XML = < node >< child /></ node >; // Tenga en cuenta que el XML primitivo no está entre comillasEn ActionScript, una referencia es un puntero a una instancia de una clase. Una referencia almacena la dirección de memoria de un objeto; las operaciones que se realizan sobre referencias siguen el valor de la referencia hasta la dirección de memoria del objeto y ejecutan la operación sobre este. En ActionScript, todos los objetos se acceden mediante referencias, en lugar de accederse directamente a ellos.
var item1 : XML = new XML ( "<node><child /></node>" ); var item2 : XML = item1 ; item2 . firstChild . attributes . value = 13 ; // item1 ahora es igual a item2 ya que item2 simplemente apunta a lo que apunta item1. // Ambos son ahora: // <node><child value="13" /></node>Solo se pueden eliminar las referencias a un objeto mediante la palabra clave "delete". La eliminación de objetos y datos la realiza el recolector de basura de Flash Player, que comprueba si existen referencias al objeto huérfano en la memoria Flash. Si no encuentra ninguna (es decir, si no hay ninguna otra referencia al objeto huérfano), este se elimina de la memoria. Por este motivo, la gestión de memoria en ActionScript requiere una planificación cuidadosa del desarrollo de la aplicación.
var item1 : XML = new XML ( "<node><child /></node>" ); delete item1 ; // Si no hay ninguna otra referencia a item1 en ninguna otra parte de la aplicación, // se eliminará en la siguiente pasada del recolector de basura.Protección de código
Al igual que la mayoría de los formatos de archivo de bytecode , los archivos Flash SWF se pueden descompilar en su código fuente y recursos (de forma similar a como se descompilan los archivos Microsoft .NET ). Algunos descompiladores son capaces de reconstruir casi por completo el archivo fuente original, aproximándose al código real que se utilizó durante su creación (aunque los resultados varían según el caso). [ 14 ] [ 15 ] [ 16 ]
En contraposición a los descompiladores, se han introducido ofuscadores de ActionScript , que transforman el código en un formato que dificulta la salida del descompilador, a la vez que preservan la funcionalidad y la estructura del programa. Los ofuscadores de mayor calidad implementan transformaciones léxicas como el cambio de nombre de identificadores, la transformación del flujo de control y la transformación de la abstracción de datos, lo que dificulta que los descompiladores generen una salida que pueda ser útil para un humano. Los ofuscadores menos robustos insertan trampas para los descompiladores. Estos ofuscadores pueden provocar que el software de descompilación falle inesperadamente o que genere código fuente ininteligible.
Referencias
- ↑ RFC 4329 (límite compatible con ECMAScript)
- ↑ "La década perdida de Apple, HyperCard y lo que podría NO haber sido si Apple entonces hubiera sido como Apple es hoy" . ZDNet . 17 de abril de 2011. Archivado del original el 21 de abril de 2011. Consultado el 4 de diciembre de 2014 .
- ↑ "Especificación del lenguaje ActionScript 3" . Archivado del original el 27 de marzo de 2017. Consultado el 12 de noviembre de 2016 .
- ↑ Brimelow, Lee (18 de agosto de 2008). "Seis razones para usar ActionScript 3.0" . Adobe Systems Incorporated . Recuperado el 18 de junio de 2010 .
- ↑ Grossman, Gary; Huang, Emmy (27 de junio de 2006). "Descripción general de ActionScript 3.0" . Adobe Systems Incorporated . Recuperado 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 para Netscape" . Netscape . Archivado del original el 11 de julio de 2007. Recuperado 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 .
- ↑ "Adobe Labs – Adobe Flash Player 10.1" . Labs.adobe.com. Archivado del 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 del 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 .
- 1 2 "Descripciones de tipos de datos + Documentación de Flash CS3" . Archivado del original el 2 de noviembre de 2007. Recuperado el 13 de julio de 2007 .
- ↑ "Flex 3 – Parámetros de función" . Livedocs.adobe.com. Archivado del original el 12 de febrero de 2009. Consultado el 17 de diciembre de 2009 .
- ↑ "Análisis independiente de otro descompilador" . Flashmagazine.com. 21 de octubre de 2007. Archivado del original el 20 de junio de 2017. Consultado el 22 de abril de 2013 .
- ↑ "Comentarios de clientes sobre un descompilador de Flash" . Topshareware.com. Archivado del original el 8 de noviembre de 2016. 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
- Sitio web oficial , Centro de Tecnología ActionScript
- Referencia del lenguaje ActionScript 2.0 archivada el 31 de enero de 2013 en Wayback Machine .
- Referencia del lenguaje y los componentes de ActionScript 3.0
- Elementos del lenguaje
- Resumen del paquete
- Apéndices
- Flex 3 LiveDocs: Programación de ActionScript 3.0
- Centro para desarrolladores de Adobe Flash
- SDK de Adobe Flex
- Warren, Tom (25 de julio de 2017). "Adobe finalmente eliminará Flash en 2020" . The Verge . Archivado del original el 25 de julio de 2017. Consultado el 16 de diciembre de 2020 .
- ActionScript
- Adobe Flash
- Lenguajes de programación basados en clases
- Familia de lenguajes de programación JavaScript
- Lenguajes de scripting
- Lenguajes de programación creados en 1998
- Software de 1998
- Lenguajes de programación de alto nivel
- Lenguajes de programación compilados a código de bytes
- Lenguajes de programación de tipado estático
