为什么initWithSpriteFrameName()和initWithFile()对Sprite有不同的影响?

时间:2016-02-03 07:08:46

标签: cocos2d-x sprite init

我需要一个破碎效果,我可以成功地用这两种不同的方法初始化我的精灵,但破碎效果是不同的。

  1. The Effect I use initWithFile()
  2. The Effect I use initWithSpriteFrameName()
  3. (忽略图像中的文字,下面是代码)

    bool ShatterSprite::init(const string &texFileName, float gridSideLen, GameTextureResType resType)
    {
        m_gridSideLen = gridSideLen;
        switch (resType) {
            case PLIST:
                Sprite::initWithSpriteFrameName(texFileName); //sprite Frame
                break;
            case LOCAL:
                Sprite::initWithFile(texFileName);
                break;
            default:
                CCASSERT(0, "no here");
                break;
        }
        createShatter();
        return true;
    }
    

    我使用initWithSpriteFrameName的方法无法获得我需要的效果,有人可以告诉我原因吗?

1 个答案:

答案 0 :(得分:0)

initWithSpriteFrameName需要帧名称,initWithFile需要文件名。你在两者中发送相同的内容。 file表示磁盘上的实际文件,frame表示已在内存中缓存的帧名称。从以下代码中,您可以在内存中添加帧

SpriteFrameCache* cache = SpriteFrameCache::getInstance();
cache->addSpriteFramesWithFile("animations/grossini.plist");