Cocos2D вылетает на iPhone сразу, но не в симуляторе - PullRequest
1 голос
/ 18 мая 2011

Я пытаюсь протестировать приложение Cocos2D на iPhone и получить этот сбой, который я скопировал с консоли:

    cocos2d: CCSpriteFrameCache: Trying to use file 'heroTestSheet.png' as texture
    cocos2d: CCTexture2D. Can't create Texture. UIImage is nil
    cocos2d: Couldn't add image:heroTestSheet.png in CCTextureCache
    cocos2d: CCSpriteFrameCache: Couldn't load texture
    cocos2d: CCTexture2D. Can't create Texture. UIImage is nil
    cocos2d: Couldn't add image:heroTestSheet.png in CCTextureCache
    cocos2d: CCSpriteFrameCache: Frame 'heroFrame1.png' not found
    *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSMutableArray insertObject:atIndex:]: attempt to insert nil object at 0'
    *** Call stack at first throw:
    (
0   CoreFoundation                      0x3759dc7b __exceptionPreprocess + 114
1   libobjc.A.dylib                     0x32d9bee8 objc_exception_throw + 40
2   CoreFoundation                      0x3752a951 -[__NSArrayM insertObject:atIndex:] + 136
3   CoreFoundation                      0x3752a8bf -[__NSArrayM addObject:] + 34
4   cocosTests                          0x0000ce28 -[HeroClass init] + 1544
5   cocosTests                          0x0000304c -[DebugZoneLayer init] + 860
6   cocosTests                          0x00074e04 +[CCNode node] + 76
7   cocosTests                          0x0000c4e4 -[DebugZoneScene init] + 244
8   cocosTests                          0x00074e04 +[CCNode node] + 76
9   cocosTests                          0x0000c390 +[DebugZoneScene scene] + 100
10  cocosTests                          0x00002540 -[cocosTestsAppDelegate applicationDidFinishLaunching:] + 1028
11  UIKit                               0x3592502c -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1200
12  UIKit                               0x3591ea78 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 396
13  UIKit                               0x358d82e4 -[UIApplication handleEvent:withNewEvent:] + 1476
14  UIKit                               0x358d7b1c -[UIApplication sendEvent:] + 68
15  UIKit                               0x358d73b4 _UIApplicationHandleEvent + 6824
16  GraphicsServices                    0x33e77c88 PurpleEventCallback + 1048
17  CoreFoundation                      0x3752f5cb __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 28
18  CoreFoundation                      0x3752f589 __CFRunLoopDoSource1 + 164
19  CoreFoundation                      0x37521835 __CFRunLoopRun + 580
20  CoreFoundation                      0x3752150b CFRunLoopRunSpecific + 226
21  CoreFoundation                      0x37521419 CFRunLoopRunInMode + 60
22  UIKit                               0x3591d554 -[UIApplication _run] + 548
23  UIKit                               0x3591a558 UIApplicationMain + 972
24  cocosTests                          0x000020c4 main + 100
25  cocosTests                          0x0000205c start + 40
    )
    terminate called after throwing an instance of 'NSException'
    Program received signal:  “SIGABRT”.
    warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.2.1 (8C148)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib (file not found).

Запуск в симуляторе работает нормально, но я все равно получаю это сообщение в консоли при запуске " CCSpriteFrameCache: при попытке использовать файл 'heroTestSheet.png' в качестве текстуры "

Я подозреваю, что именно здесь начинается проблема. Возможно, я просто понимаю, как должен быть написан мой код для моего подкласса спрайтов. Я думал, что heroTestSheet.png был текстурой, на которую он опирался, чтобы разделиться на другие изображения, ссылающиеся на plist.

Вот мой инициал в подклассе моего героя:

    -(id) init{
    self = [super init];
    if (!self) {
        return nil;
    }

    _collisWidthFromCtr  = 16;
    _collisHeightFromCtr = 16;

    _collisPushPointsNums = 5;

    _travelRectCenterPoints = [[NSMutableArray alloc] init];

    _collisPushPoints = [[NSMutableArray alloc] init];

    [_collisPushPoints insertObject:[NSValue valueWithCGPoint:CGPointMake( _collisWidthFromCtr, _collisHeightFromCtr)] atIndex:0];
    [_collisPushPoints insertObject:[NSValue valueWithCGPoint:CGPointMake( _collisWidthFromCtr,                    0)] atIndex:1];
    [_collisPushPoints insertObject:[NSValue valueWithCGPoint:CGPointMake( _collisWidthFromCtr,-_collisHeightFromCtr)] atIndex:2];
    [_collisPushPoints insertObject:[NSValue valueWithCGPoint:CGPointMake( 0,                   _collisHeightFromCtr)] atIndex:3];
    [_collisPushPoints insertObject:[NSValue valueWithCGPoint:CGPointMake(-_collisWidthFromCtr, _collisHeightFromCtr)] atIndex:4];

    _rectCheckRes = 32;

    _speed = 8;

    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"heroTestSheet.plist"];

    _heroSpriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"heroTestSheet.png"];

    //[self addChild:_heroSpriteSheet];

    NSMutableArray *heroSpriteFlyAnimFrames = [NSMutableArray array];
    for(int i = 1; i <= 2; ++i) {
        [heroSpriteFlyAnimFrames addObject:
         [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:
          [NSString stringWithFormat:@"heroFrame%d.png", i]]];
    }

    CCAnimation *heroSpriteFlyAnim = [CCAnimation animationWithFrames:heroSpriteFlyAnimFrames delay:0.03f];

    _heroSprite = [CCSprite spriteWithSpriteFrameName:@"heroFrame1.png"];  

    _heroSpriteFlyAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:heroSpriteFlyAnim restoreOriginalFrame:NO]];
    [_heroSprite runAction:_heroSpriteFlyAction];

    [_heroSpriteSheet addChild:_heroSprite];

    return self;
}

Пожалуйста, извините, если мне неясно, поэтому дайте мне знать любую другую информацию, которую я должен предоставить. Просто опубликовать это сейчас, потому что я не знаю, где еще начать решать и какую другую информацию я должен предоставить, и это может быть очевидно для некоторых других разработчиков Cocos, что не так из того, что я написал. Спасибо

Ответы [ 3 ]

0 голосов
/ 22 мая 2011

Понял ... это был только файл heroTestSheet.png, который он пытался использовать, был как-то недействителен. Я экспортировал в более старый фотошоп, но я не совсем уверен, какие настройки у него были. Я снова экспортировал его из нового фотошопа без каких-либо настроек цветовой шкалы, и теперь он работает отлично!

0 голосов
/ 21 мая 2012

Я думаю, что ваше изображение не было добавлено в проект.

Вы должны скопировать бинарный файл на ресурс.

выберите вашу цель и затем выберите фазы сборки, затем скопируйте ресурс комплекта добавьте свое изображение на этот контент.

Я думаю, что это сработает.

0 голосов
/ 19 мая 2011

Симулятор может быть более щадящим, чем устройство.Дважды проверьте, что ваше имя файла действительно «heroTestSheet.png», а не «HeroTestSheet.png», например.Он чувствителен к регистру на вашем устройстве.

...