close

如何取得CCLayer touch的座標

我們通常產生一個CCLayer物件,會用以下語法:

CCLayer *myLayer=[[CCScrollLayer alloc] init];

以上的語法,我們似乎沒有指定坐標及尺寸給myLayer,原先以為CCLayer跟我們宣告UIView一樣:
UIView *myView=[[UIView alloc] initWithFrame:frame];
所以沒有尺寸坐標,我們要如何判斷–有沒有touch到我們放在CCLayer中的物件?

註:CCLayer 只要啟動touch的功能,只要touch到螢幕,不管是不是在範圍裡面與否,都會觸發touch的事件,如 ccTouchBegan 。


所以當我們實作CCLayer的touch功能時,我們會判斷touch下去的CGPoint,是不是我們設定的區域,通常我們會用到:CGRectContainsPoint(frame,touchPoint)。
一般我們在偵測 touchPoint 有幾個指令可以參考:

1.使用convertTouchToNodeSpace:的方法

CGPoint touchPoint=[self convertTouchToNodeSpace:touch]; //得到一個相對該物件(如:myLayer.position)座標。

2.使用convertToWorldSpace:+convertTouchToNodeSpace的方法

CGPoint touchPoint=[self convertToWorldSpace:[self convertTouchToNodeSpace:touch]];//得到一個絕對座標。

3.使用locationInView的方法

CGPoint touchPoint = [touch locationInView:[touch view]];
touchPoint = [[CCDirector sharedDirector] convertToGL:touchPoint];//得到一個絕對座標。

 
arrow
arrow
    全站熱搜

    zer931 發表在 痞客邦 留言(0) 人氣()