Marsik Posted June 26, 2023 Posted June 26, 2023 Здравствуйте, у меня при попытке обратиться к методу getImage(), класса WidgetSprite, происходит краш. auto widgetSprite = WidgetSprite::create(m_gui); auto img = widgetSprite->getImage(); Версия 2.16.1.0.
bmyagkov Posted June 26, 2023 Posted June 26, 2023 Добрый день! Дело в том, что для WidgetSprite не задано изображение, сначала необходимо выполнить setImage() и только после этого обращаться к нему через getImage() как показано в примере ниже: int AppWorldLogic::init() { using namespace Unigine; ImagePtr sprite_image = Image::create(); // Создается изображение залитое белым цветом sprite_image->create2D(250, 250, Image::FORMAT_RGBA8); for (int i = 0; i < sprite_image->getWidth(); ++i) { for (int j = 0; j < sprite_image->getHeight(); ++j) { sprite_image->set2D(i, j, Image::Pixel(255, 255, 255, 255)); } } // Изображение установлено в WidgetSprite WidgetSpritePtr sprite = WidgetSprite::create(); sprite->setImage(sprite_image); // Так как была выделена память, теперь изображение можно вызывать из WidgetSprite ImagePtr image; image = sprite->getImage(); // Проверка изображения image->save("image_check.png"); return 1; } Спасибо!
Marsik Posted June 29, 2023 Author Posted June 29, 2023 А почему нельзя получить nullptr если изображение не задоно, было бы удобно использовать для проверки, задано изображение или нет ?
bmyagkov Posted June 29, 2023 Posted June 29, 2023 Добрый день! 1 hour ago, Marsik said: А почему нельзя получить nullptr если изображение не задоно, было бы удобно использовать для проверки, задано изображение или нет ? Это поведение было ошибкой и оно уже исправлено в актуальном релизе. На SDK 2.16 для проверки вы можете использовать следующий способ: TexturePtr t = sprite->getRender(); if (!t) return 1; Спасибо!
Recommended Posts