2010-09-02 4 views
1

J'ai un ancien code Haxe de style AS2 qui utilise flash.Lib.Current.CreateEmptyMovieClip() pour créer un diaporama d'images sur disque. Il crée un nouveau clip pour la tenue de chaque image et atténue simplement chaque image avec des niveaux alpha.Quel est l'équivalent AS3 pour MovieClip.CreateEmptyMovieClip?

La compilation avec -swf -swf-version 8 crée un fichier SWF très bien et cela fonctionne dans le navigateur.

Cependant, je suis en train de convertir ceci à -swf9 et je trouve que le MovieClip n'a plus cette méthode.

Comment charger une série d'images avec Haxe (style AS3)?

Le code, pour ce qu'il vaut la peine, est le long de ces lignes:

static function main() { 
    mc = flash.Lib.current; 
    var clip : MovieClip; 

    clip = mc.createEmptyMovieClip ("clip_000", mc.getNextHighestDepth()); 
    clip.loadMovie ("demo_img000.jpg"); 

    : : : 

Répondre

7

Vous pouvez simplement créer un nouvel objet d'affichage w/o reliant à un clip dans la bibliothèque comme ceci:

var sprite:Sprite = new Sprite() // -- creates a sprite 
var clip:MovieClip = new MovieClip() // -- creates a movie clip 

Vous pouvez ensuite ajouter à un autre objet d'affichage en utilisant la méthode addChild():

myOtherClip.addChild(sprite) 

La ligne ci-dessus va ajouter le nouveau clip en haut de la liste d'affichage, tout comme en utilisant getNextHighestDepth().

Si vous souhaitez ajouter un clip d'une profondeur entre deux autres clips que vous pouvez utiliser:

myOtherClip.addChildAt(movieClip, 2); // -- adds a clip at 2 levels up from 0 

En ce qui concerne le chargement d'une image loadMovie n'existe pas dans AS3. Vous devez utiliser les objets Loader et URLRequest comme ceci:

var loader:Loader = new Loader(); 
var request:URLRequest = new URLRequest('path_to_my_image.jpg'); 
loader.addEventListener(Event.COMPLETE, onLoadComplete); 
loader.load(request); 

function onLoadComplete(event:Event):void 
{ 
    if(loader.content){ 
     clip.addChild(loader.content) 
    } 
} 
+1

Ceci est l'une des choses * beaucoup * plus intéressantes dans AS3. – Herms

+0

Je n'accepterai sans doute pas cette réponse car elle semble fonctionner (du moins au début). Une chose que je ne reçois pas - comment spécifier où le sprite/clip va sur le clip principal? En d'autres termes, 'x = mc.createTextField (name, mc.getHighestDepth(), 0,300,400,20)' indique où va le champ et sa taille. Comment faites-vous cela avec seulement 'x = new TextField()'? – paxdiablo

+0

clip.x = 300; clip.y = 400; parentClip.addChild (clip) – JeremyFromEarth

Questions connexes