在Cocos2dx中初始化粒子效果后的警告-“ libpng警告:iCCP:已知错误的sRGB配置文件”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Cocos2dx中初始化粒子效果后的警告-“ libpng警告:iCCP:已知错误的sRGB配置文件”相关的知识,希望对你有一定的参考价值。

我正在尝试在我的Cocos2d-x游戏代码中加载粒子效果(.plist格式),并且我正面临警告:"libpng warning: iCCP: known incorrect sRGB profile",如问题中所述。我已经做了一些研究,其他要求similar questions的StackOverflow用户在加载.png文件时遇到了此问题。

但是,我在初始化.plist文件时遇到了同样的问题。关于如何删除此警告的任何见解都将有所帮助。请注意,这样加载.plist文件不会遇到任何问题,但是警告正在污染我的日志流。

示例代码:

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

[另外,要确认这不是.plist文件本身的问题,我尝试在UI编辑器工具上手动加载该文件,并且似乎没有任何问题。

如果有必要,我准备提供有关环境的更多详细信息。我也尝试在一个空白项目中执行上述操作,并且能够重现相同的警告。

Cocos2d-x版本:cocos2d-x-3.14.1

答案

我能够通过使用ParticleSystem的子类而不是ParticleSystem本身来解决此问题。我使用的子类是ParticleSystemQuad。另外,由于Cocos2D更新调度程序,我意识到在我的代码中多次调用了initWithFile API。这可能是导致此警告的原因。

为了解决此警告,我创建了一个新的变量/系统,并为其指定了父级,同时将新变量的位置设置为已知(所需位置)节点的位置。

/* 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);
}

以上是关于在Cocos2dx中初始化粒子效果后的警告-“ libpng警告:iCCP:已知错误的sRGB配置文件”的主要内容,如果未能解决你的问题,请参考以下文章

cocos2dx 2.x 粒子渲染时有黑色粒BUG

Cocos2dx 粒子销毁问题

Cocos2dx 小技巧现成的粒子特效

Canvas文字粒子效果

MATLAB粒子群算法初始化粒子群函数

cocos2dx 触摸钢琴