Ошибка выполнения Cocos2d-x runAction

Итак, я хочу, чтобы спрайт моего кота двигался вверх и вниз при нажатии двух кнопок (ВВЕРХ и ВНИЗ). Я новичок в cocos2d-x. Итак, в mygame.h у меня есть глобальное объявление кота-спрайта:

cocos2d::Sprite *cat;

В одной функции я создаю новую сцену и добавляю в нее кошку.

    cat = Sprite::create("cat.png");
cat->setScale(0.2);
cat->setPosition(0, 190);//(Director::getInstance()->getVisibleOrigin().x + 50,       Director::getInstance()->getVisibleSize().height / 2);
layer->addChild(cat);
playscene->addChild(cat);

В другой функции (обратный вызов кнопки) у меня есть этот код:

    void HelloWorld::down(Object* pSender){
CCActionInterval* down = CCMoveBy::create(1.0f, Point(0.0, -20.0));
cat->runAction(down);
}

И все в порядке, пока я не нажму кнопку вверх или вниз. Выдает ошибку на cat->runAction(down); линия. Когда я исследую переменную cat, похоже, я не могу добраться до параметров позиции. Это ошибка чтения памяти..


person Marija Milosevic    schedule 10.02.2014    source источник


Ответы (2)


Похоже, вы смешиваете API Cocos2D-X 2.x с API Cocos2D-X 3.0. Я делаю удар в темноте и говорю, что похоже, что вы пытаетесь использовать 3.0. Вам нужно будет изменить следующую строку:

CCActionInterval* down = CCMoveBy::create(1.0f, Point(0.0, -20.0));

To:

ActionInterval* down = MoveBy::create(1.0f, Point(0.0, -20.0));

person microslop    schedule 10.02.2014

В cocos2dx 3.0 вы можете писать прямо в runaction для любого спрайта.

spriteName->runAction(Sequence::create(MoveBy::create(1.0f,Point(398,565)),NULL));

person Hitesh Rajyaguru    schedule 08.07.2015
comment
Пожалуйста, добавьте некоторые пояснения. Объясните, почему ваш код должен работать. - person Nilambar Sharma; 08.07.2015