2010-08-25 7 views
0

J'utilise StackOverflow pour la première fois, alors soyez sympa et compréhensif.
Il y a quelques jours, je me suis intéressé à ActionScript. J'ai téléchargé FlashDevelop (un IDE gratuit) et FlexSDK4. Ensuite, j'ai appris les bases de certains tutoriels.
Pour l'instant je ne développe pas vraiment de gros projet, je fais juste juste des tests.
Quoi qu'il en soit, une solution à mon problème est vraiment importante pour moi. Je l'ai cherché, mais je n'en ai pas trouvé.
Je n'ai qu'un bouton et un arrière-plan dans mon application. Le bouton et l'arrière-plan (ci-dessous: "bg") sont des objets de la classe Sprite.
Lorsque je clique sur le bouton, l'arrière-plan est peint avec 10x10px carrés de couleurs aléatoires. Le problème est que plus je clique sur le bouton, plus je dois attendre que l'arrière-plan change. Et ce n'est pas tout! Je peux changer l'arrière-plan exactement 54 fois! À la 55e fois, cela ne change pas du tout.
Un problème avec un fond de couleur aléatoire

package { 
    // some imports here 

    public class Main extends Sprite { 
     private var button:Sprite; 
     private var bg:Sprite; 

     public function Main():void { 
      init(); 
     } 

     private function init (e:Event=null):void { 
      addChild (bg); 
      // in the original code there are some lines here, 
      // in which the button is created 
      addChild (button); 
      button.addEventListener (MouseEvent.CLICK, btnClick); 
     } 

     private function btnClick (event:MouseEvent):void { 
      var x:uint, y:uint, color:uint; 
      for (y=0; y<30; y++) { 
       for (x=0; x<40; x++) { 
        color=Math.round(Math.random()*16777215); 
        bg.graphics.beginFill (color); 
        bg.graphics.drawRect (x*10, y*10, 10, 10); 
        bg.graphics.endFill(); 
       } 
      } 
     } 
    } 
} 

Le code est si court, parce que je l'ai retiré beaucoup de lignes vides. Je n'ai laissé que les plus importants.
Quel est le problème avec ce code? Aidez-moi, s'il vous plaît.
Merci d'avance.

Répondre

1

clairement vos graphiques avant la boucle

var x:uint, y:uint, color:uint; 
bg.graphics.clear(); 
for (y=0; y<30; y++) {//etc 
+0

Merci vraiment beaucoup. Je n'avais aucune idée que je dois effacer les graphiques. Merci, ça fonctionne couramment maintenant. – rhino