我使用代码实例化一个按钮Button 添加到一个由cocstudio 3.X 做的界面上(界面上只有一张图)
下面贴读界面和获取图片的代码
auto rootNode = CSLoader::createNode(“MainScene.csb”);
addChild(rootNode);
auto imageView = Tools::seekNodeByName(rootNode, std::string(“image_backGroung”));
然后在这个图片上加入一个按钮(我试过button 和 sprite )出现的错误都是一致的
下面贴实例化按钮的代码(这个是sprite)
sprite = cocos2d::Sprite::create(“res/Resources/brick_” + imageName + “.png”);
auto listener1 = EventListenerTouchOneByOne::create();//创建一个触摸监听
listener1->setSwallowTouches(true);//设置是否想下传递触摸
listener1->onTouchBegan = ](Touch* touch, Event* event){
auto target = static_cast<cocos2d::Sprite*>(event->getCurrentTarget());
Point locationInNode = target->convertToNodeSpace(touch->getLocation());
Size s = target->getContentSize();
Rect rect = Rect(0, 0, s.width, s.height);
if (rect.containsPoint(locationInNode))//判断触摸点是否在目标的范围内
{
target->setTexture("res/Resources/brick_a.png");
return true;
}
else
{
return false;
}
};
auto _eventDispatcher = Director::getInstance()->getEventDispatcher();
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener1,sprite);
下面贴 加入到图片的代码
sprite->setPosition(ccp(500,500));
imageView->addChild(sprite);
这些代码会出现按钮的感应区域在按钮实际位置的正下方大约两个高度的位置 查了许久不解~求大牛解惑