Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1646 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [actionscript] erreur de syntaxe?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[actionscript] erreur de syntaxe?

n°1737123
jerrry
Posté le 26-05-2008 à 12:06:12  profilanswer
 

bonjour je cherche à faire un script de confettis en actionscript
les confettis ont une position aléatoire, une couleur aleatoire parmi 4 possibilités,une transparence aléatoire, toute les secondes on relance la fonction et tout doit changer or
la position des confettis ne varie pas chez moi, mais bien la couleur et la transparence!
j'arrive pas à piger pourquoi?
c'est surement tout con,
merci à vous
 
function createBall() {
    for (var i:Number=0 ; i<100 ; i++)
    {
       
    var absci =  Math.floor(Math.random()*500); // abscisses
    var ordo =  Math.floor(Math.random()*500);// ordonnées
    var transpa =  Math.floor(Math.random()*99);// transparence en pourcentage
colourChoices = ["0xa93232", "0xFF3200", "0x003200", "0x0056aa"];
chooseColour = colourChoices[Math.floor(Math.random()*colourChoices.length)];
var attachedMc = this.attachMovie("circle",["myCircle"+i],_root.getNextHighestDepth(),{_x:absci, _y:ordo,_alpha:transpa});
var my_color:Color = new Color(["myCircle"+i]);
my_color.setRGB(chooseColour);
}}
 
 
createBall();
setInterval (createBall, 1000);

   

mood
Publicité
Posté le 26-05-2008 à 12:06:12  profilanswer
 

n°1737506
Zedlefou
In cabbage we trust !
Posté le 27-05-2008 à 04:35:52  profilanswer
 

Pour optimiser un peu tu peux sortir ton tableau de couleur de ta boucle.
 
Ici :
 
var attachedMc = this.attachMovie("circle",["myCircle"+i],_root.getNextHighestDepth(),{_x:absci, _y:ordo,_alpha:transpa});  
Puisque tu utilises this.attachMovie, pourquoi ne pas utiliser aussi this.getNextHighestDepth ?
 
Bref pour ton probleme de position, enleve l'objet a la fin du attachMovie et attribue les paramétres un à un.
 
attachedMc._x = ...
attachedMc ._y etc...


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°1737763
jerrry
Posté le 27-05-2008 à 14:40:42  profilanswer
 

j'ai essayé ce que tu dis mais ça ne marche pas mieux...
tu aurais d'autres idées?
merci  
 
function createBall() {
 
 colourChoices = ["0xa93232", "0xFF3200", "0x003200", "0x0056aa"];
 for (var i:Number=0 ; i<100 ; i++)
 {
   
chooseColour = colourChoices[Math.floor(Math.random()*colourChoices.length)];
 var absci =  Math.floor(Math.random()*500); // abscisses
 var ordo =  Math.floor(Math.random()*500);// ordonnées
 var transpa =  Math.floor(Math.random()*99);// transparence en pourcentage
 
var attachedMc = this.attachMovie("circle",["myCircle"+i],this.getNextHighestDepth());
attachedMc._x = absci;
attachedMc._y = ordo;
attachedMc._alpha = transpa;
 
var my_color:Color = new Color(["myCircle"+i]);
my_color.setRGB(chooseColour);
 
 
 
}
 
 
 
}
 
 
createBall();
setInterval (createBall, 1000);

n°1737772
soju
One shot !
Posté le 27-05-2008 à 14:56:34  profilanswer
 

ton code n'est pas logique vu que tu appelles attachMovie à chaque fois pour ajouter un clip qui existe déjà...

n°1737778
jerrry
Posté le 27-05-2008 à 15:10:58  profilanswer
 

je saissis pas trop bien?
ni comment comment corriger ça,
pourrais tu m'éclairer stp?
merci

n°1737785
soju
One shot !
Posté le 27-05-2008 à 15:26:53  profilanswer
 

si j'ai bien compris ce que tu veux faire : tu veux 100 confettis qui changent de position et de couleur toutes les secondes ?
 
donc :
- tu crées une seule fois tes 100 confettis
- toutes les secondes tu changes la position/couleur de ces confettis

