2013-10-07 5 views
0

Je veux avoir plusieurs occurrences d'un symbole movieClip sur une scène afin que chacune d'elles charge une image différente. Le symbole movieClip doit avoir 2 images. La 1ère trame contenant le script d'action pour la barre de progression du chargeur; et la deuxième image avec un UILoader qui affiche une image externe.AS3 - MovieClip Preloader

Je sais comment implémenter un préchargeur pour un fichier swf. Et je sais comment avoir un symbole movieClip avec un UILoader et créer plusieurs instances avec des images différentes.

Depuis que je veux mettre ce fichier sur le web, j'ai besoin de préchargeurs pour chaque instance. Mais je ne peux pas comprendre comment avoir un préchargeur dans une instance (ça ne marche pas, si l'image réelle est sur la 2ème image du MovieClip ou chargement externe)

Répondre

0

Ceci peut être fait simplement en utilisant un ProgressBar et la classe loader.

import flash.display.Loader; 
import fl.controls.ProgressBar; 
import flash.events.Event; 
import fl.containers.UILoader; 

var myLoader:Loader = new Loader(); 
var my_pb:ProgressBar = new ProgressBar(); 

addChild(my_pb); 

myLoader.load(new URLRequest("http://www.SomeImageURL....")); 
my_pb.source = myLoader.contentLoaderInfo; 

myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completefunction); 

function completefunction(e:Event):void 
{ 
    removeChild(my_pb); 
    myLoader.content.width = 200; 
    addChild(myLoader); 
} 

Pour avoir le symbole MovieClip utiliser des images différentes, nous avons juste besoin d'ajouter une variable de chaîne à la movieClip et passer l'URL à cette variable chaque fois que nous créons une nouvelle instance de cela.

1

C'est parce que Stage se comporte différemment du MovieClip . Vous devez faire le preloader par programme. définir une classe pour le symbole MovieClip et créer une instance d'un autre MC qui fonctionne comme préchargeur, puis le rendre visible et le jouer pendant que l'image change en ajoutant un eventListener: addEventListener(ProgressEvent.PROGRESS, updateInfo);