Flash – Modification du domaine d’application

Posted on 30/03/2011 · Posted in Flash

Cette article fait suite à une incapacité technique de ma part à comprendre les comportements concernant le fonctionnement du domaine d’application.

Voici l’énoncer du problème, nous avons deux fichiers SWF présents sur deux domaines différents.
Nous souhaitons simplement pouvoir utiliser une librairie partagée entre ces deux SWF et donc utiliser des définitions de classes communes.
L’objectif est donc d’utiliser un seul domaine d’application pour les deux SWF.

D’après la méthode officielle,

1
2
3
4
5
6
7
var _loader : Loader = new Loader ();
var _request : URLRequest = new URLRequest ( "http://www.example.com/foo.swf");
var _context : ContextLoader = new ContextLoader ();

_context.applicationDomain = ApplicationDomain.currentDomain;

_loader.load ( _request, _context );

Le problème a été retourné dans tout les sens.. nous n’avons jamais eu les mêmes domaines d’applications pour l’enfant et le parent.

De plus, il est simple de vérifier si deux SWF utilise le même domaine d’application.

1
2
trace ( String ( __loader.contentLoaderInfo.applicationDomain == ApplicationDomain.currentDomain ) ) ;
//false systématiquement

Les crossdomain sont présents sur les deux serveurs, et les utilisations de Security.allowDomain (“*”); n’ont pas été oubliées.

Aussi, le soucis reste le même lorsque nous travaillons en local et que l’on charge le SWF avec un chemin relatif.
Ce qui est étrange, c’est que dans ce cas les définitions de classes sont utilisables et donne l’impression d’un seul domaine d’application.

Du coups, j’y perds totalement mon latin. A savoir que nous avons tester avec le player 10.2.152 et 10.1