Предупреждение после инициализации эффектов частиц в Cocos2dx - «предупреждение libpng: iCCP: известен неправильный профиль sRGB» - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь загрузить эффекты частиц (в формате .plist) в свой игровой код Cocos2d-x, и я сталкиваюсь с предупреждением: "libpng warning: iCCP: known incorrect sRGB profile", как упоминалось в вопросе. Я провел некоторое исследование с моей стороны, и другие пользователи StackOverflow, которые задавали подобные вопросы , имели эту проблему при загрузке файлов .png.

Однако при инициализации файлов .plist я столкнулся с той же проблемой. Любое понимание того, как удалить это предупреждение, будет полезно. Пожалуйста, обратите внимание, что у меня нет проблем с загрузкой файла .plist как такового, но предупреждения загрязняют мои потоки журналов.

Пример кода:

ParticleSystem* testStar = testNode->getChildByName<ParticleSystem*>("star");
testStar->initWithFile(filePath + "/" + "test.plist"); //valid filePath
testStar->setVisible(true); 

Кроме того, чтобы подтвердить, что это не проблема с самим файлом .plist, я попытался загрузить файл вручную в моем редакторе интерфейса пользователя, и что казалось, загрузить его без каких-либо проблем.

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

Cocos2d-x версия: cocos2d-x-3.14.1

1 Ответ

0 голосов
/ 12 февраля 2020

Я смог решить эту проблему, используя подкласс ParticleSystem вместо ParticleSystem. Подкласс, который я использовал, - ParticleSystemQuad. Кроме того, я понял, что initWithFile API вызывался в моем коде несколько раз из-за планировщиков обновлений Cocos2D. Это могло быть причиной этого предупреждения.

Чтобы исправить это предупреждение, я создал переменную / system fre sh и назначил для нее родительский элемент, в то же время установив позицию новой переменной в положение известного (требуемого положения) узла.

/* Getting the desired particleEffect position */    
const Vec2& desiredPos = testNode->getChildByName("blablablah")->getPosition();
std::string filePath = "/"; //assign a directory for the .plist

// Avoid exponentiation
if (!testNode->getChildByName("sampleParticle")) {
    auto p1 = ParticleSystemQuad::create(filePath + "/" + "test.plist");
    p1->setPosition(desiredPos);
    p1->resetSystem();
    p1->setName("sampleParticle");
    p1->setVisible(true);
    testNode->addChild(p1);
}
...