Установка SKSpriteNode из UIImage

У меня возникли проблемы с настройкой SKSpriteNode из UIImage. Я использую мост на UIImage, конвертирую изображение в SKTexture, а затем создаю новый SKSpriteNode с этой SKTexture, но мой код продолжает падать со следующим предупреждением «Поток 1: EXC_BAD_ACCESS (код = 1, адрес = 0x0)»

CGImageRef textureImage =  (__bridge CGImageRef)(theUIImage);
SKTexture *heroTexture = [SKTexture textureWithCGImage:textureImage];
SKSpriteNode *hero = [SKSpriteNode spriteNodeWithTexture:heroTexture size:CGSizeMake(64, 64)];

person Brian Daneshgar    schedule 04.06.2015    source источник


Ответы (2)


Вместо того, чтобы соединять UIImage с CGImageRef, вы должны использовать:

CGImageRef textureImage = [theUIImage CGImage];

Если ваше изображение не равно нулю, оно должно работать.

Кроме того, вы можете попробовать:

SKTexture *heroTexture = [SKTexture textureWithImage:theUIImage];

Небольшой совет; всегда проверяйте на «недействительность».

person EDUsta    schedule 04.06.2015
comment
Я пробовал с мостом и без него, и моя нить все еще рушится! Я также проверил, чтобы убедиться, что изображение не равно нулю (я добавил набор UIImageView к изображению для тестирования). Однако код работает нормально, когда я создаю экземпляр с использованием локального изображения: SKSpriteNode *hero= [SKSpriteNode spriteNodeWithImageNamed:@hero.png normalMapped:YES]; - person Brian Daneshgar; 05.06.2015
comment
Итак, каков источник theUIImage? - person EDUsta; 05.06.2015
comment
Я делаю снимок с помощью камеры и устанавливаю его как UIImage - person Brian Daneshgar; 05.06.2015
comment
Думаю, дело может быть в имидже. Вы также должны проверить CGImageRef, если он равен 0 или нет. - person EDUsta; 05.06.2015

Попробуйте создать текстуру, используя изображение: [SKTexture textureWithImageNamed:...], а затем используйте его для создания спрайта: [SKSprite spriteWithTexture:....]. (Это может быть SpriteFromTexture)

person Septronic    schedule 04.04.2016