des anims sans timeline

des anims sans timeline - Flash/ActionScript - Programmation

Marsh Posté le 16-01-2005 à 14:54:33    

est-il possible avec flash (en se prenant bien le choux) d'animer des objets (deplacements entre autres) sans se servir de la timeline (physique) en ajoutant des images clefs etc etc... je veux dire juste un script sans objets physiques sur la timeline ?

Reply

Marsh Posté le 16-01-2005 à 14:54:33   

Reply

Marsh Posté le 16-01-2005 à 23:18:01    

oui .. enfin il te faudra au minimum UNE frame ! ..  
donc "sans timeline", non ...  
avec une timeline de 1 frame, oui ...


Message édité par Mr Mala le 16-01-2005 à 23:20:54
Reply

Marsh Posté le 17-01-2005 à 12:10:48    

oui ça evidement ! lol ! faut bien mettre le code quelquepart ! lol
mais j'ai essayé un truc tout bete avec un carré qui suit la souris... et il me faut quand même 3 keyframes... je sais pas comment faire pour eviter ça !

Reply

Marsh Posté le 17-01-2005 à 12:18:18    

heuuu c't'une blague ? :p
 
Frame 1 ( et unique frame de ton anim )

Code :
  1. this.onEnterFrame = function() {
  2. this.carre._x = this._xmouse;
  3. this.carre._y = this._ymouse;
  4. }
  5. stop();


.. en imaginant que ton carré est un movieclip appellé ... "carre" :D

Reply

Marsh Posté le 17-01-2005 à 13:18:54    

ah ouaiiiiii c cool je viens d'essayer c'est top !
 
http://clonecopy.net/freed/essais_flash/index.php

Reply

Marsh Posté le 17-01-2005 à 13:30:39    

.. vous pensez que je m'y prends bien pour le code ou c trop lourd ?  
 

Code :
  1. _root.createEmptyMovieClip("carre",0);
  2. carre.beginFill('0x000000',100);
  3. carre.lineStyle(1,'0xFFFFFF',100);
  4. carre.lineTo(0,0);
  5. carre.lineTo(100,0);
  6. carre.lineTo(100,100);
  7. carre.lineTo(0,100);
  8. carre.lineTo(0,0);
  9. carre.endFill();
  10. carre._alpha=100;
  11. this.onMouseDown = function()
  12. {
  13. xtarget=_root._xmouse;
  14. ytarget=_root._ymouse;
  15. xstart=carre._x;
  16. ystart=carre._y;
  17. }
  18.      this.onEnterFrame = function() {
  19. x=Math.abs(xstart - xtarget);
  20. y=Math.abs(ystart - ytarget);
  21. if(x>y){
  22. xspeed=5;
  23. yspeed=5*(y/x);
  24. }else{
  25. yspeed=5;
  26. xspeed=5*(x/y);
  27. }
  28. with(carre){
  29.  if(_x > (xtarget+2.5) || _x < (xtarget-2.5) ||_y > (ytarget+2.5) || _y <(ytarget-2.5))
  30.  {
  31.   this._alpha=50;
  32.   if(_x>xtarget)
  33.   {
  34.   _x = _x - xspeed;
  35.   }
  36.   else
  37.   {
  38.   _x = _x + xspeed;
  39.   }
  40.   if(_y>ytarget)
  41.   {
  42.    _y = _y - yspeed;
  43.   }
  44.   else
  45.   {
  46.    _y = _y + yspeed;
  47.   }
  48.  }
  49.  else
  50.  {
  51.  this._alpha=100;
  52.  }
  53. }
  54. carreX = getProperty(_root.carre, _x);
  55. carreY = getProperty(_root.carre, _y);
  56. pos_X.text = carreX;
  57. pos_Y.text = carreY;
  58. }
  59. _root.createTextField("txt_X",4,5,90,20,20);
  60. txt_X.multiline = true;
  61. txt_X.wordWrap = true;
  62. txt_X.border = false;
  63. Ftxt_X = new TextFormat();
  64. Ftxt_X.color = 0x000000;
  65. Ftxt_X.bullet = false;
  66. Ftxt_X.underline = false;
  67. _root.createTextField("txt_Y",5,5,120,20,20);
  68. txt_Y.multiline = true;
  69. txt_Y.wordWrap = true;
  70. txt_Y.border = false;
  71. Ftxt_Y = new TextFormat();
  72. Ftxt_Y.color = 0x000000;
  73. Ftxt_Y.bullet = false;
  74. Ftxt_Y.underline = false;
  75. _root.createTextField("pos_X",2,25,90,90,20);
  76. pos_X.multiline = true;
  77. pos_X.wordWrap = true;
  78. pos_X.border = true;
  79. pos_X.background = true;
  80. pos_X._alpha=50;
  81. Fpos_X = new TextFormat();
  82. Fpos_X.color = 0xff0000;
  83. Fpos_X.bullet = false;
  84. Fpos_X.underline = false;
  85. _root.createTextField("pos_Y",3,25,120,90,20);
  86. pos_Y.multiline = true;
  87. pos_Y.wordWrap = true;
  88. pos_Y.border = true;
  89. Fpos_Y = new TextFormat();
  90. Fpos_Y.color = 0xff0000;
  91. Fpos_Y.bullet = false;
  92. Fpos_Y.underline = false;
  93. carreX = getProperty(_root.carre, _x);
  94. carreY = getProperty(_root.carre, _y);
  95. txt_X.text = "X :";
  96. txt_Y.text = "Y :";
  97. pos_X.text = carreY;
  98. pos_Y.text = carreY;
  99. txt_X.setTextFormat(Ftxt_X);
  100. txt_Y.setTextFormat(Ftxt_Y);
  101. pos_X.setTextFormat(Fpos_X);
  102. pos_Y.setTextFormat(Fpos_Y);
  103. stop();


