2012-07-01 70 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類。 SetCanTrack:YES對我來說工作正常。 http://www.cocos2d-iphone.org/forum/topic/5971 – Winston

+0

實際上,精靈不會移動,因爲在迭代中,最後一個精靈永遠是被調用的精靈,無論標籤如何。 – Winston