我创建了一个button 用的是addclickeventlistener 和一个精灵,当点击按钮时精灵移动,按钮和精灵移动正常
我用下面的函数返回精灵的碰撞区域,但是不知道为什么返回的值不变
相关代码如下
//游戏主角创建
m_player = Player::create();
m_player->bindSprite(Sprite::create("player2.png"));
m_player->setPosition(Vec2(200,visibleSize.height/4));
this->addChild(m_player,1);
//创建向左移动的按钮
left = Button::create("button.png");
left->setTitleText("left");
left->cocos2d::Node::setPosition(Vec2(visibleSize.width/2-100, visibleSize.height/6));
left->addClickEventListener(CC_CALLBACK_1(TollgateScene::clickToleft, this));
this->addChild(left,2);
//向左移动事件
void TollgateScene::clickToleft(Ref* Refnder){
m_player->leftMove();
}
/精灵向左移动的函数
void Player::leftMove(){
if(getSprite() == NULL){
return;
}
MoveBy *leftmove = MoveBy::create(0.15, Vec2(-100, 0));
getSprite()->runAction(leftmove);
}
```
rect Player::getBoundingBox(){
if(getSprite()==NULL){
log("3");
return Rect (0, 0, 0, 0);
}
Size spriteSize = getSprite()->getContentSize();
Point entityPos = getPosition();
log("%f %f %f %f",entityPos.x- spriteSize.width/2,entityPos.y - spriteSize.height/2, spriteSize.width, spriteSize.height);//测试值
return Rect(entityPos.x - spriteSize.width/2, entityPos.y - spriteSize.height/2, spriteSize.width, spriteSize.height);
}
```