Message édité par freed102 le 17-01-2005 à 13:57:25
Reply

Marsh Posté le 17-01-2005 à 14:45:36    

Bon histoire déjà de faire les choses dans le bon ordre :

Code :
  1. carre.lineStyle(1,0xFFFFFF,100);
  2. carre.moveTo(0,0);
  3. carre.beginFill(0x000000,100);
  4. carre.lineTo(100,0);
  5. carre.lineTo(100,100);
  6. carre.lineTo(0,100);
  7. carre.lineTo(0,0);
  8. carre.endFill();


 
En faisant ton beginFill() avant, tu risques un jour d'avoir des surprises !
 
Sinon pour le reste ... ben si ça roule comme ça, touche pas .. mais c'est clair qu'il y a 5000 façons d'écrire le truc ...

Reply

Marsh Posté le 17-01-2005 à 14:52:54    

merci des conseils !
je voudrais savoir comment on concatene des noms de variables avec Actionscript ?
 
genre j'ai fait une fonction et une boucle :
voici la fonction :

Code :
  1. zindex=1;
  2. function MyCreateTextfield(name,zindex,x,y)
  3. {
  4. _root.createTextField(name,zindex,x,y,100,20);
  5. name.multiline = true;
  6. name.wordWrap = true;
  7. name.border = true;
  8. Fname = new TextFormat();
  9. Fname.color = 0x000000;
  10. Fname.bullet = false;
  11. Fname.underline = false;
  12. name.setTextFormat(Fname)
  13. zindex++;
  14. }


 
 
et voici la boucle :

Code :
  1. ystart=20;
  2. for(i=0,i>=10,i++)
  3. {
  4. var "essai"+i;
  5. MyCreateTextfield("essai"+i,zindex,10,ystart);
  6. "essai"+i.text="essai"+i;
  7. ystart+20;
  8. }


 
... mais je pense pas que ça marche comme ça pour creer des variables à la volée


