Я получаю сообщение об ошибке Assertion Failed при попытке простого теста «щелкни и перемести»

Надеюсь, это поможет прояснить... введите здесь описание изображения

Я следил за тестом ClicktoMove в тестах cpp из версии cocos2dx -3. Всякий раз, когда я нажимаю на экран, я получаю

Ошибка утверждения!
......
Файл:CCLayer.cpp
Строка:337
Выражение:False

ОБНОВИТЬ!

Я скачал последнюю версию, как указано в журнале изменений «cocos2d-x-3.0 23 апреля 2014». и это решает проблему, и все методы, которые я здесь упомянул, работают. В любом случае спасибо GameDeveloper..


person Sam    schedule 02.05.2014    source источник
comment
Какое выражение в CCLayer.cpp Line:337 оценивается как false?   -  person Praetorian    schedule 02.05.2014
comment
CCASSERT(false, Layer#ccTouchBegan переопределяет меня);   -  person Sam    schedule 02.05.2014


Ответы (1)


Я бы изменил ваше использование onTounchBegan и onTouchEnded, так как это были функции Cocos2d v2 для реализации сенсорных событий.

Как насчет такого:

auto e=EventListenerTouchOneByOne::create();
e->setSwallowTouches(true);

e->onTouchBegan = [&](cocos2d::Touch* touch, cocos2d::Event* event)
{
    return true;
};

e->onTouchEnded = [=](cocos2d::Touch* touch, cocos2d::Event* event)
{
    GameLayer::touchEvent(touch);
};

cocos2d::Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(e,this);

void GameLayer::touchEvent(Touch* touch)
{
  std::cout << "touch event" << std::endl;
}
person GameDeveloper    schedule 02.05.2014
comment
ClickandMove Test использует те же, что и я, проверьте здесь github.com/cocos2d/cocos2d-x/blob/v3/tests/cpp-tests/Classes/ - person Sam; 03.05.2014
comment
Я попробовал этот образец, и он работает для меня. Я не могу так хорошо разобрать ваш код. Выглядит как заголовок, смешанный с обычным исходным материалом. Возможно, лучше разбить его, и я смогу запустить его и посмотреть, что происходит. - person GameDeveloper; 06.05.2014
comment
Я разместил снимок для ясности. Возможно, вы могли бы показать мне свой код. Вы просто скопировали его или изменили пример.?? - person Sam; 07.05.2014
comment
Я также пробовал ваш метод, но теперь, когда я закрываю, он говорит, что HEAP CORRUPTION DETECTED: после обычного блока (# 1560) в 0x0 + 62d718CRT обнаружено, что приложение записывает память после окончания кучи и буфера. Но мой вопрос конкретно в том, почему он просто не работает так как все тесты работали без нареканий в версии 2.3 - person Sam; 07.05.2014