Le SWF conforme ne montre pas le préchargeur tant que le SWF complet n'est pas complètement chargé. Tout hepl serait vraiment apprécié, j'ai googlé toute la nuit ne pouvait rien trouver là-dessus, au moins pour moi.Préchargeur pour SWF avec Embed bytearray
Répondre
Vous ne pouvez pas intégrer le ByteArray
dans votre classe principale de documents, parce que les classes qui sont extraites de la classe de document seront automatiquement inclus sur le cadre 1.
La meilleure façon de précharger des actifs est d'avoir une classe Preloader séparée et classe principale. Vous voulez que votre classe Preloader à exporter sur l'image 1, et votre classe principale et actifs sur le cadre 2.
Malheureusement, cela est plus délicat qu'il devrait être, mais voici comment vous pouvez le faire: Définissez votre classe de document à Preloader
. Cette classe contient votre code loaderInfo
. Toutefois, lorsque vous avez terminé le chargement, n'instanciez pas directement le principal, c'est-à-dire ne faites pas var main:Main = new Main()
. Cela entraînera automatiquement la compilation de Main sur l'image 1, indépendamment de ce que vous faites. Au lieu de cela, instancier indirectement, comme ceci:
nextFrame(); // you sometimes need to do this for the player to register classes exported on frame 2
var mainClass:Class = flash.utils.getDefinitionByName("Main") as Class;
var main:Sprite = new mainClass();
addChild(main);
Cela arrêtera le compilateur de coller du principal automatiquement sur le cadre 1.
Ensuite, si vous utilisez le Flash CS3 + IDE, allez à Fichier-> Publier Paramètres-> Flash-> Paramètres ActionScript 3.0 et modifiez le paramètre "Exporter les classes sur le cadre" à l'image 2. Puis, sur l'image 2 de votre film, placez un MovieClip vide. À l'intérieur de ce MovieClip, placez une référence à votre classe principale en mettant ce code: var dummy:Main;
. La raison pour laquelle vous devez faire ceci est que le compilateur sache toujours que vous utilisez Main, donc il le compilera dans le film, sinon il ne le compilera pas du tout. Vous ne voulez pas non plus le mettre dans le scénario principal, car toutes les références de code sur le scénario principal sont automatiquement placées sur l'image 1.
Dans l'EDI, un truc utile pour vérifier que les choses ont bien été exportées à leur place est de cocher "Générer un rapport de taille" dans Propriétés de publication-> Flash. Vous pouvez examiner le rapport et facilement remarquer si indésirable a exporté sur le cadre 1.
Si vous utilisez Flash Builder, FlashDevelop ou FDT, le processus est fondamentalement le même - créer Preloader séparés et les classes principales, et instancier Principalement indirectement de Preloader. Mais pour signaler le compilateur de compiler principal sur un cadre après Preloader, mettre ce metatag ci-dessus public class Main
dans Main.as
:
[Frame(factoryClass="Preloader")]
FlashDevelop peut également les fichiers SWF introspect en cliquant sur le symbole + dans l'onglet Projet. Il vous montrera quels actifs ont été exportés sur quelles images. Idéalement, vous ne voulez que le strict minimum de Preloader sur l'image 1.
J'ai testé la méthode de Mike dans CS4. Apparemment, le clip factice qui fait référence à Main n'a pas besoin d'être sur l'image 2, ou n'importe où sur la timeline d'ailleurs. Tant que le clip factice est défini pour l'exportation sur l'image 2, Main exportera sur l'image 2 car il est référencé dans le code du clip factice.
- 1. Chargement de swf avec bytearray dans AIR
- 2. Préchargeur AS3 pour fichier SWF externe
- 3. Comment charger le fichier SWF depuis byteArray?
- 4. Charger et ajouter du code à swf externe avec bytearray?
- 5. AS3 ByteArray avec plusieurs parties
- 6. Comment ajouter un préchargeur
- 7. AS3 - AIR - D'un fichier de chemin swf à un ByteArray
- 8. Le préchargeur Flex n'apparaît pas
- 9. Problème avec un préchargeur et google analytics
- 10. Positionnement embed over embed avec wmode direct
- 11. jquery pour changer swf
- 12. AS3 Embed question
- 13. Préchargeur d'image
- 14. SWFLoader, ByteArray et les paramètres
- 15. Aide avec youtube embed!
- 16. Préchargeur pour ondes de choc en flash?
- 17. Interagir avec SWF Loader
- 18. Jquery montre le préchargeur pour chaque image?
- 19. Comment charger un préchargeur dans Actionscript3?
- 20. flowplayer embed/installation de l'objet
- 21. en utilisant bytearray avec socket.recv_into
- 22. AS3 - Ajout d'un préchargeur .swf externe lors de l'utilisation du chargeur NULL
- 23. Comment utiliser count pour bytearray
- 24. SSRS Embed Javascript avec l'hyperlien
- 25. Le préchargeur ne fonctionne pas en ligne
- 26. Regex pour Get Embed SRC
- 27. Guide de la taille du préchargeur
- 28. chargement swf sur le chrome avec jquery
- 29. Démarrage automatique d'une vidéo SWF avec swfobject
- 30. Redimensionnement des fichiers SWF avec JavaScript
wow! bonne astuce, mais je reçois ce message d'erreur - ArgumentError: Erreur # 2100: Le paramètre ByteArray dans Loader.loadBytes() doit avoir une longueur supérieure à 0. – kornesh
Pas sûr sur ce point, pourriez-vous poster le code que vous utilisez pour créer le ByteArray? –
J'ai posté le preloader entier et la classe principale .. – kornesh