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 adquirida por Adobe ). Está influenciado por HyperTalk , el lenguaje de scripting para HyperCard . [3] Ahora es una implementación de ECMAScript (lo que significa que es un superconjunto de la sintaxis y semántica del lenguaje más conocido como JavaScript ), aunque originalmente surgió como un lenguaje hermano, ambos influenciados por HyperTalk . El código ActionScript generalmente se convierte a formato de bytecode 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 integrados .
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 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 pantallas de visualización frontal .
Descripción general
ActionScript fue diseñado inicialmente para controlar animaciones vectoriales bidimensionales simples realizadas en Adobe Flash (anteriormente Macromedia Flash). Inicialmente enfocado en la animación, las primeras versiones del contenido Flash ofrecían pocas funciones de interactividad, por lo que tenían una capacidad de creación de scripts muy limitada. Las versiones posteriores agregaron funcionalidad que permite la creación de juegos basados en la web y aplicaciones web enriquecidas con medios de transmisión (como video y audio). Hoy, ActionScript es adecuado para el desarrollo de escritorio y móvil a través de Adobe AIR; se utiliza en algunas aplicaciones de base 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 al programar algo en lugar de animarlo, lo que normalmente también permite un mayor nivel de flexibilidad durante la edición.
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á pensada para 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 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 heredado debido a las mejoras del compilador Just-In-Time . [6]
Las bibliotecas Flash se pueden utilizar con las capacidades XML del navegador para reproducir contenido enriquecido en el navegador. Esta tecnología se conoce como Flash y XML asíncronos, al igual que AJAX. Adobe ofrece su línea de productos Flex para satisfacer la demanda de aplicaciones web enriquecidas creadas en el entorno de ejecución Flash, con comportamientos y programación realizados en ActionScript. ActionScript 3.0 constituye 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 de Flash de Macromedia , desarrollada posteriormente por Adobe Systems como Adobe Flash. Las tres primeras versiones de la herramienta de creación de 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 un marco. El conjunto de acciones consistía en controles de navegación básicos, con comandos como "reproducir", "detener", "obtenerURL" 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 , instrucciones if y bucles . Aunque internamente se hacía referencia a ellas como "ActionScript", el manual del 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 : soporte ampliado para scripts básicos, tiene la capacidad de cargar SWF externos (loadMovie).
- Flash Player 4 : el primer reproductor con una implementación de scripting completa (llamada Actions ), el scripting era una sintaxis basada 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, [7] y permitía una programación totalmente procedimental y una programación orientada a objetos. Desarrollo basado en diseño.
- Flash Player 6 agregó un modelo de manejo de eventos, controles de accesibilidad y compatibilidad con switch . La primera versión con compatibilidad con Action Message Format (AMF) y Real-Time Messaging Protocol (RTMP) permitió la transmisión de audio y video a pedido.
- Flash Player 7 : se han añadido elementos como el estilo de hojas de estilo en cascada ( CSS ) para el texto y compatibilidad con ActionScript 2.0, un lenguaje de programación basado en la propuesta de Netscape ECMAScript 4 [8] con herencia basada en clases . Sin embargo, ActionScript 2.0 puede compilarse en 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 al agregar nuevas bibliotecas de clases con API para controlar datos de mapa de bits en tiempo de ejecución, cargas de archivos y filtros en vivo para desenfoque y sombras proyectadas .
- 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. Las mejoras de rendimiento fueron un objetivo principal para esta versión del reproductor, incluido un nuevo compilador Just-in-Time (JIT). Se agregó compatibilidad con sockets binarios, análisis de XML ECMAScript para XML (E4X), modo de pantalla completa y expresiones regulares. Esta es la primera versión del reproductor que se llama 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 . Capacidad para crear filtros personalizados usando Adobe Pixel Bender . Varias tareas de procesamiento visual ahora se descargan a la GPU, lo que brinda una disminución notable en el tiempo de renderizado para cada cuadro, lo que resulta en velocidades de cuadro 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 punto a punto ( P2P ) con el Protocolo de flujo de medios en tiempo real (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 de compatibilidad significativas 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 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, renderizado de alimentación 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 algunas otras adiciones menores. [11]
- Flash Player 11.2 : lanzado en marzo de 2012, enfocado en agregar características que son clave para los mercados de videojuegos y video. Algunas de las características en la versión incluyen lo siguiente: Compatibilidad con bloqueo de mouse. Compatibilidad con clic derecho y central del mouse. 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 expandir la disponibilidad de contenido acelerado por hardware. Nueva API de evento Throttle (envía un evento cuando Flash Player acelera, pausa o reanuda el contenido). Canal de decodificación de video multiproceso en PC, que mejora el rendimiento general del video en todas las plataformas de escritorio. Notificación de uso de características premium en los reproductores de depuración; el contenido se ejecuta sin restricciones en los reproductores de la versión 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 solicitudes de características populares de los desarrolladores. Algunas de las características de 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 para transmitir texturas progresivamente para contenido Stage 3D. Modo protegido para Flash Player en Firefox . Eventos de etiqueta de marco. Compatibilidad con la compresión de BitmapData a formatos JPEG y PNG . Compatibilidad con los requisitos de sandbox de aplicaciones de Mac OS X App Store . Compatibilidad con 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). Versión de API de eventos de mouse externos. Compatibilidad con actualización silenciosa de Flash Player para Mac OS. Compatibilidad con lápiz 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 juegos, así como en abordar las solicitudes de características más 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), compatibilidad con creación de perfiles avanzada, compatibilidad con compresión LZMA para ByteArray, compatibilidad con tarjetas de video aceleradas por hardware para Stage 3D ampliada a 2006, rendimiento mejorado de ActionScript al apuntar a Apple iOS, API de índice de rendimiento para informar sobre las capacidades de rendimiento del entorno actual, compatibilidad con texturas comprimidas con compatibilidad alfa, compatibilidad con la API StageVideo.attachCamera y compatibilidad con notificaciones push para iOS (Adobe AIR).
- Flash Player 11.5 : lanzado en noviembre de 2012, se centró en mejorar el 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 versiones de lanzamiento 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 al implementar como una aplicación AIR en modo AOT en iOS, 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 de ActionScript 3 a operaciones de memoria rápidas/intrínsecos.
- Flash Player 11.7 : lanzado en junio de 2013, con el nombre en código "Geary", este lanzamiento se centra en video premium, juegos, seguridad y estabilidad. Algunas de las características planeadas para este lanzamiento incluyen depuración de 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 tenía previsto lanzar esta versión a principios de la segunda mitad de 2013, con el nombre en código "Harrison". Esta versión se centraba en los vídeos de alta calidad, los juegos, la seguridad y la estabilidad. Algunas de las funciones de esta versión incluían una API de detención 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 admitía el modelo de objetos de dicho estándar y muchos de sus tipos de datos principales . Las variables locales se pueden declarar con la declaració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 puede 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 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 switch y el operador de "igualdad estricta" ( === ), que lo acercó a ser compatible con ECMA-262 . Dos características importantes de ActionScript que lo distinguen de las versiones posteriores son su sistema de tipos flexibles y su dependencia de la herencia basada en prototipos . La herencia basada en prototipos se refiere a la capacidad de una variable para contener cualquier tipo de datos. Esto permite un desarrollo rápido de scripts y es particularmente adecuado para proyectos de scripts 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 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 vínculo 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 incluyó comprobació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 se compilaría en el bytecode de ActionScript 1.0 , lo que también permitió su uso en el Flash Player 6 anterior. 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 falta de coincidencia de tipos se pudieran encontrar en tiempo de compilación . ActionScript 2.0 también introdujo una sintaxis de herencia basada en clases para que los desarrolladores pudieran crear clases e interfaces, de forma muy similar a como lo harían en lenguajes basados en clases como Java y C++ . Esta versión se ajustaba parcialmente a la especificación preliminar 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 fue una reestructuración fundamental del lenguaje, tanto 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 aceleración de hardware ( DirectX , OpenGL ).
La actualización del lenguaje 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. Admite Flash 4 ActionScript.
- Flash Lite 1.1 : se agregaron compatibilidad con Flash 4 ActionScript y API de dispositivos adicionales.
- Flash Lite 2.0 y 2.1 : se agregó soporte para Flash 7 ActionScript 2.0 y alguna API fscommand2 adicional.
- 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 de hardware.
AIRE
Adobe AIR es compatible con ActionScript, además de con algunos contenidos ampliados, 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 drásticamente.
Sintaxis
El código ActionScript es de formato libre y, por lo tanto, puede crearse con la cantidad o el estilo de espacios en blanco que desee el autor. La sintaxis básica se deriva de ECMAScript .
ActionScript 2.0
El código siguiente, que funciona en cualquier reproductor compatible, crea un campo de texto con 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 parámetro se establece en la cadenatext
" Hola, mundo " y se muestra automáticamente en el reproductor:
createTextField ( "saludar" , 0 , 0 , 0 , 100 , 100 ); saludar.text = "Hola , mundo " ;
Al escribir archivos de clase externos de ActionScript 2.0, el ejemplo anterior podría escribirse en un archivo llamado Greeter.as como se muestra a continuación.
clase com . ejemplo . Greeter extiende MovieClip { función pública 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 ActionScript 2.0, pero un conjunto diferente de API para crear objetos. Compare el script que aparece a continuación con la versión anterior de ActionScript 2.0:
var txtHola : CampoDeTexto = new CampoDeTexto (); txtHola .text = " Hola Mundo" ; this .addChild ( 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 el entorno de desarrollo integrado (IDE) Flash.
Supongamos que el siguiente archivo es Greeter.as :
paquete com.example { importar flash.text.TextField ; importar flash.display.Sprite ; clase pública Greeter extiende Sprite { función pública Greeter () { var txtHello : TextField = new TextField (); txtHello . text = "Hola mundo" ; addParent ( txtHello ); } } }
ActionScript 3 también se puede utilizar en archivos MXML cuando se utiliza el marco Flex de Apache :
<?xml version="1.0" encoding="utf-8"?> <s:Aplicación xmlns:fx= "http://ns.adobe.com/mxml/2009" xmlns:s= "biblioteca://ns.adobe.com/flex/mx/polysylabi" xmlns:mx= "biblioteca://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:Etiqueta id= "título" fontSize= "54" fontStyle= "negrita" /> </s:Aplicación>
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 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
- Cadena : una lista de caracteres como "Hola mundo"
- Número : Cualquier valor numérico
- Booleano : un almacenamiento binario simple que sólo puede ser "verdadero" o "falso".
- Objeto : Objeto es el tipo de datos del que heredan todos los tipos de datos complejos. Permite la agrupación de métodos, funciones, parámetros y otros objetos.
Tipos de datos complejos de ActionScript 2
Existen otros tipos de datos "complejos". Estos consumen 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 objetos visibles.
- TextField : campo de texto dinámico o de entrada simple. Hereda el tipo MovieClip.
- Botón : Un botón simple con 4 cuadros (estados): Arriba, Encima, Abajo y Golpear. Hereda el tipo MovieClip.
- Fecha : Permite acceder a información sobre un punto específico en el tiempo.
- Matriz : permite el almacenamiento lineal de datos.
- XML : Un objeto XML
- XMLNode : un nodo XML
- LoadVars : un objeto Load Variables permite almacenar y enviar variables HTTP POST y HTTP GET
- Sonido
- Transmisión de red
- Conexión de red
- Cargador de clips de película
- Escucha de eventos
Tipos de datos primitivos (principales) de ActionScript 3 [13]
- Booleano : el tipo de datos booleano solo tiene dos valores posibles: verdadero y falso o 1 y 0. Ningún otro valor es válido.
- int : El tipo de datos int es un entero de 32 bits entre -2.147.483.648 y 2.147.483.647.
- Null : el tipo de datos Null contiene solo un valor, null. 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, números 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 números 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 Número.MAX_VALUE (1.79769313486231e+308) y Número.MIN_VALUE (4.940656458412467e-324).
- Cadena : el tipo de datos String 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 solo un 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 [13]
- Matriz : contiene una lista de datos. Aunque ActionScript 3 es un lenguaje fuertemente tipado, el contenido de una matriz puede ser de cualquier tipo y los valores deben volver a su tipo original después de la recuperación (recientemente se agregó compatibilidad con matrices tipadas con la clase Vector).
- Fecha : Un objeto de fecha que contiene la representación digital de fecha/hora.
- Error : un objeto de error genérico que permite informar 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, 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 los estados "arriba", "encima" y "abajo" con un área de impacto arbitraria.
- flash.display:Sprite : Un contenedor de objetos de visualización sin una línea de tiempo.
- flash.media:Video : objeto de reproducción de vídeo compatible con transportes directos (descarga progresiva) o de transmisión (RTMP). A partir de la versión 9.0.115.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, 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 de objeto se define mediante la clase Object. La clase Object sirve como clase base para todas las definiciones de clase en ActionScript. Los objetos en su forma básica se pueden utilizar como matrices asociativas que contienen pares clave-valor, donde las claves son cadenas y los valores pueden ser de cualquier tipo.
- RegExp : un objeto de expresión regular para cadenas.
- Vector : una variante de matriz compatible con la publicación para Flash Player 10 o superior. Los vectores son matrices densas y tipificadas (los valores deben estar definidos o ser nulos) que pueden tener una longitud fija y cuyos límites se controlan durante la recuperación. Los vectores no solo son más seguros que las matrices, 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 al objeto ActionScript 2.0 (se proporciona una clase heredada denominada XMLDocument para compatibilidad con versiones anteriores).
- XMLList : un objeto basado en matriz para diversas búsquedas de contenido en la clase XML.
Uso de tipos de datos
La sintaxis básica es:
var nombreVariable : TipoVariable = new TipoVariable ( parámetro1 , parámetro2 , ... , parámetroN );
Entonces, para crear un objeto vacío:
var miObjeto : Objeto = nuevo Objeto ();
O, de manera informal:
Algunos tipos se instalan automáticamente:
var myString : String = "¡Hola 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 : "¡Hola!" , param2 : 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 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 de 5, // la segunda (1) es una cadena con el valor de "¡Hola!", // y la tercera (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 los tipos de datos primitivos, que incluyen Boolean, Number, int, uint y String, son inmutables. [14]
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 int dentro de la función. Si se pasa una variable de otro tipo de datos (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 ningún objeto XML nuevo.
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 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 realizarán la operación sobre ese objeto. En ActionScript, se accede a todos los objetos a través de referencias en lugar de hacerlo directamente.
var item1 : XML = new XML ( "<node><child /></node>" ); var item2 : XML = item1 ; item2 . firstChild . attribute . value = 13 ; // item1 ahora es igual a item2 ya que item2 simplemente apunta a lo que item1 apunta. // Ambos son ahora: // <node><child value="13" /></node>
Sólo se pueden eliminar las referencias a un objeto mediante la palabra clave "delete". La eliminación de objetos y datos reales la realiza el recolector de elementos no utilizados de Flash Player, que comprueba si existen referencias en el espacio de memoria Flash. Si no se encuentra ninguna (no se hace ninguna otra referencia al objeto huérfano), 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 otra referencia a item1 en ningún otro lugar de la aplicación, // se eliminará en el próximo paso del recolector de basura
Protección de código
Al igual que la mayoría de los formatos de archivos de código de bytes , los archivos SWF de Flash se pueden descompilar en su código fuente y sus recursos (de manera similar a cómo se pueden descompilar los archivos .NET de Microsoft ). 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 al tiempo que preserva 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, que en conjunto hacen que sea más difícil para los descompiladores generar una salida que pueda ser útil para un ser humano. Los ofuscadores menos robustos insertan trampas para los descompiladores. Dichos ofuscadores hacen que el software del descompilador se bloquee inesperadamente o genere código fuente ininteligible. [ cita requerida ]
Referencias
- ^ Nelson, Gary (28 de abril de 2020). "Cómo ActionScript prefiguró a TypeScript". Medium . Consultado el 9 de julio de 2022 .
- ^ RFC 4329 (límite compatible con EcmaScript)
- ^ "La década perdida de Apple, HyperCard y lo que podría NO haber sido si Apple en aquel entonces fuera como Apple 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 usar ActionScript 3.0». Adobe Systems Incorporated . Consultado 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 . 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 Netscape para ECMAScript 4». 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 .
- ^ "Adobe Labs – 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 de terceros de otro descompilador". Flashmagazine.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 de 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
Wikilibros tiene un libro sobre el tema: Programación ActionScript
Wikilibros tiene un libro sobre el tema: Introducción a ActionScript 2.0
Wikiversidad tiene recursos de aprendizaje sobre ActionScript:Introducción
- Sitio web oficial de ActionScript Technology Center
- 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
- Centro para desarrolladores de Adobe Flash
- Kit de desarrollo de software Adobe Flex
- Warren, Tom (25 de julio de 2017). «Adobe finalmente eliminará Flash en 2020». The Verge . Archivado desde el original el 25 de julio de 2017. Consultado el 16 de diciembre de 2020 .