2016-01-05 1 views
-2

Я занимаюсь раздвижными играми-головоломками. Мне нужно помочь в том, как нарезать изображение и сделать больше изображений спрайтов, которые эти изображения упорядочивают до нисходящего порядка, игрок устроит правильную позицию.Как разрезать изображение с ровной высотой и шириной 4X4 = 16 штук?

Знайте, как нарезать изображение в cocos2d-x 3.2, пожалуйста, помогите мне решить эту проблему.

Спасибо, чувак.

ответ

1

Вы можете нарезать спрайт в cocos2d-х с помощью setTextureRect(). Например, вот код для 16 сегментов, вы можете изменить его на свой номер:

Size visibleSize = Director::getInstance()->getVisibleSize(); 
vector<Sprite*> vecSprites; 
for (int i = 0; i <= 15; i++) 
{ 
    Sprite* segment = Sprite::create("example.png"); 
    float segmentWidth = segment->getBoundingBox().size.width/4; 
    float segmentHeight = segment->getBoundingBox().size.height/4; 
    float originX = (i % 4) * segmentWidth; 
    float originY = ((int)i/4) * segmentHeight; 
    segment->setTextureRect(Rect(originX, originY, segmentWidth, segmentHeight)); 
    vecSprites.push_back(segment); 
} 

Показать сегменты спрайт на экране в обратном порядке:

for (int i = 15; i >= 0; i--) 
{ 
    vecSprites[i]->setPosition((i%4) * visibleSize.width/4, (((int)i/4) + 1) * visibleSize.height/4); 
    vecSprites[i]->setAnchorPoint(Vec2::ANCHOR_TOP_LEFT); 
    this->addChild(vecSprites[i]); 
} 

Результат:
enter image description here
Конечно, вы можете отображать их в произвольном порядке. Я надеюсь, что это поможет вам.

+0

Спасибо, за этот код работает. – Guru

+0

Лучше, чем спасибо, согласен ответить) – alc77

+0

Да, это лучше, чем еще один вопрос, Как прикасаться к движению этих сегментов? – Guru