2010-03-31 7 views
0

J'ai une galerie où chargera une image après le chargement d'une image précédente, donc chaque fois que 'je' + +1 pour passer à l'image suivante. Ce code fonctionne bien sur mes autres fichiers, mais je ne sais pas pourquoi cela ne fonctionne pas pour le fichier en cours.i nombre entier ne +1 + 1ère fois

Normalement, si je trace « i » correct sera

0,1,2,3,4,5,6... etc 

ajouter sur jusqu'à ce que la limite, mais ce fichier son « i » répéter le 1er numéro deux fois, seulement il continue d'ajouter

0,0,1,2,3,4,5,6...etc 

Le code est complètement le même avec l'autre fichier que j'utilise, mais je ne sais pas pourquoi cela ne fonctionne pas ici. Le code ne semble pas avoir de problème. De toute façon je peux contourner cette situation?

private var i:uint=0; 

private function loadItem():void { 

     if (i<myXMLList.length()) { 
      loadedPic=myXMLList[i].thumbnails; 

      galleryLoader = new Loader(); 
      galleryLoader.load(new URLRequest(loadedPic)); 
      galleryLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,picLoaded); 
     } else { 
      adjustImage(); 
     } 
    } 

    private function picLoaded(event:Event):void { 
     var bmp=new Bitmap(event.target.content.bitmapData); 
     bmp.smoothing=true; 
     bmpArray.push(bmp); 
     imagesArray[i].addChild(bmp); 

     i++; 
     loadItem(); 
    } 
+0

tout va bien évidemment. D'où obtenez-vous cette liste, c'est-à-dire où est la trace? –

+0

Puis-je demander quelle fuction fonctionne en premier? Si vous n'êtes pas sûr de cela, ajoutez une trace ("function functionname run"); au début des fonctions –

Répondre

1

Ce code semble très bien, il est vraiment très difficile de dire ce qui pourrait causer cela. Le meilleur conseil que je puisse vous donner serait de fixer des points de rupture; Par exemple, définissez-en un au moment où vous ajoutez l'écouteur d'événement à l'objet galleryLoader, puis exécutez le débogueur de Flash. Vous l'exécutez en allant sur Déboguer> Déboguer le film.

Le débogueur s'arrête à cette ligne, et vous serez en mesure de regarder dans les variables fenêtre pour voir votre variable i que vous franchissez la ligne par ligne de code. Vous franchissez en appuyant sur l'étape dans le bouton, à l'intérieur de la fenêtre Debug Console. Je l'ai mis dans une image ci-dessous montrant des fenêtres spécifiques du débogueur (que vous ne verrez pas à tout autre moment dans Flash):

alt text http://rookery9.aviary.com.s3.amazonaws.com/3518000/3518019_1ab3_625x625.jpg

Je pense qu'en faisant cela (si vous avez pas déjà essayé, c'est), vous devriez assez rapidement voir ce qui ne va pas. J'espère que ça aide quand même.

debu

+0

fondamentalement il ne montre aucune erreur du tout :( – Hwang

+0

Oui, c'est pourquoi vous devriez utiliser le débogueur Votre programme ne fait rien d'illégal, pour ainsi dire, donc il n'y a pas d'erreur. pour suivre l'exécution de votre code pour voir ce qui arrive à votre variable * i * à quel moment.Si vous le souhaitez, vous pouvez télécharger le .fla quelque part et je vais jeter un coup d'oeil. – debu

0

J'ai enfin découvert quel était le problème.

public function grid():void { 
     addEventListener(Event.ADDED_TO_STAGE, add2Stage); 
    } 

    private function add2Stage(event:Event):void { 
     myLoader=new URLLoader(); 
     myLoader.load(new URLRequest(galleryXML)); 
     myLoader.addEventListener(Event.COMPLETE,processXML); 
    } 

C'est parce que j'utilise en ajoutant les fonctions à la scène. Après avoir supprimé la fonction add2stage, tout va bien. Mais pourquoi affectera-t-il et exécutera la fonction deux fois au 1er? Je l'ajoute juste à la scène pour obtenir la largeur de la scène.

Questions connexes