我初初学习cocosdx。上网看教程视频,下载了3.2 final版本的。
然后,我定义了一个LabelTTF的对象,当点击这个对象的时候,就会随意生成对象的新位置,类似逃跑按钮那种。
但是我发现getBoundingBox函数好像不能正常使用,我将HelloWorld.cpp的 init 函数修改了。
下面是我的代码:
if ( !Layer::init() )
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
LabelTTF* tf = LabelTTF::create(“Change Position”, “Mv boli”, 30);
tf->setPosition(visibleSize.width / 2, visibleSize.height / 2);
this->addChild(tf);
auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = (Touch* touch, Event* event)->bool{
if (tf->getBoundingBox().containsPoint(touch->getLocation()))
{
//My Wnd Size is 800 x 600
tf->setPosition(rand() 800, rand() 600);
}
return false;
};
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(
listener, tf);
return true;
无论怎么点击都不会逃跑,但是如果点击的是程序的左下角的话,那么就会文本就会逃跑。
然而如果换成了 TextfieldTTF的类型的话,不用LabelTTF的类型就可以实现逃跑的功能。
更为奇怪的是,这段代码,在3.0rc0的版本下,是可以实现逃跑的,但是从3.0正式版开始就不行了。
就是同一段代码,同一个编译器,在3.0rc0是正确的,能够实现我想要的功能。从3.0正式版开始就不行了。
有高人说我应该在setPosition后面还要添加true。但是我试过了还是不行。
这是我之前发的帖子:
http://discuss.cocos2d-x.org/t/the-getboundingbox-of-labelttf-does-not-work-properly-how-to-solve-it/15874