如何取得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];//得到一個絕對座標。

 
文章標籤
全站熱搜
創作者介紹
創作者 zer931 的頭像
zer931

zer931的部落格

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