Message édité par freed102 le 17-01-2005 à 14:54:03
Reply

Marsh Posté le 17-01-2005 à 16:41:53    

salut
 
pour la concatenation de tes var c'est ok
 
petit detail (voir plus haut) --> evite getProperty (deprecié depuis flash4) utilise plutot MovieClip._x et MovieClip._y

Reply

Marsh Posté le 17-01-2005 à 16:50:04    

zbang a écrit :

salut
 
pour la concatenation de tes var c'est ok
 
petit detail (voir plus haut) --> evite getProperty (deprecié depuis flash4) utilise plutot MovieClip._x et MovieClip._y


 
bah la concatenation ça va pas :
 

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 22: Identifier expected
     var "essai"+i;
 
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 24: Left side of assignment operator must be variable or property.
     "essai"+i.text=concat("essai",i);
 
Total ActionScript Errors: 2   Reported Errors: 2

Reply

Marsh Posté le 17-01-2005 à 16:50:04   

Reply

Marsh Posté le 17-01-2005 à 16:56:29    

point virgule?
 
for(i=0,i>=10,i++) --> for(i=0;i>=10;i++)

Reply

Marsh Posté le 17-01-2005 à 16:58:46    

tant qu'à faire essaye aussi comme ça :
["essai"+i].text="essai"+i

Reply

Marsh Posté le 17-01-2005 à 17:08:59    

zbang a écrit :

tant qu'à faire essaye aussi comme ça :
["essai"+i].text="essai"+i


 
j'avais vu deja pour le for...  
quant a la concatenation...toujours la même erreur :
 

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 24: Unexpected '.' encountered
     ["essai"+i].text="essai"+i;
 
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 27: Unexpected '}' encountered
     }
 
Total ActionScript Errors: 3   Reported Errors: 3

Reply

Marsh Posté le 17-01-2005 à 17:36:56    

autant pour moi ... j'avais mal compris ... initialiser une var en concatenant --> je sais pas ( ça doit-etre possible mais comment? )
pour en revenir à ta boucle --> for(i=0,i>=10,i++)
à part les ; ... i>=10 ça va pas le faire non plus --> i<10

Reply

Marsh Posté le 17-01-2005 à 17:39:20    

oui ça j'avais pas vu (puisque ma boucle n'a pas encore bouclé a cause de mon prob de creation de variable ! lol !
 
en tous cas ça je sais le faire en php :
 
 ${"mavariable"}="ma valeur";
 
mais en javascript ou en flash j'en ai aucune idée !

Reply

Marsh Posté le 17-01-2005 à 19:41:04    

MC["essai"+i].text
MC est le nom de ton clip où tu as créé les objets ( dans le cas présent, _root["essai"+i].text )
 

Reply

Marsh Posté le 18-01-2005 à 08:54:26    

Mr Mala a écrit :

MC["essai"+i].text
MC est le nom de ton clip où tu as créé les objets ( dans le cas présent, _root["essai"+i].text )


 
ok ça ça a été déjà dit ... ce qu'il veut c'est initialiser à la volée des variables --> var "truc"+i
je vois pas l'intérêt remarque

Reply

Marsh Posté le 18-01-2005 à 10:04:24    

zbang a écrit :

ok ça ça a été déjà dit ... ce qu'il veut c'est initialiser à la volée des variables --> var "truc"+i


 
Ce ne sont pas des "variables" ! "essai"+i est carément le nom de son objet textfield !
Et la seule solution c'est _root["truc"+i] ... et apparament, si ça a déjà été dit ICI, soit je l'ai loupé, soit "on" l'a effacé !
 
Dans son code ici,

Code :
  1. ystart=20;
  2. for(i=0,i>=10,i++)
  3. {
  4. var "essai"+i;
  5. MyCreateTextfield("essai"+i,zindex,10,ystart);
  6. "essai"+i.text="essai"+i;
  7. ystart+20;
  8. }


 
