在触摸时更改精灵的纹理框架

时间:2013-10-01 05:20:50

标签: ios cocos2d-iphone

作为cocos2d的新手我在这一点上做灰泥我需要在触摸开始时改变精灵的图像(来自精灵表,我也没有使用.plist作为坐标),所以为此我使用了以下代码

elfSheet = [CCSpriteBatchNode batchNodeWithFile:@"BowSpritesheet.png" capacity:12];
            [self addChild:elfSheet];
            elfFrame1 = [CCSpriteFrame frameWithTexture:elfSheet.texture rect:
                         CGRectMake(0, 0, 128, 140)]; //elf run00001.png
            elfFrame2 = [CCSpriteFrame frameWithTexture:elfSheet.texture rect:
                         CGRectMake(128, 0, 110, 140)]; //elf run00002.png

Bow = [CCSprite  spriteWithTexture:elfFrame1.texture rect:elfFrame1.rect];
            Bow.position=ccp(size.width/8, size.height/5);
            [elfSheet addChild:Bow z:0];

此处elfSheetCCSpriteBatchNode
现在在cctouches开始我需要将精灵帧更改为elfFrame2当我尝试设置显示帧时它会创建一个崩溃

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [Bow setDisplayFrame:elfFrame2];//Creates a crash
}

请帮我解决这个问题 提前谢谢

1 个答案:

答案 0 :(得分:0)

你过度释放了CCSprite(Bow)。 spriteWithTexture返回一个自动释放的对象,因此你不应该再次调用它自动释放。

相关问题