Cocos2d и SpriteBatchNode: невозможно определить, какой фрейм спрайта вызывает сбой подтверждения
Я уже спрашивал что-то подобное, но я не могу понять, как правильно это отлаживать. Этовопрос.
Я добавил обработчик исключений (перехватывает все исключения Objective-C), и это результат того, что я вижу:
Проблема заключается в методе setTexture, и при проверке он не может проверить, совпадает ли имя текстуры, которое необходимо отобразить, с именем в текущем пакетном узле спрайта.
Это происходит при попытке заменить одну сцену другой, но не всегда. Это связано с новой сценой, так как я пытался «изолировать» проблему, вызывая замену из другой части игры, и это все еще доставляет проблемы.
В игровой сцене у меня есть пара листов спрайтов и узлов пакетных спрайтов, но, поскольку мне не удается выделить идентификатор листа спрайта, я не могу понять, какой фрейм спрайта создает мне проблему, а также я не понимаю, почему это бывает только иногда.
Я бы хотел:
понять, какое имя фрейма спрайта дает мне AssertionFailureпонять, к какому спрайтовому листу он принадлежитЭто должно помочь мне понять, если это проблема с именами или это связано с чем-то другим.
Надеюсь, что не быть слишком хромым с этим вопросом ..
РЕДАКТИРОВАТЬ: Я попытался ответить, но я не могу прочитать информацию 'fileName', вот что говорит отладчик "Сводка недоступна":
Вот как я создаю свойство filename:
/** TMP: Bug solving filename */
@property (copy) NSString *fileName;
-(id) initWithTexture:(CCTexture2D*)texture rectInPixels:(CGRect)rect rotated:(BOOL)rotated offset:(CGPoint)offset originalSize:(CGSize)originalSize
{
if( (self=[super init]) )
{
self.fileName = [NSString stringWithFormat:@"GLUINT texture name: %i", texture.name];
self.texture = texture;
rectInPixels_ = rect;
rect_ = CC_RECT_PIXELS_TO_POINTS( rect );
offsetInPixels_ = offset;
offset_ = CC_POINT_PIXELS_TO_POINTS( offsetInPixels_ );
originalSizeInPixels_ = originalSize;
originalSize_ = CC_SIZE_PIXELS_TO_POINTS( originalSizeInPixels_ );
rotated_ = rotated;
}
return self;
}
-(id) initWithTextureFilename:(NSString *)filename rectInPixels:(CGRect)rect rotated:(BOOL)rotated offset:(CGPoint)offset originalSize:(CGSize)originalSize
{
if( (self=[super init]) )
{
self.fileName = fileName; //TMP
texture_ = nil;
textureFilename_ = [filename copy];
rectInPixels_ = rect;
rect_ = CC_RECT_PIXELS_TO_POINTS( rect );
offsetInPixels_ = offset;
offset_ = CC_POINT_PIXELS_TO_POINTS( offsetInPixels_ );
originalSizeInPixels_ = originalSize;
originalSize_ = CC_SIZE_PIXELS_TO_POINTS( originalSizeInPixels_ );
rotated_ = rotated;
}
return self;
}