cocos2d iphone метод onenter не вызывается

я использую v99.0

onEnter не вызывается, когда мой спрайт добавляется к слою и отображается сцена слоя. спрайт отображается правильно, но onenter не вызывается.

Самое смешное, что я делаю то же самое с другими спрайтами, и их методы onenter вызываются нормально.

Это ошибка?

В делегате приложения:

[[CCDirector sharedDirector] runWithScene: [TilesView scene]];

В методе инициализации TilesView (который является подклассом CClayer):

CCSpriteTouch * backArrow = [CCSprite spriteWithFile: @ "back arrow.png"]; [self addChild: backArrow];

Примечание. В том же методе инициализации я создаю другие спрайты, в результате чего вызываются их методы onEnter:

TileSprite *tile = [TileSprite spriteWithFile:@"singleTile.png"];
[self addChild:tile];

код для обоих классов спрайтов идентичен.


person Remover    schedule 18.02.2010    source источник


Ответы (2)


Я заметил это ... извините, это была глупая ошибка. У меня был подкласс CCSprite для использования с прикосновениями, но когда я создал экземпляр класса, я сделал это с CCSprite, а не с моим настраиваемым классом:

CCSpriteTouch *backArrow = [CCSprite spriteWithFile:@"back arrow.png"];

поэтому был вызван метод onenter CCSprite, а не CCSpriteTouch.

person Remover    schedule 01.03.2010

В вашем TilesView классе есть ли у вас вызов суперкласса onEnter? т.е. ....

-(void)onEnter
{
   ... your custom code ...

    [super onEnter];
}

Недавно я забыл сделать это с какой-то работой, и это нанесло ущерб Кокосу. Вы пытались отследить часть кода Cocos, чтобы увидеть, где логика не может достичь точки, в которой должен быть сделан ваш TilesView::onEnter вызов?

Если вы вставите объявление класса TilesView, это тоже поможет прояснить ситуацию.

person Rob Segal    schedule 22.02.2010