1

I am trying to add different level on my game. while playing game score will go up and reach certain score then level will be changed. That was my plan but i wrote a code like 'spiderupdate:(cctime)delta' with if code as you can see. I am pretty sure that is problem cus when i do not put 'if' there and use only one level, it works with out crashing. can anyone help me to figure out how to fix it please.

and error is like this 'NSInvalidArgumentException', reason: '-[Play texture]: unrecognized selector sent to instance 0xf57da10'

Play is my class name and texture should be method, but i do not have any method named texture.

-(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;
}
user1292919
  • 193
  • 8
  • The only reference to "`texture`" I see in that massive massive source code dump up there is where you are trying to assign `pos.y` in your `spiderDidDrop:` method. Is that where the exception is being thrown? – Michael Dautermann Apr 02 '12 at 17:18
  • sry guys i am using texture for calculate size of enemy and player. What i wanna ask is there is no problem when i use only "level1:"method, but if i use other method it brings that error even if i use other level method alone. – user1292919 Apr 02 '12 at 23:34

1 Answers1

0

Here is a link http://www.cocos2d-iphone.org/api-ref/0.99.0/interface_c_c_sprite.html whhich tells properties for CCCsprite , you can see that there is no property as texture , so check out and use textureRect property , if you want to.

Hope it helps

Pavan
  • 443
  • 5
  • 21