restricciones parental olvide eliminar descargar control como codigo apple iphone flash actionscript-3 actionscript air

parental - ¿Es posible insertar o cargar SWF al hacer aplicaciones de iphone?(¿Está permitido por Apple?)



restricciones ios 12 (3)

Estoy un poco confundido sobre si incrustar swfs o cargarlos al hacer aplicaciones para el iphone. ¿Alguien sabe cuáles son las ventajas de cada uno (que es preferible usar)? Sé que los swfs de inserción deberían ser un poco más rápidos que cargarlos, ¿eso es todo?

Además, y esto es algo importante, leí que Apple rechazará cualquier aplicación con swfs externos. ¿Es eso realmente correcto? Si es así, ¿incrustar o cargar dichos swfs resolverá este problema?

Gracias por adelantado

EDITAR: después de buscar un poco, resulta que Apple tiene problemas para cargar swfs externos, aún puede hacerlo, pero su swfs no necesita tener ningún actionscript adjunto, aquí hay un enlace http://whizzkid74.blogspot.com/2010/ 12 / air-for-iphone-loading-external-swf.html Sin embargo, no dice nada acerca de la inclusión de swfs, así que mi pregunta es la siguiente: ¿puede insertar swfs al escribir aplicaciones en el iPhone?

EDITAR Para aclarar, cuando digo SWF externos. Me refiero a los SWF que se encuentran localmente en tu sistema, pero debes agregarlos a tu programa, ya que contienen MovieClips o Sprites, etc., que necesitas. No quise decir SWF que necesita descargar desde un sitio web o una fuente en línea. (espero que aclare las cosas)

EDIT cambió el título de la pregunta ... Problema resuelto, gracias por toda la ayuda chicos y feliz año nuevo = D


No estoy familiarizado con las reglas de las aplicaciones de Apple y iPhone, pero generalmente cuando hago aplicaciones / juegos, incrusto todo. Las ventajas:

  • Tu juego / aplicación está en un solo archivo, lo que facilita compartir
  • Tu juego / aplicación se carga más rápido ya que todos los activos están ahí en tiempo de carga
  • No depende del acceso a Internet para obtener sus activos (si los está cargando desde un sitio), es bueno para una aplicación
  • Tu juego / aplicación "solo funcionará": sin problemas de seguridad, sin problemas con el cambio de URL / el sitio del activo disminuyendo (si son externos)
  • Si usa un swc en lugar de un swf (un swc también puede cargarse por cierto), también puede beneficiarse del estricto tipado

Las desventajas:

  • Si necesita actualizar uno de sus activos, debe volver a publicar el juego / aplicación

La respuesta es sí, puede insertar SWF, pero esa no es la única manera. También puede usar métodos Loader normales, con todo lo relacionado con el archivo SWF principal:

var myLoader:Loader = new Loader(); // iOS apps act as if the main SWF is in a folder // and the other SWFs are in the same (or sub) folders. var url:URLRequest = new URLRequest("loadedSWF.swf"); myLoader.load(url); addChild(myLoader); myLoader.x = 50; myLoader.y = 30;

Con una advertencia: durante el tiempo de compilación (en la "Configuración de Air para iOS", en la lista "Archivos incluidos"), debe enumerar los archivos SWF que desea cargar y se compilarán en el IPA.

Por lo tanto, no puede llamar a SWF externos, pero sin duda puede acceder a otros SWF mediante la etiqueta de inserción o mediante (lo que se podría llamar) incorporación de IPA.

Editar:

Como la pregunta y el título han cambiado un poco desde la primera vez que respondí esto, aquí hay un resumen más genérico. Apple no permite cargar archivos SWF locales de la misma forma en que lo haría si utilizara Flash Player en un sitio web. No hay forma de cargar un archivo SWF (o cualquier otra cosa) utilizando referencias "relativas" o "locales" en un i-device a menos que ese contenido esté compilado en la aplicación. Esto no se aplica a algunos tipos de carga SWF "remota" y tampoco se aplica a la codificación "Nativa" de Actionscript, pero de eso no se trataba la pregunta (original).


Actualización, octubre de 2012:

