2010-02-03 13 views
3

Je dois (rapidement!) Ajouter une intro à un masthead flash existant sur un site dont j'ai hérité. Je n'ai pas accès au .fla source, donc j'ai approché le problème en mettant l'intro dans un swf d'encapsuleur et en chargeant le masthead courant et en l'ajoutant à la liste d'affichage sur Event.INIT. Jusqu'ici tout va bien. (Incidemment, les swfs sont construits pour Flash Player 9 et utilisent AS3.)Ajout d'une intro à un swf sans accès à la fla OU: différences entre les swfs de haut niveau et chargés

Le problème que je rencontre est que bien que l'intro joue bien et charge/affiche le début de la swf masthead, qui est une animation de chargement, le masthead lui-même ne joue jamais réellement. Essentiellement, ma question est la suivante: qu'est-ce qui ferait qu'un SWF basé sur ActionScript 3 se comporte différemment quand il s'agit de l'enfant d'un autre swf par opposition au swf intégré?

Détails potentiellement importants: L'intégration est traitée avec swfobject et aucun flashvars n'est transmis. Il existe deux paramètres, base: "/flash/" et wmode: "opaque". Tous les swfs et les données flash vivent en /flash/. Les éléments flash (moins l'intro que j'ai construite) ont été construits en utilisant le Inky flash framework, avec lequel je ne suis pas familier.

MISE À JOUR: J'ai reconsidéré mon approche du problème et l'ai fait fonctionner en utilisant ExternalInterface; L'intro swf appelle une fonction js quand elle se termine, ce qui remplace l'intro swf et la remplace par la balise masthead actuelle (l'approche est décrite here). J'aimerais quand même savoir pourquoi j'ai été témoin du comportement que je voyais plus tôt, alors, toutes les idées et suggestions seraient les bienvenues.

Répondre

1

Il pourrait y avoir quelques problèmes potentiels avec vos fichiers flash.

Si votre swf a été compilé dans AS2, il pourrait être référençant _root qui serait foiré quand il est chargé dans un autre swf. Dans AS2, vous pouvez contourner le problème en utilisant _lockroot. Dans AS3, ce n'est plus un problème car _lockroot est hérité.

Si votre film était un film basé sur une timeline, vous pouvez essayer d'appeler la fonction play().

Si votre intro charge des ressources externes, vous devez vous assurer que vos chemins d'accès sont définis correctement pour tous vos actifs externes. Essayez de placer le fichier swf de votre conteneur et l'intro dans le même répertoire. Ou dépannez en utilisant la fenêtre Safari Activity pour voir si vous avez des "404 not found".

Une autre chose est la version flash incohérente. Vous pourriez rencontrer un problème si vous chargez une version 9 de Flash avec une version Flash 10.

Espérons que ces pointeurs aident.