2012-05-03 18 views
5

EL OBJETIVO:AIRE AS3 para android - Aplicación-entorno limitado de contenido ERROR

Estoy tratando de permitir que los archivos SWF cargados externamente se comunican entre sí a nivel local que se cargan desde el dispositivo. Necesito poder acceder a vars, funciones y objetos. He accheived este mientras que el contenido SWF de carga de la web aquí: as3 externally loaded swf from network to control externally loaded swf from network

pero cuando me dan al usuario la opción de cargar desde el dispositivo O DE LÍNEA ... Los archivos SWF de dispositivo no pueden comunicarse entre sí. Específicamente, el swf cargado no puede obtener información de su padre.

A continuación se muestra el código que funciona cuando se carga de línea:

var InsideConent:Object = this.parent.parent as Object; //// GIVES ACCESS TO "Content.swf" 
var ItWorksNow:Sprite = MovieClip(InsideConent.TWO.content).ChildInTWO; /// 

El dispositivo no le gusta este código:

Security.allowDomain("*"); 

Pero cuando se ejecuta en línea que funciona bien. A continuación se muestra el error que recibo cuando lo ejecuto localmente cargado desde el paquete de la APLICACIÓN.

el error:

SecurityError: Error # 3207: Contenido de la aplicación-caja de arena no puede acceder a esta función. en flash.system :: Security $/allowDomain() en Products_fla :: MainTimeline/frame1() No se puede mostrar el código fuente en esta ubicación.

LA PREGUNTA: ¿Hay algo que pueda hacer para que permita que el dominio de seguridad para trabajar de forma local en un dispositivo de AIR para ANDROID así que no tengo que cambiar mi código? - Gracias

+0

Éste debe ser complicado. Nadie quiere tocarlo. –

+0

me encuentro con un problema similar: no encuentro una forma de obtener código simple usando 'Loader' para que funcione cuando está compilado en IDEAS en android. El panel de configuración de seguridad de Global FlashPlayer me redirige a la configuración del complemento de flash para dispositivos móviles, lo que permite configurar solo el almacenamiento y p2p. – www0z0k

+0

intentaste pasar 'LoaderContext' a http: //help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html # load()? – www0z0k

Respuesta

5

Si pone una captura de prueba alrededor de esa línea, no arrojará un error si falla. Y de esta manera, cuando su código funcione en la web y como aplicación. (Aplicaciones no necesitan allowDomain b/c que se descarga todo por defecto y es por eso que falla.)

try {Security.allowDomain("*");}catch (e) { };

+0

¡Excelente! :) ¡Buena idea y funciona también! –

+0

No me preocupo, estaba pensando lo mismo, pero nunca pude resolverlo porque no pude modificar el archivo fuente swf ... heh. Esta es la solución que habría aplicado. – bnns

0

Por lo que sé que no se puede ejecutar el código de swfs cargados en AIR, aún puede usar varios swfs para deshabilitar los activos, pero cualquier código dará ese error.

+0

En realidad puedes. My First swf es un AIR FOR ANDROID y todos los demás son archivos swf regulares y cada uno puede comunicarse entre sí ... es decir, obtener tamaño y controlar objetos en otras películas. Funciona en mi DROID, pero tengo la sensación de que no funcionará en la manzana. No lo he probado todavía Sé que no puedes cargar archivos SWF externos y hacer que ejecuten código con Apple. Entonces he escuchado. –

+1

sí, pero esos archivos SWF se incluyen con su aplicación, y Baris se refería a la carga de archivos SWF fuera de su caja de arena. –

1

Desde mi experiencia puede cargar SWF remotos de otro dominio que está configurado correctamente con el dominio cruzado xml. algo como: https://developers.arcgis.com/flex/guide/using-crossdomain-xml.htm

Puede cargar SWF con código, pero si se intenta acceder a la etapa, por ejemplo, se producirá un error.

Además, si en su proyecto original (alojado todo en un servidor web, usó variables estáticas comunes o singeltons, no tendrá éxito. Mi solución fue agregar funciones en aquellos archivos que reciben los objetos que necesitaba para trabajar