Cocos2d-x setScaleX()

时间:2014-10-06 19:07:30

标签: c++ cocos2d-x

所以我在cocos2d-x中编写了一个游戏,我需要其中一个精灵在一定时间内变宽,所以我尝试使用方法setScaleX()。问题是精灵的内容大小实际上没有变化,并且因为我的碰撞系统是基于精灵的内容大小,所以它们不能正常工作。这是我用于缩放的代码:

bar = Sprite::create( "Bar.png" );
CCLOG("Size: %f,%f.", bar->getContentSize().width, bar->getContentSize().height);
bar->setScaleX(1.5);
CCLOG("Size: %f,%f.", bar->getContentSize().width, bar->getContentSize().height);

两种情况下的输出完全相同。有没有办法解决这个问题?

3 个答案:

答案 0 :(得分:2)

ContentSize表示原始纹理大小,除非您使用setContentSize方法设置它。

您可以使用比例因子乘以大小或使用boundingBox().size来了解缩放精灵的当前大小(如果没有旋转或倾斜)。

答案 1 :(得分:1)

cocos2d::Size size1 = cocos2d::CCDirector::getInstance()->getWinSize();
scaleX=size1.width/768;
scaleY=size1.height/1024;

Sprite *sp1=Sprite::create("01.png");
    sp1->setScaleX(scaleX);
    sp1->setScaleY(scaleY);
    this->addChild(sp1);

答案 2 :(得分:0)

Scale for Landscape:

cocos2d::Size size = cocos2d::CCDirector::getInstance()->getWinSize();
scaleX=size.width/1024;
scaleY=size.height/768;

Scale for Portrait:

cocos2d::Size size = cocos2d::CCDirector::getInstance()->getWinSize();
scaleX=size.width/768;
scaleY=size.height/1024;

Sprite *sp=Sprite::create("01.png");
    sp->setScaleX(scaleX);
    sp->setScaleY(scaleY);
    this->addChild(sp);