2008-10-20 8 views
4

J'ai un grand fichier .swf Flex (700 Ko) représentant le fichier principal d'un site. Pour tester les performances, je voulais essayer de passer à l'hébergement Amazon S3 (que j'ai déjà fait avec certaines vidéos et de gros fichiers).Chargement des ressources Flex relatives à la racine du serveur par opposition à l'emplacement .swf

Je suis allé de l'avant et fait cela, et mis à jour la page html pour référencer le .swf distant.

Il s'avère que Flash chargera toutes les ressources relatives au fichier .swf accédant à la ressource - quelle que soit la racine de la page html. Donc mes ressources sont maintenant chargées à partir du site distant (où elles n'existent pas).

Il y a deux choses évidentes que je pouvais faire: * copier toutes mes ressources à distance (pas prêt pour cela car je teste maintenant) * ajouter une couche d'abstraction à chaque URL que l'accès à .swf dériver un nouveau chemin.

Je veux vraiment appuyer sur un bouton et dire 'charger tout ce qui concerne [serveur d'origine]'.

Est-ce qu'une telle chose existe ou est-ce que je suis coincé en train de charger chaque chose à partir de la machine distante à moins que je qualifie complètement chaque chemin?

je veux éviter tout « aki » comme: sous-classe image et pirater le chemin il

Répondre

0

Vous pouvez essayer spécifier le paramètre base de Embed/balises objet de votre SWF. En théorie, il définit le chemin de base qui sera utilisé pour résoudre les chemins relatifs pour le chargement, mais je ne sais pas si cela fonctionnera si la valeur base pointe vers un serveur différent de celui du SWF.

Voir les docs sur les paramètres embed/object here. Faites défiler jusqu'à "base" au milieu.

Si cela ne fonctionne pas, une autre chose que j'ai vue faire est de passer dans un chemin de base personnalisé via flashvars. Ensuite, à l'intérieur de votre fichier SWF, vous vérifiez si ce chemin de base est défini, et si c'est le cas, ajoutez-le aux URL relatives avant le chargement.

+0

J'ai essayé d'ajouter «base» et il ne semble pas fonctionner - au moins pour SWFLoader il doesn – Simon

1

Annexer une barre oblique avant vos urls, cela devrait charger par rapport au domaine au lieu du dossier en cours:

foo.load('/like/this/image.jpg') 

C'est un peu rapide et sale, l'alimentation d'une URL « relative » par un querystring (or the base parameter) serait beaucoup plus flexible.

+0

Cela ne fonctionnerait pas. Il dit que son SWF est sur un autre serveur que le HTML, et il veut charger par rapport au serveur où le HTML est. En outre, cela l'obligerait à changer toutes ses déclarations de charge, ce qui est ce qu'il demande comment éviter. – fenomas