首先肯定得对图片进行分类,如一款卡牌游戏,图片有角色,角色icon,武器,武器icon等;这里用枚举对其分类标识:
enum UIIMAGE { ARMOR_IMG, ARMOR_ICON, EQUIP_IMG, EQUIP_ICON, ITEM_ICON, MAX_UIIMAGE }
有了图片分类,其加载路径也是一一对应的,故路径分类也如下:
static const char * UIIMAGEPATH[MAX_UIIMAGE] = { "armorImg\\", "armorIcon\\", "equipImg\\", "equipIcon\\", "itemIcon\\", }
接着就是实现图片加载的方法了:
void UIDepository::bindToUIImg(gui::UIImageView * img, UIIMAG type, int stuffID) { if(NULL == img) { return; } int imgID = 0; switch(type) { case ARMOR_IMG: { const xxx armor = xxx->getArmor(stuffID); //这个通过固有的方法获取其角色对象(包括iconID) imgID = armor->IconID; } break; // 下面类比上面 case ARMOR_ICON:... case EQUIP_IMG:... case EQUIP_ICON:... case ITEM_ICON:... } std::string filePath = UIIMAGEPATH[type]; filePath += CCString::createWithFormat("%d.png", imgID)->getCString(); //由此可见,图片保存的名字必须是与其ID对应,即名字为:ID.png(如:110.png) img->loadTexture( filePath.c_str() ); }
UIDepository::bindToUIImg(img, ARMOR_ICON, armor->armorID);
各个参数是什么意思,相信大家是能看得懂的。
至此,已实现cocos2dx游戏中的图片加载。
Cocos2dx 中大量读取图片的实现,布布扣,bubuko.com
原文:http://blog.csdn.net/zhanzhan0329/article/details/20849181