Я могу ответить только за Cocos2dX, но это должен быть тот же механизм.Реализовать эту функцию немного нелепо, поэтому я предлагаю вам пойти по пути создания подкласса Sprite и добавить к нему CCLayerTouch.
Но если вы хотите использовать CCMenuItem, я могу сказать вам, где вы должны начать искать.Каждый раз, когда пользователь касается CCMenuItem- (Node), класс проверяет, к каким дочерним элементам обращались, и устанавливает его для выбранных.Когда вы отпускаете палец, он устанавливает его обратно в невыбранное и запускает селектор (действие), назначенный вам.Это однократное действие.
Два способа теперь:
Для того, чтобы он все время срабатывал, вам нужно создать подкласс CCMenuItem и переопределить четыре сенсорных обратного вызова(без звонка супер).В прикосновении вы регистрируете свой спрайт как прикосновенный, а в касании вы отменяете его регистрацию.Вашему классу также нужен метод update (), который будет вызываться каждый кадр в цикле выполнения.В этом методе update () вы проверяете, коснулся ли спрайт, и если да, вы запускаете.Это подход в менее кокосовом стиле.
Как упоминалось выше.Зарегистрируйте планировщик и отмените регистрацию после завершения касания.
В этом случае метод перемещения перемещением ничего не делает.А методы touchCancelled ведут себя как touchEnded.