2015-07-12 44 views
0

我有一個層:如何將觸控事件添加到CocosSharp中的CCNode?

public class MenuItemsLayer : CCLayer 
{ 
    protected override void AddedToScene() 
    { 
     base.AddedToScene(); 

     var quitItem = new CCLabel("QUIT", "fonts/MarkerFelt", 22, CCLabelFormat.SpriteFont); 
     (...) 
     this.AddEventListener(this.addQuitItemTouchListener(), quitItem); 
     this.AddChild(quitItem); 
    } 

    private CCEventListenerTouchOneByOne addQuitItemTouchListener() 
    { 
     var touchListener = new CCEventListenerTouchOneByOne(); 
     touchListener.OnTouchEnded = (touch, args) => 
     { 
      System.Diagnostics.Debug.WriteLine("touched"); 
     }; 

     return touchListener; 
    } 
} 

請注意 「quitItem」。我希望將CCEventListenerTouchOneByOne添加到它,它會做我想要的東西。在這種情況下,如果觸摸元素,它應該在輸出中寫入「已觸摸」。不幸的是,沒有任何反應,斷點也不會被打。

基本問題 - 我想添加觸摸事件到CCNode。怎麼樣?

回答

1

//類變量 CCLabel quitItem;

// In AddedToScene 
var touchListener = new CCEventListenerTouchAllAtOnce(); 
touchListener.OnTouchBegan = this.OnTouchesBegan; 
AddEventListener(touchListener,this); 


// Handler 

void OnTouchesBegan(List<CCTouch> touches, CCEvent touchEvent) 
{ 
    if (quitItem.BoundingBoxTransformedToWorld.ContainsPoint(touches[0].Location)) 
      { 
       // print message here 
      } 

} 
相關問題