首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改CCScene时出错

更改CCScene时出错
EN

Stack Overflow用户
提问于 2012-04-04 07:04:02
回答 2查看 242关注 0票数 0

我是cocos2d的初学者,但我在Objective-C和iphoneSdk方面有一些经验。但是我的应用程序中有一个问题,我不能找出错误是什么。

我有一个动画( CCLayer ),它向播放器显示一个小动画,然后它启动另一个CCLayer (关卡):

动漫:

代码语言:javascript
复制
-(id) init{

    if( (self=[super init])) {

CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache]; 
[frameCache addSpriteFramesWithFile:@"Anime.plist"];  



CCSprite * backgound = [CCSprite spriteWithSpriteFrameName:@"Back.png"];
backgound.anchorPoint=ccp(0,0);
[self addChild:backgound z:-1];


CCSprite *body = [CCSprite spriteWithSpriteFrameName:@"Body1.png"];
[self addChild:body z:0];

CCSprite *bMoved = [CCSprite spriteWithSpriteFrameName:@"Gigante1.png"];
[self addChild:bMoved z:1];      


NSMutableArray *nuvemAnim = [[NSMutableArray alloc] init];
        for (int i = 1; i < 41; i++) {
            NSString *frameNames = [NSString stringWithFormat:@"Gigante%i.png",i];
            [nuvemAnim addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] 
                                  spriteFrameByName:frameNames]];

        }    


        CCAnimation *gigAnim = [CCAnimation animationWithFrames:nuvemAnim  delay:1.0f/24.0f];
        CCAnimate* animate = [CCAnimate actionWithAnimation:gigAnim];   


        [bMoved runAction:[CCSequence actions:
                         [CCDelayTime actionWithDuration:1],
                         animate,
                         [CCDelayTime actionWithDuration:1],
                         [CCCallFunc actionWithTarget:self selector:@selector(changeCCScene)],
                           nil]];


    }
return self; 

在第一级中,使用CCSpriteFrameCache来创建角色的动画,

级别:

代码语言:javascript
复制
-(id) init{
if( (self=[super init])) {

    self.isTouchEnabled=YES;


    CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache]; 
   [frameCache addSpriteFramesWithFile:@"Level3.plist"]; 

    CCSprite * backgound = [CCSprite spriteWithSpriteFrameName:@"Fundo9.png"];
    backgound.anchorPoint=ccp(0,0);
    [self addChild:backgound z:-1];


    CCSprite man = [CCSprite spriteWithSpriteFrameName:@"Man1.png"];
    [self man z:0];


    eAnim = [[NSMutableArray alloc] init];
    for (int i = 2; i < 178; i++) {
        NSString *frameNames = [NSString stringWithFormat:@Man%i.png",i];
        [eAnim addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] 
                                spriteFrameByName:frameNames]];

    } 

但是在控制台中对所有帧都会无限地给出这种类型的错误

代码语言:javascript
复制
2012-04-03 23:37:51.987 GigV1[1432:10a03] cocos2d: WARNING: an alias with name Man12.png already exists
2012-04-03 23:37:51.988 GigV1[1432:10a03] cocos2d: WARNING: an alias with name Man155.png already exists

ANy为什么会发生这种情况??

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-04 18:00:09

您正在从Anime.plist和Level3.plist加载sprite帧:

代码语言:javascript
复制
CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache]; 
[frameCache addSpriteFramesWithFile:@"Anime.plist"]; 

[frameCache addSpriteFramesWithFile:@"Level3.plist"]; 

此警告表示您正在添加更多具有相同名称的精灵帧:

代码语言:javascript
复制
WARNING: an alias with name Man12.png already exists

要解决此问题,您有三种选择:

  • 确保您没有在两个不同的纹理图集中使用相同的精灵帧名称(同一图像)

  • 从缓存中卸载不需要的精灵帧,然后再从另一个纹理图集加载精灵帧

  • 忽略警告
票数 1
EN

Stack Overflow用户

发布于 2012-04-04 09:35:23

您在该行中缺少引号:

NSString *frameNames = [NSString stringWithFormat:@Man%i.png",i];

应该是在@之后和Man%i之前的开始引用

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10002708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档