Cocos2D TouchesEnded не позволяет мне получить доступ к спрайтам? - PullRequest
1 голос
/ 15 мая 2010

Большое спасибо за чтение!

- (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) 

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

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

Ответы [ 2 ]

0 голосов
/ 23 мая 2010

"sprite", вероятно, объявлен локально в методе init, но не является членом класса.

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

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

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

CCSprite* sprite = [self getChildByTag:123];

Это похоже на удаление ребенка по тегу: http://www.learn -cocos2d.com / база знаний / cocos2d-iphone-чаво / учиться-cocos2d-общественное содержание / ручной / cocos2d-общий / 14824-как удаляемый-а-ребенок-от -nodescenelayer

0 голосов
/ 18 мая 2010

Вы пробовали,

  • [self sprite]
  • self.sprite
  • Проверено, если спрайт объявлен как свойство и вы его синтезировали?
...