En Adobe AIR 3.5, adl presenta una característica llamada "soporte SWF múltiple" que permite el uso de cargadores para cargar SWF entregados en el .ipa (archivos locales, no de servidores) para tener código en ellos. El compilador de adl AOT compila los SWF que se incluyen en .ipa, lo que permite que se carguen y funcionen en iOS.

AIR 3.5 se encuentra actualmente en fase beta en el momento de escribir este documento, disponible en el sitio de adobe labs:

Tenga en cuenta que esta característica requiere -swf-version = 18 o más del SWF raíz (no necesariamente los activos que se están cargando) y el espacio de nombre de AIR que termina en 3.5 en el archivo xml de la aplicación.

Respuesta anterior:

Quería actualizar esta respuesta porque he aprendido mucho sobre este tema desde que lo investigué por primera vez.

La raíz del problema es que, al realizar aplicaciones de iOS con AIR, Apple TOS no permite la interpretación en tiempo de ejecución del código, y esto incluye el bytecode de SWF. Así que cargar SWF con código en ellos (incluso comandos de animación simples como stop (), gotoAndPlay (), etc.) no se permite y no funcionará a través de un Loader (antes de AIR 3.5).

  • Tenga en cuenta que está perfectamente bien cargar SWF para su contenido de gráficos vectoriales. Los gráficos se mostrarán, pero el código no se ejecutará.

Sin embargo, hay algunas soluciones para esto. Ambas soluciones evitan un Loader al compilar activos con código en ellos en el SWF principal, porque una vez que son parte del SWF principal, el compilador de AIR (adt) compilará el código en objetivo-c, y todo funcionará bien. en dispositivos con iOS

Usando librerías SWC

Esta es la mejor opción para el desarrollo de iOS. Si compila sus activos gráficos (archivo .fla) en SWC (o exportar SWC desde símbolos en su biblioteca), entonces compile su swf principal contra estos SWC, esto pasa por el compilador y el código actionscript se ejecutará en dispositivos iOS.

Usar SWFMerge para SWF [embed] ed

Incrustar activos en SWF es muy fácil, y se ve así:

[Embed(source="GameLevel.swf")] private var GameLevel:Class; public function main():void { var my_level:* = new GameLevel(); addChild(my_level); }

En este escenario, si gameLevel.swf tiene código, normalmente no funcionaría en iOS, porque el nuevo gameLevel () crearía un Loader e interpretaría el bytecode de SWF. Pero, si primero ejecuta el SWF anterior a través de mi herramienta llamada SWFMerge, tomará su SWF incrustado y lo fusionará en su SWF raíz. Entonces ADT compilará su swf principal (incluido el código incrustado) en el objetivo-C, funcionará en iOS, y tenga en cuenta: nuevo gameLevel () ahora resulta directamente en una instancia de su activo, NO un cargador.

La herramienta SWFMerge está aquí:

http://www.onetacoshort.com/temp/SWFMerge_alpha.swf

Déjame saber en los comentarios si esta solución funciona para ti o si tienes problemas.

Uso de cargadores

Antes de AIR 3.5, si usa un Loader para cargar un archivo SWF (ya sea que este swf esté incluido en su IPA o servido desde un servidor web), los gráficos SWF de destino se cargarán bien, pero no se ejecutará ningún código dentro del SWF, nuevamente porque esto no está permitido por los TOS de Apple.

A partir de AIR 3.5, el empaquetado de archivos SWF en .ipa como activos, usando un Loader funcionará incluso si contienen código, ya que este código ahora es compilado AOT por adt. Esto requiere -swf-version = 18 o más del SWF de raíz (no necesariamente los activos) y el espacio de nombre de AIR que termina en 3.5 en el archivo xml de la aplicación.

Sin embargo, es técnicamente posible interpretar el código de bytes SWF, simplemente es una restricción legal de la Tienda de aplicaciones. Si solo desea probar en un dispositivo iOS y no distribuirá su aplicación a través de la App Store, puede compilar su SWF usando la opción adt -target -target ipa-test-interpreter , y cargar SWF con el código en ellos funcionará.