2014-02-16 23 views
0

我嵌入圖像,創建一個網格,並試圖將每個嵌入的圖像作爲DisplayObject,以便我可以在網格中的每個圖像上使用MouseEvents,但是,我無法獲得mouseEvent的工作。任何幫助是極大的讚賞。我想我可能錯過了一些簡單的事情。AS3 - 如何獲取嵌入式位圖上的鼠標事件?

public class ImageGrid extends Sprite 
{ 

    private var gridItems:Array; 
    private var grid:Sprite; 
    private var sprite:Sprite 
    private var reveals:uint = 0; 
    private var exceededNumReveals:SimpleText; 

    [Embed(source="../Assets/images/tile-grad5-108.png")] 
    public var imgCls:Class; 

    public function ImageGrid(tileSize:Number, numTiles:Number, rows:Number) 
    {    
     gridItems = new Array(); 
     grid = new Sprite(); 
     addChild(grid); 

     for (var i:int = 0; i < numTiles; i++) { 

      gridItems[i] = new imgCls() as DisplayObject; 
      trace(gridItems[i] is DisplayObject) //true 
      gridItems[i].rotation = 180 
      gridItems[i].x = (i % rows) * (tileSize)  
      gridItems[i].y = int(i/rows) * (tileSize) 
      gridItems[i].addEventListener(MouseEvent.CLICK, gridItemClick, false, 0, false); 
      grid.addChild(gridItems[i]); 
     }  

    }   


    private function gridItemClick (event:MouseEvent):void { 
     trace(event.currentTarget); 
      reveals ++ 

     if (reveals < AssetManager.numReveals) { 
      TweenLite.to(event.currentTarget, 0.5, {y:900,rotation:Math.random() * 360, ease:Sine.easeOut}); 
     } else { 

      exceededNumReveals = new SimpleText ('You have exceeded your number of reveals', false, false, null, true, true, false, null, null, 20, 'right'); 
      exceededNumReveals.y = this.y + 300; 
      exceededNumReveals.x = this.x + 30; 
      addChild(exceededNumReveals) 

     } 

    } 
} 
} 

這是我如何固定它:

public function ImageGrid(tileSize:Number, numTiles:Number, rows:Number) 
    { 

     gridItems = new Array(); 
     grid = new Sprite(); 
     addChild(grid); 

     for (var i:int = 0; i < numTiles; i++) { 

      var imageHolder:Sprite = new Sprite() 
      gridItems[i] = new imgCls() as DisplayObject; 
      gridItems[i].rotation = 180 
      gridItems[i].x = (i % rows) * (tileSize)  
      gridItems[i].y = int(i/rows) * (tileSize) 
      imageHolder.addChild(gridItems[i]); 
      imageHolder.addEventListener(MouseEvent.CLICK, gridItemClick,  false, 0, false); 
      grid.addChild(imageHolder); 
     }  

    } 
+0

你沒有任何東西進口,這可能是問題嗎? – Cilan

+0

不 - 我只是無法讓他們在文本框中正確格式化......可能StackExchange忽略了它們。圖像加載和網格工作就像它應該......當我點擊em時,不能得到一個事件。謝謝! –

+1

考慮將它們放入動畫片並將單擊事件添加到動畫片夾 – Cilan

回答

0

總結他們在一個互動的對象(影片剪輯,雪碧等)向他們添加鼠標點擊事件。位圖是而不是交互式對象。

0

位圖是不是交互式的對象,你必須將監聽器添加到父