2009-05-15 5 views
1

Est-ce possible? Je voudrais avoir un swf principal qui peut être vu par les utilisateurs qui ont flash 9 ou flash 10 installé. À l'intérieur de ce swf, un module séparé sera chargé uniquement pour les utilisateurs qui ont flash 10 installé. Ce module utilisera certaines fonctions avancées du flash 10.Chargement SWF compilé pour Flash 10 dans Flash 9 SWF

Répondre

1

Bien sûr, cela devrait fonctionner correctement comme vous l'avez décrit. Créez votre fichier SWF de base dans Flash 9, effectuez une vérification de version et, facultativement, chargez un autre fichier SWF publié sous la forme 10. Flash affichera les fonctions avancées du fichier SWF v10, quelle que soit la version du fichier SWF dans lequel il a été chargé. N'oubliez pas que la version est renvoyée sous la forme d'une chaîne, assurez-vous donc de faire parseInt dessus.

0

Il y a longtemps que je ne développe pas des applications flash, mais bien ... ce sont mes 2 cents:

Vous pourriez avoir à compiler le principal Flash 10 et cela peut être un problème en raison de la mise à niveau d'avertissement.

Ceci est une solution possible: http://codeofdoom.com/wordpress/2009/02/09/compiling-to-flash-10-requiring-flash-9/

Après avoir fait cela, je pense qu'il est facile détecter la version flash et le chargement des différents modules de swf comme vous dites.

1

Cela devrait fonctionner correctement, sauf si vous essayez d'utiliser des bibliothèques spécifiques à Flash 10 dans Flash SWF 10, ce que vous faites probablement. Je viens de l'essayer, et encore une fois, Adobe déçoit dans leur conception et leur qualité de bibliothèque Flash/Flex.

Par exemple, je tentais de faire ce qui suit

J'ai un fichier SWF de base 9 Flash qui va charger un module Flash 10, si Flash Player de l'utilisateur est de 10 ou plus. Ce module Flash 10 finit par utiliser les bibliothèques spécifiques à Flash 10, comme: 1) flash.net.NetStreamPlayOptions 2) flash.net.NetStreamPlayTransitions 3) NetStream.play2 Malheureusement, lorsque je fais cela, le moteur d'exécution de Flash se plaint que NetStreamPlayOptions, NetStreamPlayTransitions et NetStream.play2 n'existent pas. J'ai essayé de contourner cela en dupliquant les NetStreamPlayOptions et NetStreamPlayTransitions, ce qui m'a permis d'aller plus loin, mais malheureusement, je n'ai pas pu appeler NetStream.play2, même si j'ai casté l'instance de NetStream en tant qu'Objet. Je crois que cela fonctionne comme ça parce que le SWf de base, qui est Flash 9, utilise le playerglobal.swc, destiné à Flash 9. Lorsqu'il charge le SWF Flash 10, il finit par utiliser le playerglobal Flash 9. swc car l'environnement a été initialisé pour Flash 9, ce qui provoque un problème avec le fichier SWF Flash 10. Je dois encore trouver un moyen de contourner cela. Lorsque Flash passait de AS1 -> AS2 -> AS3, il était logique de savoir pourquoi il n'était pas rétrocompatible, mais maintenant AS3 ne peut pas toujours charger AS3, ce qui, à mon avis, est très décevant.

Questions connexes