2010-04-15 7 views
0

J'essaie de charger des fichiers SWF externes dans mon application Adobe AIR. Le fichier SWF chargé essaie d'accéder à une URL pour récupérer certaines informations via XML. Lors du démarrage du fichier SWF, il fonctionne correctement. Lors du chargement du fichier SWF à partir du répertoire File.applicationStorageDirectory, j'obtiens une erreur de sécurité car l'application chargée est exécutée dans un sandbox local avec système de fichiers. Première question: Y a-t-il un moyen de changer cela? Que le fichier SWF chargé s'exécute dans un Sandbox réseau?Comportement de sécurité dans Adobe Air

Depuis que cette première tentative n'a pas fonctionné, j'ai déplacé le fichier SWF dans le répertoire app: //. Maintenant, je vais obtenir une erreur de sécurité parce qu'il n'y a pas de fichier de politique sur le serveur disponible où les données XML doivent être récupérées. Deuxième question: Pourquoi le fichier de stratégie n'est-il pas nécessaire lors de l'exécution du fichier SWF lui-même, mais est-il nécessaire lors du chargement des données à partir de l'application Sandbox? Qu'est-ce que je fais mal?

Merci d'avance!

Répondre

1

Voici ma solution.

Je fais une application basée sur ActionScript btw. Mon but ici est de créer une application AIR qui charge différents modules à la demande d'une ressource internet donnée. Les deux applications utilisent l'enfant/parentSandboxBridge pour communiquer.

J'utilisais la classe SWFLoader mais je ne transmettais pas correctement le LoaderContext avec allowLoadBytesCodeExecution (ou allowCodeImport pour AIR2.0). Comme je transmettais un LoaderContext avec la variable mentionnée, j'obtenais un VerifyError: Erreur # 1053: Substitution illégale de activate dans mx.managers.SystemManagerProxy puisque l'application AIR est faite avec Flex 4.0 et le SWF chargé est compilé avec Flex 3.5.

La raison pour laquelle l'erreur a été levée alors que la propriété loadForCompatibility a été définie sur true est que la classe SWFLoader ne définit pas le domaine applicationDomain nécessaire pour la compatibilité lorsqu'un objet LoaderContext est passé. J'ai donc fait le réglage applicationDomain moi-même et tout fonctionne comme un charme. Si quelqu'un s'intéresse à cette procédure, regardez simplement dans la méthode SWFLoader :: loadContent. Dans Flex 4, la partie intéressante commence à la ligne 1836.