probleme de z-level

probleme de z-level - Flash/ActionScript - Programmation

Marsh Posté le 11-11-2006 à 14:22:04    

salut
 
apres un entrainement intensif en javascript j ai décidé de me remettre un peu a flash mais sans ouiziouigue cette fois
donc pour commencer j essaie de faire une petite anim'
j ai une scene générale
avec dedans deux clips et un texte
et mon probleme c est que le texte est toujours sous les clips
pourtant getDepth me dit bien que le texte est au-dessus
je vous file mon code ^^
en meme temps si vous voyez que je rpends deja de mauvaises habitudes vous pouvez taper mais pas trop fort :D
 

Code :
  1. import flash.display.BitmapData;
  2. var delay:Number = 120;
  3. // crééer le clip général
  4. var container:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
  5. // les deux clips en background
  6. var imgClip1:MovieClip = this.createEmptyMovieClip("imgClip1",this.getNextHighestDepth());
  7. var imageBmp1:BitmapData = BitmapData.loadBitmap("Test" );
  8. imgClip1.attachBitmap(imageBmp1, this.getNextHighestDepth());
  9. var imgClip2:MovieClip = this.createEmptyMovieClip("imgClip2",this.getNextHighestDepth());
  10. var imageBmp2:BitmapData = BitmapData.loadBitmap("Test" );
  11. imgClip2.attachBitmap(imageBmp2, this.getNextHighestDepth());
  12. // on créé un proto pour le mouvement de simages en fond
  13. var x:Number = 0;
  14. MovieClip.prototype.callbackMove = function(delta) {
  15. this._x += 5*Math.sin(x*Math.PI/5+delta);
  16. //label._y += 5*Math.sin(x);
  17. x++;
  18. }
  19. // le timer qui gere le mouvement
  20. setInterval(imgClip1,"callbackMove",delay,Math.PI);
  21. setInterval(imgClip2,"callbackMove",delay,0);
  22. // puis on ajoute les clips de background au clip general
  23. container.attachMovie("imgClip1","imgClip1_mc",this.getNextHighestDepth());
  24. container.attachMovie("imgClip2","imgClip2_mc",this.getNextHighestDepth());
  25. // texte du logo
  26. var label:TextField = container.createTextField("label", this.getNextHighestDepth(), 20, 200, 450, 200);
  27. label.text = "SyMph0maNe";
  28. //format du texte
  29. var format:TextFormat = new TextFormat();
  30. format.font = "pUNKASSBITCH";
  31. format.color = 0xffffff;
  32. format.size = 80;
  33. label.setTextFormat(format);


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 11-11-2006 à 14:22:04   

Reply

Marsh Posté le 11-11-2006 à 18:47:58    

#
container.attachMovie("imgClip1","imgClip1_mc",this.container.getNextHighestDepth());
#
container.attachMovie("imgClip2","imgClip2_mc",this.container.getNextHighestDepth());
#
 
#
// texte du logo
#
var label:TextField = container.createTextField("label", this.container.getNextHighestDepth(), 20, 200, 450, 200);
 
-> pb de ciblage.

Reply

Marsh Posté le 11-11-2006 à 19:59:34    

bah en fait ca n a pas marché
alors j ai essayé de le refaire manuellement et j ai compris
avec next depth les clips se superposent sur container et comme texte y a est rattaché il etait forcement en dessous
 
par contre j ai pas vraiment compris :
apres sur attach bitmap et attach movie je peux mettre ce que je veux ca change rien
c est pour changer le z dans ce meme clip?
 
mais merci deja de t etre penché sur mon probleme j en pouvais plus de tourner en rond [:tinostar]


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 11-11-2006 à 21:15:24    

j'ai rien compris à ton post.
 
MovieClip.getNextHighestDepth(); retourne un Number indiquant le prochain _level de libre dans le clip MovieClip.
 
Effectivement il y a encore des erreurs dans ton code, lignes 9-11-14 & 16, tes getNextHighestDepth() sont effectués sur des clips (this) qui ne sont pas du tout ceux dans lesquels tu attaches, donc les résultats sont erronés. Seulement, il n'y a qu'un seul objet dans ces clips, donc ça semblera fonctionner.
 
une ligne de code d'attach devrait ressembler à ça en réalité :
 
var mc:MovieClip = this.mcFoo.mcBar.mcContainer;
var mcAttached:MovieClip = mc.attachMovie( 'clipName' , 'mcClipName' , mc.getNextHighestDepth() );


Message édité par craps_youpla le 11-11-2006 à 21:26:46
Reply

Marsh Posté le 12-11-2006 à 13:35:38    

ok je me suis mal expliqué
le truc c est que je voulais le texte au dessus de mes deux clips attachés
mais si j utilise next le clip pricipal (container) auquel le texte est attaché va se retrouver forcement en dessous
donc j ai refait tous les depths avec des entiers en mettant container au dessus
 
apres le truc que je disais pas tres clairement  
c est qu on doit preciser une profondeur dans createmc et aussi dans attachmc et je comprenais pas trop pourquoi la valeur qu on met a attachmc ne changeait rien et en fait attachmc attache une profondeur au "sous-clip" alors que la profondeur de createmc  est celle dans l objet parent
comme t as dit le fait qu il y a ait qu un seul objet m a un peu embrouillé
 
bon j y retourne


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 14-11-2006 à 08:59:23    

bon j ai essayé de nettoyer mon code en creant un autre prototype
je pense ne pas m etre trop gourré dans mes cibles toussa
en tout cas ca fonctionne mais je voulais l avis d un expert sur les trucs a améliorer ^^
 

Code :
  1. import flash.display.BitmapData;
  2. var delay:Number = 120;
  3. var x:Number = 0;
  4. // crééer le clip général
  5. this.createEmptyMovieClip("container", -1);
  6. // sert a creer des layers et toutes les actions qui s y rattachent
  7. MovieClip.prototype.newLayer = function(layerName_s:String, bmp:String) {
  8. var layerName:MovieClip = this.createEmptyMovieClip(layerName_s,this.getNextHighestDepth());
  9. var bmpName:BitmapData = BitmapData.loadBitmap(bmp);
  10. layerName.attachBitmap(bmpName,this.getNextHighestDepth());
  11. setInterval(layerName,"callbackMove",delay,0);
  12. this.attachMovie(layerName_s,layerName_s+"_mc",this.getNextHighestDepth());
  13. }
  14. // on créé un proto pour le mouvementdes images en fond
  15. MovieClip.prototype.callbackMove = function(delta) {
  16. this._x = 3*Math.sin(Math.random()*Math.PI+delta);
  17. this._y = 3*Math.sin(Math.random()*Math.PI+delta);
  18. x++;
  19. }
  20. //  
  21. container.newLayer("imgClip1","Test" );
  22. container.newLayer("imgClip2","Test2" );
  23. container.newLayer("imgClip3","Test3" );
  24. container.newLayer("logoClip","Logo" );



---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed