2012-05-03 13 views
5

L'OBIETTIVO:AS3 AIR per Android - Applicazione-sandbox contenuti ERRORE

sto cercando di consentire i file SWF caricati esternamente comunicano tra di loro che sono localmente caricato dal dispositivo. Devo essere in grado di avere accesso a vars, funzioni e oggetti. Ho accheived questo mentre il caricamento di contenuti SWF dal web qui: as3 externally loaded swf from network to control externally loaded swf from network

ma quando ho dare all'utente la possibilità di caricare DA DISPOSITIVO O DA OFFLINE ... I file di dispositivo SWF non può comunicare con l'altro. In particolare, lo swf caricato non può ottenere informazioni dal suo genitore.

Di seguito è il codice che funziona durante il caricamento da online:

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

Il dispositivo non piace di questo codice:

Security.allowDomain("*"); 

Ma quando viene eseguito in linea funziona benissimo. Di seguito è riportato l'errore che ottengo quando lo eseguo localmente caricato dal pacchetto APP.

l'errore:

SecurityError: Errore # 3207: contenuti Application-sandbox non può accedere a questa funzione. in flash.system :: Security $/allowDomain() in Products_fla :: MainTimeline/frame1() Impossibile visualizzare il codice sorgente in questa posizione.

LA DOMANDA: C'è qualcosa che posso fare per rendere consentire dominio di sicurezza per lavorare in locale su un AIR PER dispositivo Android in modo da non devo cambiare il mio codice? - grazie

+0

Questo deve essere difficile. Nessuno lo vuole toccare forse –

+0

mi trovo di fronte a un problema simile: non riesco a trovare un modo per ottenere codice semplice usando 'Loader' per funzionare quando è compilato in IDEAS su Il pannello Impostazioni di sicurezza di Global FlashPlayer mi reindirizza alle impostazioni del flash per dispositivi mobili, consentendo solo di impostare la memoria e p2p. – www0z0k

+0

hai provato a passare 'LoaderContext' a http: //help.adobe.it/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html # load()? – www0z0k

risposta

5

Se si tenta di aggirare la linea, non genera un errore se fallisce. E in questo modo quando il tuo codice funzionerà sul Web e come app. (Applicazioni non hanno bisogno di allowDomain b/c possono scaricare tutto di default ed è per questo non riesce.)

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

+0

Eccellente! :) Ottima idea e funziona anche! –

+0

Nessun problema, stavo meditando la stessa cosa ma non ho mai potuto risolverlo perché non potevo modificare la sorgente swf .... heh. Questa è la soluzione che avrei applicato. – bnns

0

Per quanto ne so non è possibile eseguire codice da swfs caricati in AIR, è comunque possibile utilizzare più swfs per disattivare le risorse ma qualsiasi codice darà quell'errore.

+0

In realtà è possibile. Il mio primo swf è un AIR FOR ANDROID e tutti gli altri sono normali file swf e ognuno può comunicare tra loro .. ovvero ottenere dimensioni e oggetti di controllo in altri film. Funziona sul mio DROID ma ho la sensazione che non funzionerà su Apple. Non l'ho ancora provato. So che non puoi caricare swfs esterni e farli eseguire codice con Apple. Quindi ho sentito. –

+1

sì, ma quei file SWF sono in bundle con la tua APP, e Baris si stava riferendo al caricamento di SWF dalla tua sandbox. –

1

Dalla mia esperienza è possibile caricare file SWF remoti da un altro dominio che è configurato correttamente con il xdom crossdomain. qualcosa come: https://developers.arcgis.com/flex/guide/using-crossdomain-xml.htm

È possibile caricare swf con il codice, ma se si tenta di accedere alla fase ad esempio fallirà.

Inoltre, se nel progetto originale (ospitato tutto su un server Web, sono state utilizzate variabili statiche o singelon comuni, non avrà esito positivo. La mia soluzione è stata l'aggiunta di funzioni su quei file che ricevono gli oggetti di cui avevo bisogno per lavorare