2012-06-18 17 views
0

Ceci est mon sélecteur de niveau pour un jeu. Vous pouvez choisir le niveau 1-8, j'ai besoin de savoir lequel a été cliqué. e.target ne me donne pas beaucoup à part le nom de l'objet. J'ai besoin de savoir soit l'endroit dans le tableau ou le nom de l'image afin que je sache quel niveau charger.Besoin de savoir quel sprite a été cliqué

package 
{ 
    import flash.display.Bitmap; 
    import flash.display.DisplayObject; 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 

    public class LevelSelector extends Sprite 
    { 
     private var posX:int = 50; 
     private var posY:int = 50; 

     [Embed(source="../lib/one.png")] 
     private var lvl1Class:Class; 
     private var lvl1:Bitmap = new lvl1Class(); 

     [Embed(source="../lib/two.png")] 
     private var lvl2Class:Class; 
     private var lvl2:Bitmap = new lvl2Class(); 

     [Embed(source="../lib/three.png")] 
     private var lvl3Class:Class; 
     private var lvl3:Bitmap = new lvl3Class(); 

     [Embed(source="../lib/four.png")] 
     private var lvl4Class:Class; 
     private var lvl4:Bitmap = new lvl4Class(); 

     [Embed(source="../lib/five.png")] 
     private var lvl5Class:Class; 
     private var lvl5:Bitmap = new lvl5Class(); 

     [Embed(source="../lib/six.png")] 
     private var lvl6Class:Class; 
     private var lvl6:Bitmap = new lvl6Class(); 

     [Embed(source="../lib/seven.png")] 
     private var lvl7Class:Class; 
     private var lvl7:Bitmap = new lvl7Class(); 

     [Embed(source="../lib/eight.png")] 
     private var lvl8Class:Class; 
     private var lvl8:Bitmap = new lvl8Class(); 

     private var myArrayBitmaps:Array = new Array; 
     private var myArraySprites:Array = new Array; 

     private var yCounter:int = 1; 

     public function LevelSelector():void 
     { 
      if (stage) init(); 
      else addEventListener(Event.ADDED_TO_STAGE, init); 
     } 
     private function init(e:Event = null):void 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, init); 
      // entry point 

      myArrayBitmaps.push(false, lvl1, lvl2, lvl3, lvl4, lvl5, lvl6, lvl7, lvl8); 

      for (var i:int = 1; i < 9; i++) 
      { 
       myArrayBitmaps[i].x = posX; 
       myArrayBitmaps[i].y = posY; 
       myArrayBitmaps[i].height = 50; 
       myArrayBitmaps[i].width = 100; 
       //myArrayBitmaps[i].name = "lvl_" + i + ""; 

       myArraySprites[i] = new Sprite(); 
       myArraySprites[i].addChild(myArrayBitmaps[i]); 
       myArraySprites[i].x = posX; 
       myArraySprites[i].y = posY; 
       //myArraySprites[i].name = "lvl_" + i + ""; 

       stage.addChild(myArraySprites[i]); 

       myArraySprites[i].addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void { 
        removeThis(e, this); 
       }); 

       posX += 100; 
       yCounter += 1; 
       if (yCounter == 5) { 
        posY += 100; 
        posX -= 400; 
       } 
      } 
     } 
     private function removeThis(e:MouseEvent, temp):void 
     { 
      //Need to know the number which was passed, 1-8 
     } 
    } 
} 

Répondre

3

je ferais quelque chose comme ceci:

//... 
private function init(e:Event = null):void 
{ 
    //... 
    for (var i:int = 1; i < 9; i++) 
    { 
     //... 
     myArraySprites[i] = new Sprite(); 
     myArraySprites[i].addChild(myArrayBitmaps[i]); 
     //... 
     stage.addChild(myArraySprites[i]); 

     myArraySprites[i].addEventListener(MouseEvent.CLICK, removeThis); 


     } 
    } 
} 
private function removeThis(e:MouseEvent):void 
{ 
    var clickTarget:int = myArraySprites.indexOf(e.currentTarget); 
    trace("Clicked sprite (id): " + clickTarget); 
} 
+0

Je vous remercie très beaucoup, cela fonctionne – brace110

+0

C'est 2014, le 25 Mai, je viens de croiser le même problème, et j'ai vu cet ensemble de code ci-dessus, cela m'a aidé à résoudre mon problème aussi !! Merci!!! – Benyaman

Questions connexes