2012-04-02 5 views
1

Ich versuche, verschiedene Ebene auf meinem Spiel hinzuzufügen. Während des Spielens wird der Spielstand erhöht und ein bestimmter Punktestand erreicht, dann wird das Level geändert. Das war mein Plan, aber ich schrieb einen Code wie 'spiderupdate: (cctime) delta' mit if code, wie Sie sehen können. Ich bin ziemlich sicher, dass das Problem cus ist, wenn ich 'wenn' dort nicht gebe und nur eine Ebene benutze, es funktioniert ohne zu crashen. kann mir bitte jemand helfen, herauszufinden, wie man es reparieren kann.Ich habe NSInvalidArgumentException Fehler in meiner App ... jemand gut bei diesem bitte helfen Sie mir

und Irrtum ist wie diese ‚NSInvalidArgumentException‘ Grund: ‚- [Play Textur]: Unbekannter Selektor an Instanz gesendet 0xf57da10‘

Wiedergabe meine Klassennamen und Textur soll Methode sein, aber ich habe keine Methode namens Textur.

-(void) spidersUpdate:(ccTime)delta { 
// Try to find a spider which isn't currently moving. 
for (int i = 0; i < 10; i++) 
{ 
    int randomSpiderIndex = CCRANDOM_0_1() * [spiders count]; 
    CCSprite* spider = [spiders objectAtIndex:randomSpiderIndex]; 
    // If the spider isn't moving it won’t have any running actions. 
    if ([spider numberOfRunningActions] == 0) 
    { 
     if(currentScore<=30) 
      [self level1:spider]; 
     else if(31<=currentScore<=60) 
      [self level2:spider]; 
     else if (61<=currentScore<=90) { 
      [self level3:spider]; 
     } 
     else if (91<=currentScore<=120) { 
      [self level4:spider]; 
     } 
     else if (120<=currentScore) { 
      [self level5:spider]; 
     } 
     break; 
     // Only one spider should start moving at a time. 
     } 

} 
} 

-(void) level1:(CCSprite*)spider { 
// Slowly increase the spider speed over time. 
numSpidersMoved++; 
if (numSpidersMoved % 8 == 0 && spiderMoveDuration > 2.0f) { 
    spiderMoveDuration -= 0.2f; } 
CGPoint belowScreenPosition = CGPointMake(spider.position.x, 
              -10); 
CCMoveTo* move = [CCMoveTo actionWithDuration:spiderMoveDuration 

            position:belowScreenPosition]; 
CCCallFuncN* callDidDrop =[CCCallFuncN actionWithTarget:self selector:@selector(spiderDidDrop:)]; 
CCSequence* sequence = [CCSequence actions:move, callDidDrop, nil]; 
if ([spider runAction:sequence]) 
{ 
    currentScore++; 
} 

} 

-(void) level2:(CCSprite*)spider 
{ 
numSpidersMoved++; 
if (numSpidersMoved % 8 == 0 && spiderMoveDuration > 2.0f) { 
    spiderMoveDuration -= 0.2f; } 

// Slowly increase the spider speed over time. 
CGPoint belowScreenPosition = CGPointMake(spider.position.x, 
              -10); 
CCMoveTo* move = [CCMoveTo actionWithDuration:spiderMoveDuration position:belowScreenPosition]; 
CCActionEase*esay=[CCEaseExponentialIn actionWithAction:move]; 
CCCallFuncN* callDidDrop =[CCCallFuncN actionWithTarget:self selector:@selector(spiderDidDrop:)]; 
CCSequence* sequence = [CCSequence actions:esay, callDidDrop, nil]; 
if ([spider runAction:sequence]) 
{ 
    currentScore++; 
} 
} 
-(void) level3:(CCSprite*)spider 
{ 
numSpidersMoved++; 
if (numSpidersMoved % 8 == 0 && spiderMoveDuration > 2.0f) { 
    spiderMoveDuration -= 0.2f; } 

// Slowly increase the spider speed over time. 
CGPoint belowScreenPosition = CGPointMake(spider.position.x, 
              -10); 
CCMoveTo* move = [CCMoveTo actionWithDuration:spiderMoveDuration position:belowScreenPosition]; 
CCActionEase*esay=[CCEaseExponentialInOut actionWithAction:move]; 
CCCallFuncN* callDidDrop =[CCCallFuncN actionWithTarget:self selector:@selector(spiderDidDrop:)]; 
CCSequence* sequence = [CCSequence actions:esay, callDidDrop, nil]; 
if ([spider runAction:sequence]) 
{ 
    currentScore++; 
    } 
} 

-(void) level4:(CCSprite*)spider 
{ 
numSpidersMoved++; 
if (numSpidersMoved % 8 == 0 && spiderMoveDuration > 2.0f) { 
    spiderMoveDuration -= 0.2f; } 

// Slowly increase the spider speed over time. 
CGPoint belowScreenPosition = CGPointMake(spider.position.x, 
              -10); 
CCMoveTo* move = [CCMoveTo actionWithDuration:spiderMoveDuration position:belowScreenPosition]; 
CCActionEase*esay=[CCEaseExponentialOut actionWithAction:move]; 
CCCallFuncN* callDidDrop =[CCCallFuncN actionWithTarget:self selector:@selector(spiderDidDrop:)]; 
CCSequence* sequence = [CCSequence actions:esay, callDidDrop, nil]; 
if ([spider runAction:sequence]) 
{ 
    currentScore++; 
} 
} 
-(void) level5:(CCSprite *)spider 
{ numSpidersMoved++; 
ccTime delayTime=2.5f; 
if (numSpidersMoved %8 == 0 && delayTime>1.0f) 
{ 
    delayTime-=0.2f; 
} 
CGPoint dropALittleBit= CGPointMake(spider.position.x, 350); 
CGPoint belowScreenPosition= CGPointMake(spider.position.x, -10); 
CCMoveTo*move =[CCMoveTo actionWithDuration:0.8 position:dropALittleBit]; 
CCDelayTime*delay=[CCDelayTime actionWithDuration:delayTime]; 
CCMoveTo*drop=[CCMoveTo actionWithDuration:0.3f position:belowScreenPosition]; 
CCCallFuncN*callDidDrop=[CCCallFuncN actionWithTarget:self selector:@selector(spiderDidDrop:)]; 
    if ([spider runAction:[CCSequence actions:move,delay,drop,callDidDrop, nil]]) 
{ 
    currentScore++; 
} 
} 
-(void) spiderDidDrop:(id)sender { 
// Make sure sender is actually of the right class. 
NSAssert([sender isKindOfClass:[CCSprite class]], @"sender is not a CCSprite!"); 
CCSprite* spider = (CCSprite*)sender; 
// move the spider back up outside the top of the screen 
CGPoint pos = spider.position; 
CGSize screenSize = [[CCDirector sharedDirector] winSize]; 
pos.y = screenSize.height + [spider texture].contentSize.height; 
spider.position = pos; 
} 
+0

Der einzige Hinweis hilft, „' texture'“Ich sehe in diesem massiven massiven Quellcode-Dump dort ist, wo Sie versuchen,' pos.y' in Ihrem 'spiderDidDrop zuweisen:' Methode. Wird die Ausnahme ausgelöst? –

+0

sry Jungs Ich benutze Textur für die Berechnung der Größe von Feind und Spieler. Was ich fragen möchte, ist, dass es kein Problem gibt, wenn ich nur "level1:" Methode verwende, aber wenn ich andere Methode verwende, bringt es diesen Fehler, selbst wenn ich andere Ebenenmethode allein benutze. – user1292919

Antwort

Verwandte Themen