2012-11-19 58 views
0

我的應用程序從URL獲取一些資源,特別是.pvr.ccz,並將它們保存在Documents目錄中。如何讓Cocos2D可以搜索特定路徑中的資源?

NSString *documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
... 
[responseObject writeToFile:[documentsDirectoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", <file_name>, @"pvr.ccz"]] options:NSAtomicWrite error:nil]; 

之後創建使用.plist.pvr.ccz一個精靈。已在項目中的屬性列表中指定的.png圖像列表。

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"<property_list_name>.plist"]; 
CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:[NSString stringWithFormat:@"<file_name>.png"]]; 

這將被警告,-[CCFileUtils fullPathFromRelativePath:resolutionType:] : cocos2d: Warning: File not found: <file_name>.pvr.ccz

有沒有什麼辦法讓Cocos2D中可以從保存在特定文件夾中的網址搜索資源?或者有什麼方法可以在Cocos2D可以找到它們的地方保存來自URL的資源?

回答

1

我相信如果你指定一個完整路徑到coco的話,它會看起來那裏。因此

NSString*fqn = [documentsDirectoryPath [email protected]"<property_list_name>.plist"]; 
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:fqn]; 

還沒有試過這個,但它應該工作。

編輯:假定.plist在項目中,但.pvr.ccz位於文檔字典中。進一步假設你的紋理被稱爲「下載-hd.pvr.ccz」,該項目使HD的設備,下面的例子應該找到您的文件:

NSString*[email protected]"downloaded-hd.pvr.ccz"; 
NSString*fqn = 
    [documentsDirectoryPath stringByAppendingPathComponent:textureFileName]; 
[[CCSpriteFrameCache sharedSpriteFrameCache] 
    addSpriteFramesWithFile:@"<property_list_name>.plist" 
      textureFileName:fqn]; 

我認爲-HD將正確地默默處理。

+0

未找到的文件不是直接調用的文件,即'.pvr.ccz',當'CCSprite * sprite = [CCSprite spriteWithSpriteFrameName:[NSString stringWithFormat:@「 .png」]];'被調用時,Cocos2D將通過'.plist'中指定的座標從'.pvr.ccz'中獲得該圖像。 – Protocole

+0

我剛剛發現我的解決方案,它將'.plist'和'.pvr.ccz'保存在同一個地方。你的解決方案也是工作而且非常相似。非常感謝你。 – Protocole