2010-11-19 28 views
0

Je dois apporter une petite modification à une bibliothèque Flash existante (Fusion Charts Free) écrite en AS1 avec Flash 6 comme version de publication. Mon changement utilise ExternalInterface, qui nécessite Flash 8, j'ai donc ouvert les paramètres de publication et changé la version à 8. Aucune autre modification n'a été apportée.Pourquoi un swf se brise-t-il en changeant sa version d'exportation de Flash 6 à 7?

Maintenant, le swf se charge, mais rencontre une erreur à mi-chemin de son fonctionnement. Si je change la version de publication à 6, cela fonctionne à nouveau. Le changer en 7 le casse. Mes questions:

  1. Existe-t-il une liste complète des changements entre Flash 6 et 7 qui affectent le code AS1 existant?

  2. Existe-t-il un moyen d'obtenir une sortie de débogage réelle à partir d'un swf, pour déterminer ce qui s'est passé? Il est frustrant de constater qu'il ne semble y avoir aucune sorte de journal ou de console. Je l'ai vu quelques solutions qui impliquent l'utilisation ExternalInterface pour vous connecter à Firebug ou tel, mais de toute évidence ce n'est pas utile pour moi, étant donné que mes centres de problème entier exportent autour Flash 8.

Répondre

0

Ayant terminé ce projet, je partagerai mon expérience. Pratiquement toutes les incompatibilités se répartissent en trois catégories, décrites dans this very useful article:

  1. noms de variables Flash 7 sont sensibles à la casse, donc xPos et xpos sont maintenant des variables distinctes et ne peuvent être utilisés de manière interchangeable. Vous ne feriez jamais cela de toute façon, si vous écriviez du bon code, mais si vous essayez de porter du code tiers, comme je l'ai été, c'est le problème n ° 1 à surveiller.

  2. Les valeurs de variables non définies ont changé. Dans Flash 6, les nombres ont été initialisés à zéro et les chaînes étaient vides. Dans Flash 7, un nombre est NaN et une chaîne est indéfinie.

  3. Les équivalents booléens chaîne sont différents. Dans Flash 6, les chaînes vides ou les chaînes autres que "1" sont fausses. Dans Flash 7, une chaîne avec n'importe quel contenu est évaluée à true; seules les chaînes vides sont évaluées à false.

0

ExternalInterface est probablement pas la raison des erreurs .. je me suis testé pour assurer .. (avec flash8 + AS1).

1) vous avez peut-être accidentellement sélectionné AS2 à la place .. 2) l'erreur est lors de la compilation? ou pendant son fonctionnement? 3) l'erreur se produit-elle lorsque vous l'exécutez à partir de l'application? ou comme autonome? (Lorsqu'il est autonome, ExternalInterface peut générer une exception car il n'y a pas d '"interface externe".) 4) Quelle est l'erreur? 5) essayez de mettre "try" bloc sur la partie ExternalInterface si l'erreur ne est pas lors de la compilation .. 6) si l'erreur est en cours d'exécution, alors vous avez un débogueur .. appuyez simplement sur Ctrl + Maj + Entrée