首先肯定得对图片进行分类,如一款卡牌游戏,图片有角色,角色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游戏中的图片加载。