那么如何改变高亮区域得位置呢?很简单,只用改变pStencil的位置即可!可以考虑记为成员变量在ccTouchesBegan中改变位置,这样就会高亮区域就会跟着你的鼠标走啦!
二.触摸和按钮响应
1.开启触摸 阻止穿透响应 判断落点
让我们继续看下面的这张图片:
这张图片中应该只有右下角的”冒险”按钮能够响应的到,在这里说下思路:
为了让其他区域的按钮响应不到,我们应该提高上层(CClayer)的响应优先级为-128和按钮一样,这样的话如果上层(CClayer)后加入游戏addchild的话,会先收到触摸消息.
在收到触摸消息ccTouchBegan时,判断点击的地方是否在黄色矩形区域中,在的话return false 交给下层的按钮去响应,否则return true 阻止消息继续传递.
下面是代码片段:
1).开启触摸
bool CTeachLayer::init()
{
if (!CCLayer::init())
{
return false;
}
setTouchEnabled(true);
return true;
}
2).提升触摸响应优先级为-128
void CTeachLayer::registerWithTouchDispatcher()
{
//使用-128和CCMenu优先级相同,并且吞掉事件true//
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, -128, true);
CCLayer::registerWithTouchDispatcher();
}
3).在ccTouchBegan判断触点
bool CTeachLayer::ccTouchBegan( CCTouch* pTouch, CCEvent* pEvent )
{
//得到触摸位置
CCPoint touchPoint = pTouch->getLocation();
//声明一个右下角100x50的矩形
CCRect m_obRect=CCRectMake(
CCDirector::sharedDirector()->getVisibleSize().width-100,
CCDirector::sharedDirector()->getVisibleSize().height-50,
100,
50);
//判断点是否在矩形中
if (m_obRect.containsPoint(touchPoint))
{
return false;
}
return true;
}













