// 通过plist载入缓存
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("test.plist");
// 通过缓存载入sprite
CCSprite* sp = CCSprite::createWithSpriteFrameName("test01.png");
以上2句代码,可以通过plist创建一个sprite,简单分析下过程。
通过plist载入缓存
首先是通过plist载入缓存,跟踪到源码看到如下片段:
void CCSpriteFrameCache::addSpriteFramesWithFile(const char *pszPlist)
{
CCAssert(pszPlist, "plist filename should not be NULL");
// 判断是否加载过该文件 如果没加载过,才做以下这些事情
if (m_pLoadedFileNames->find(pszPlist) == m_pLoadedFileNames->end())
{
// 获取完整路径名,创建dict
std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathForFilename(pszPlist);
CCDictionary *dict = CCDictionary::createWithContentsOfFileThreadSafe(fullPath.c_str());
string texturePath("");
// 尝试获取textureFileName,如果需要指定,格式大概长这样:
// <key>metadata</key>
// <dict>
// <key>textureFileName</key>
// <string>tex.png</string>
// </dictt>
// 指定载入tex.png
CCDictionary* metadataDict = (CCDictionary*)dict->objectForKey("metadata");
if (metadataDict)
{