使用C++进行Cocos2d-x游戏开发入门过程中的要点解析

2020-01-06 14:06:37于丽

使用C++进行Cocos2d-x游戏开发入门过程中的要点解析使用C++进行Cocos2d-x游戏开发入门过程中的要点解析

那么如何改变高亮区域得位置呢?很简单,只用改变pStencil的位置即可!可以考虑记为成员变量在ccTouchesBegan中改变位置,这样就会高亮区域就会跟着你的鼠标走啦!

二.触摸和按钮响应

1.开启触摸 阻止穿透响应 判断落点

让我们继续看下面的这张图片:

使用C++进行Cocos2d-x游戏开发入门过程中的要点解析

这张图片中应该只有右下角的”冒险”按钮能够响应的到,在这里说下思路:

为了让其他区域的按钮响应不到,我们应该提高上层(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;
}