n°1737796
jerrry
Posté le 27-05-2008 à 15:43:58  profilanswer
 

j'ai fait ça mais j'y arrive pas :(
soju, tu peux jetter un coup d'oeil?
merci
 
function createBall() {
 
 
 colourChoices = ["0xa93232", "0xFF3200", "0x003200", "0x0056aa"];
 for (var i:Number=0 ; i<100 ; i++)
 {
   
chooseColour = colourChoices[Math.floor(Math.random()*colourChoices.length)];
 var absci =  Math.floor(Math.random()*500); // abscisses
 var ordo =  Math.floor(Math.random()*500);// ordonnées
 var transpa =  Math.floor(Math.random()*99);// transparence en pourcentage
 
var attachedMc = this.attachMovie("circle",["myCircle"+i],this.getNextHighestDepth());
attachedMc._x = absci;
attachedMc._y = ordo;
attachedMc._alpha = transpa;
var my_color:Color = new Color(["myCircle"+i]);
my_color.setRGB(chooseColour);
 
 
 
}}
function createBall2() {
 colourChoices = ["0xa93232", "0xFF3200", "0x003200", "0x0056aa"];
 chooseColour = colourChoices[Math.floor(Math.random()*colourChoices.length)];
 var absci =  Math.floor(Math.random()*500); // abscisses
 var ordo =  Math.floor(Math.random()*500);// ordonnées
 var transpa =  Math.floor(Math.random()*99);// transparence en pourcentage
 
attachedMc._x = absci;
attachedMc._y = ordo;
attachedMc._alpha = transpa;
var my_color:Color = new Color(["myCircle"+i]);
my_color.setRGB(chooseColour);
 
 
}
 
 
 
createBall();
createBall2();
setInterval (createBall2, 1000);

n°1737867
soju
One shot !
Posté le 27-05-2008 à 16:53:19  profilanswer
 

tiens je viens de voir un truc, dans ton premier code :

Code :
  1. var attachedMc = this.attachMovie("circle",["myCircle"+i],_root.getNextHighestDepth(),{_x:absci, _y:ordo,_alpha:transpa});

ça fonctionne la première fois mais pas après, car:
- première execution : this=_root
- ensuite avec setInterval : this=undefined
bon ça ne résout pas le problème mais c'est intéressant à savoir
et au passage :
- ton utilisation de attachMovie n'est pas super propre, c'est "myCircle"+i au lieu de ["myCircle"+i]
- pas très logique d'utiliser _root.getNextHighestDepth() avec this.attachMovie
 
pour en revenir à ton dernier code :
- dans createBall pas besoin de régler position et couleur vu que tu le fais dans createBall2
- y'a pas de boucle dans createBall2 et attachedMc n'est pas défini

n°1737874
jerrry
Posté le 27-05-2008 à 17:03:25  profilanswer
 

y'a pas de boucle dans createBall2 et attachedMc n'est pas défini
--> je ne sais pas comment faire pour (re)definir attacheMc,
pourquoi faut il refaire une boucle?

n°1737887
soju
One shot !
Posté le 27-05-2008 à 17:09:30  profilanswer
 

jerrry a écrit :

pourquoi faut il refaire une boucle?

ben je vois pas comment tu veux modifier tes 100 confettis sans faire une boucle

mood
Publicité
Posté le 27-05-2008 à 17:09:30  profilanswer
 

n°1737920
jerrry
Posté le 27-05-2008 à 17:27:30  profilanswer
 

et pour redefinir attacheMc?

n°1738354
soju
One shot !
Posté le 28-05-2008 à 15:06:28  profilanswer
 

dans ta boucle tu dis que attachedMc correspond à myCircle+numero, soit avec la syntaxe à crochet, soit avec eval
et n'attends pas que je te ponde le code, ça ne t'aiderai pas

n°1738381
jerrry
Posté le 28-05-2008 à 15:41:05  profilanswer
 

je n'attends pas de toi que tu me ponde le code mais si tu peux être plus clair parfois ça fait des heures que je m' acharne sur ces quelques lignes et je me tire les cheveux je te donnes la dernière version modifiée
qui me permet d'obtenir un malheureux confettis(!) ou sont passés ces 99 potes mystère...
 
function createBall() {
 
 
 colourChoices = ["0xa93232", "0xFF3200", "0x003200", "0x0056aa"];
 for (var i:Number=0 ; i<100 ; i++)
 {
   
chooseColour = colourChoices[Math.floor(Math.random()*colourChoices.length)];
 var absci =  Math.floor(Math.random()*500); // abscisses
 var ordo =  Math.floor(Math.random()*500);// ordonnées
 var transpa =  Math.floor(Math.random()*99);// transparence en pourcentage
 
var attachedMc = _root.attachMovie("circle","myCircle"+i,this.getNextHighestDepth());
 
 
 
 
}}
function createBall2() {
 colourChoices = ["0xa93232", "0xFF3200", "0x003200", "0x0056aa"];
 chooseColour = colourChoices[Math.floor(Math.random()*colourChoices.length)];
 var absci =  Math.floor(Math.random()*500); // abscisses
 var ordo =  Math.floor(Math.random()*500);// ordonnées
 var transpa =  Math.floor(Math.random()*99);// transparence en pourcentage
for (var i:Number=0 ; i<100 ; i++)
 {
attachedMc=_root["myCircle"+i];  
attachedMc._x = absci;
attachedMc._y = ordo;
attachedMc._alpha = transpa;
var my_color:Color = new Color(["myCircle"+i]);
my_color.setRGB(chooseColour);
}
 
}
 
 
 
createBall();
createBall2();
setInterval (createBall2, 1000);
 
 

n°1738394
soju
One shot !
Posté le 28-05-2008 à 16:03:18  profilanswer
 

vu que tu définis absci et ordo en dehors de ta boucle, tous tes confettis ont la même position donc tu n'en vois qu'un

n°1738413
jerrry
Posté le 28-05-2008 à 16:39:59  profilanswer
 

bien vu,
ça marche!
merci
crois tu que ça vaut la peine que je le dépose sur flashkod comme tuto?

n°1738421
soju
One shot !
Posté le 28-05-2008 à 16:49:15  profilanswer
 

heu non, ne le prend pas mal mais c'est pas super propre comme code

n°1738423
jerrry
Posté le 28-05-2008 à 16:57:13  profilanswer
 

;-(
 
 
mince alors, et moi qui me prenait pour un nouveau génie...

n°1738892
jerrry
Posté le 29-05-2008 à 14:16:53  profilanswer
 

salut tu sais ça m'interesserait de savoir pourquoi le code n'est pas propre voila le code corrigé tel qu'il m'a été fourni sur un autre forum
est ce qu'il est propre, lui?
 
merci
 
 function createBall() {  
     colourChoices = ["0xa93232", "0xFF3200", "0x003200", "0x0056aa"];  
     for (var i:Number = 0; i<100; i++) {  
         var attachedMc = _root.attachMovie("circle", "myCircle"+i, this.getNextHighestDepth());  
     }  
 }  
 function createBall2() {  
     colourChoices = ["0xa93232", "0xFF3200", "0x003200", "0x0056aa"];  
   
     for (var i:Number = 0; i<100; i++) {  
         attachedMc = _root["myCircle"+i];  
         chooseColour = colourChoices[Math.floor(Math.random()*colourChoices.length)];  
   
         attachedMc._x = Math.random()*Stage.width  
         attachedMc._y = Math.random()*Stage.height  
         new Color(attachedMc).setRGB(chooseColour)  
         attachedMc._alpha = Math.random()*100
   
   
     }  
 }  
 createBall();  
 createBall2();  
 setInterval(createBall2, 1000);


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [actionscript] erreur de syntaxe?

 

Sujets relatifs
Tutoriaux vidéos actionscript?Erreur de compilation...
Syntaxe VBA pour copie entre fichiers XLSyntaxe VBA
Erreur: Propriété non gérée par cette objetOptimisation de la syntaxe d'un code (pour gain en rapidité)
Erreur d'analyse de la valeur pour la propriété 'width'Rewrite + coppemine + ovh = erreur 403
Erreur d'incompatibilité de type sur VBAErreur programme C AIDE
Plus de sujets relatifs à : [actionscript] erreur de syntaxe?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR