2012-07-01 2 views
4

Мне нужно иметь возможность касаться определенного движущегося спрайта в моем массиве и выполнять действие над ним. Однако, когда я выполняю действие MoveTo, местоположение спрайта не обновляется. Помогите!Получение местоположения спрайта внутри массива cocos2d`

Массив:

int numbreds = 7; 

redBirds = [[CCArray alloc] initWithCapacity: numbreds]; 

for(int i = 1; i<=numbreds; i++){ 

    int xvalue = ((-50*i) + 320); 
    int yvalue= 160; 


    if (i==4) 
    { 
     CCSprite *parrot = [CCSprite spriteWithFile:@"taco.png"]; 

     [birdLayer addChild:parrot]; 
     [self movement]; //the action that moves the array horizontally 
     parrot.position = ccp(xvalue,yvalue); 
     parrot.tag=100; 

касания

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

{ 
UITouch *touch = [touches anyObject]; 
CGPoint location = [touch locationInView:[touch view]]; 
location = [[CCDirector sharedDirector] convertToGL:location]; 


CCSprite *mark = (CCSprite *)[birdLayer getChildByTag:100]; 

if (CGRectContainsPoint([mark boundingBox], location)) 
{ 

    CCLOG(@"YAY!"); 
} 

Проблема заключается в том, что расположение CCSprite фактически не обновлять или перемещать. УРА! только генерируется в месте происхождения спрайта.

ответ

2

Попробуйте это:

CCSprite *temp = [CCSprite spriteWithFile:@"taco.png"]; 

temp = [birdLayer getChildByTag:100]; 

if (temp.position.x == location.x) { 

    // do stuff... 
} 
+0

Проблема заключается в том, что позиция попугай спрайта не обновляется. поэтому parrot.position.x остается в исходном местоположении. – jnicz

+0

Попробуйте этот TouchableSprites Class. Это отлично работает для меня с помощью SetCanTrack: ДА. http://www.cocos2d-iphone.org/forum/topic/5971 – Winston

+0

На самом деле спрайт не перемещается, потому что на итерации последним спрайтом всегда будет тот, который будет вызываться, независимо от тега. – Winston

 Смежные вопросы

  • Нет связанных вопросов^_^