var "essai"+i; ne sert à rien .. et est faux d'ailleurs !
Il crée sont objet textfield ("essai"+i) et veut juste l'initialiser directement après l'appel de sa fonction de création !
Ce qu'il appelle "des variables à la volée" sont tout sauf des variables à la volée. ( dans le cas présent, ce ne sont pas des variables, ce sont carément des objets ). Il s'est planté dans sa nomenclature !


Message édité par Mr Mala le 18-01-2005 à 10:22:30
Reply

Marsh Posté le 18-01-2005 à 10:30:51    

je dis pas le contraire :)
 
mais ça reponds pas à la question ( enfin la mienne :D ) même si ça n'a pas grand intérêt --> penses-tu qu'on puisse initialisé des var "à la volée"?

Reply

Marsh Posté le 18-01-2005 à 11:22:42    

Honnêtement, je ne me suis jamais posé la question car, comme toi, je n'y vois pas l'intérêt !
( et surtout, je ne considère pas ça comme très 'propre' )
 

Reply

Marsh Posté le 18-01-2005 à 11:36:51    

Code :
  1. ystart=20;
  2. for(i=0;i<=10;i++){
  3. MyCreateTextfield(["essai"+i],zindex,10,ystart);
  4. _root["essai"+i].text="blablabla";
  5. ystart=ystart+20;
  6. trace(ystart);
  7. }


ça marche !! merci ! :jap:  
en effet une boucle ne sert à rien dans ce cas là... mais c t pour tester ma fonction savoir si elle est capable de reproduire des objets à la volée
 
Effectivement le terme "variable" n'etais pas approprié dans ce cas là.. cela dit je vais en avoir besoin aussi puisque je vais vouloir recuperer les valeurs de mes champs que je créé "à la volée" (ça va pas etre simple... Mais bon)
 
concernant la creation d'objet "à la volée" je vais vous expliquer mon interet : je veux que l'utilisateur puisse utiliser mon interface en placant des objet de façon illimitée sur l'ecran afin de construire une mise en page...
donc, chaque objet placé devra avoir des champs de propriété qui lui sont propre (x, y, police, couleur...) donc je veux a voir à faire juste un truc genre :

Code :
  1. monicone.onPress.function(){
  2. MyCreateEmptyTextField(monchamp,ma profondeur,mapositionX, mapositionY );
  3. }


et hop ! j'ai un nouvel objet sur ma page !
et mes objets qui auront les mêmes propriétés (TextFormat etc etcse creent avec une incrementation de +1
etcetc...) de plus je pourrai reperer mes objet avec le chiffre qui lui correspond.. je sais pas si c'est la bonne méthode mais bon... c celle qui me vient à l'esprit pour ce que je veux faire
 
voila à peu pres ! :)


Message édité par freed102 le 18-01-2005 à 11:42:12
Reply

Marsh Posté le 18-01-2005 à 14:09:35    

et voila cela marche tres bien :
 

Code :
  1. _global.zindex=0;
  2. Fname = new TextFormat();
  3. Fname.color = 0x000000;
  4. Fname.bullet = false;
  5. Fname.underline = false;
  6. function MyCreateTextfield(field,zindex,x,y)
  7. {
  8. _root.createTextField(field,zindex,x,y,100,20);
  9. _root[field].multiline = true;
  10. _root[field].wordWrap = true;
  11. _root[field].border = true;
  12. _root[field].background = true;
  13. _root[field].setTextFormat(Fname);
  14. _global.zindex++;
  15. }
  16. ystart=10;
  17. for(i=0;i<=10;i++){
  18. MyCreateTextfield(["essai"+i],zindex,120,ystart);
  19. _root["essai"+i].text="blablabla"+i;
  20. ystart=ystart+20;
  21. trace(_global.zindex);
  22. }


 
et je me retrouve avec 10 champs alignés positionnés à y+20... c'est top !
 je vais pouvoir continuer !  :jap:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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