Cocos2D TouchesEnded не позволяет мне получить доступ к спрайтам?

Спасибо за прочтение!

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch * touch = [touches anyObject];

    CGPoint location = [[CCDirector sharedDirector] convertToGL: [touch locationInView:touch.view]];
    CGRect myRect = CGRectMake(100, 120, 75, 113);

    int tjx = sprite.position.x;

    if(CGRectContainsPoint(myRect, location)) {
       tjx ++;            
    }
}

По какой-то причине ccTouchesEnded не позволяет мне получить доступ к моему "спрайту". Я также пытался использовать CGRectMake вот так:

CGRectMake( sprite.position.x, sprite.position.y, sprite.contentSize.Width, sprite.contentSize.Height) 

Но я не мог получить доступ к своей позиции или высоте спрайтов. Я продолжаю получать «спрайт» необъявленным, когда он объявлен в методе инициализации и добавлен к дочернему элементу.

Пожалуйста помоги!! Я уверен, что мне не хватает чего-то действительно простого здесь.


person maiko    schedule 15.05.2010    source источник


Ответы (2)


«спрайт», вероятно, объявлен локально в методе инициализации, но не является членом класса.

Одним из решений было бы дать спрайту тег:

sprite.tag = 123; // any arbitrary number to identify this sprite

Позже вы можете получить доступ к этому спрайту, используя:

CCSprite* sprite = [self getChildByTag:123];

Это похоже на удаление дочернего элемента по тегу: http://www.learn-cocos2d.com/knowledge-base/cocos2d-iphone-faq/learn-cocos2d-public-content/manual/cocos2d-general/14824-как-удалить-ребенка-из-узла-слоя

person LearnCocos2D    schedule 23.05.2010
comment
Спасибо ГГ! теги исправили мою проблему - person maiko; 03.06.2010

Ты пробовал,

  • [self sprite]
  • self.sprite
  • Проверили, объявлен ли спрайт как свойство и синтезировали ли вы его?
person Rob Segal    schedule 18.05.2010
comment
Я использовал метод Ktag, и это решило эту проблему. Большое спасибо, Роб! - person maiko; 03.06.2010