void BackpackScene::onLoadResources() { addImageAsync("background.png"); addImageAsync("CloseNormal.png"); addImageAsync("CloseSelected.png"); addImageAsync("btn1_1.png"); addImageAsync("btn1_2.png"); }
void TextureLoadingManager::begin() { auto tc = _textureCache; _isRunning = true; _textureCount = _textureList.size(); _delegate->onTextureLoadingBegan(this); for (auto& iter : _textureList){ tc->addImageAsync(iter.first, CC_CALLBACK_1(TextureLoadingManager::TextureLoadingCallback, this, iter.second)); } }
void LoadResourceLayer::startLoad() { if (_images.empty()) { loadingCallBack(nullptr); } else { auto instance = Director::getInstance()->getTextureCache(); for (const auto& image:_images) { instance->addImageAsync(image,CC_CALLBACK_1(LoadResourceLayer::loadingCallBack, this)); } } }
void loadAllResourcesAsyc(const std::vector<std::string>& resources, const std::function<void(size_t)>& callback) { if (resources.size() == 0) { callback(0); return; } struct __Args* args = new __Args(); std::copy(resources.begin(), resources.end(), std::back_inserter(args->resources)); args->callback = callback; args->size_res = args->resources.size(); args->size_textures = 0; /*将pvr或png分离出来单独加载*/ args->bound = std::partition(args->resources.begin(), args->resources.end(), [args](/*typename _ResArr::value_type&*/std::string& value)->bool{ if(value.find("pvr")!=-1 || value.find("png")!=-1){ ++args->size_textures; return true; } else return false; }); /*等纹理加载完毕,再加载其他资源 另外再开一个线程加载*/ std::thread loadThread(&_asyncLoadThreadFunc, args); loadThread.detach(); /*因为必须在主线程将纹理加载进入显存,所以可以用cocos2d-x异步加载函数*/ auto textureCache = cocos2d::Director::getInstance()->getTextureCache(); for (auto it=args->resources.begin(); it!=args->bound; ++it) { cocos2d::log("load texture image: %s",it->c_str()); textureCache->addImageAsync(*it, [args](cocos2d::Texture2D *){ args->callback(--args->size_res); --args->size_textures; if (args->size_textures == 0) { args->cv.notify_one(); } if (args->size_res == 0) { delete args; } }); } }
void HandleImageLoad::imageAsyncLoad(const string &fileName) { string fileNamePic = fileName; if (fileName.find(".png") == std::string::npos) { UtilString::stringReplace(fileNamePic, ".plist", ".png"); } auto fullpath = FileUtils::getInstance()->fullPathForFilename(fileNamePic); // check if file exists if (fullpath.empty() || !FileUtils::getInstance()->isFileExist(fullpath)) { return; } auto textureCache = Director::getInstance()->getTextureCache(); if (textureCache->getTextureForKey(fullpath)) { return; } textureCache->addImageAsync(fileNamePic, CC_CALLBACK_1(HandleImageLoad::imageAsyncCallback, this, fileName)); _numPlistNeedLoad++; }
void LoadingScene::LoadingPic() { auto TexureCache=Director::getInstance()->getTextureCache(); TexureCache->addImageAsync("boss.png",CC_CALLBACK_1(LoadingScene::LoadingCallback,this)); TexureCache->addImageAsync("coco.png",CC_CALLBACK_1(LoadingScene::LoadingCallback,this)); TexureCache->addImageAsync("groundLevel.jpg", CC_CALLBACK_1(LoadingScene::LoadingCallback, this)); TexureCache->addImageAsync("bullets.png", CC_CALLBACK_1(LoadingScene::LoadingCallback, this)); TexureCache->addImageAsync("daodan_32.png", CC_CALLBACK_1(LoadingScene::LoadingCallback, this)); TexureCache->addImageAsync("diji02_v002_128.png", CC_CALLBACK_1(LoadingScene::LoadingCallback, this)); TexureCache->addImageAsync("dijiyuanv001.png", CC_CALLBACK_1(LoadingScene::LoadingCallback, this)); TexureCache->addImageAsync("playerv002_256.png", CC_CALLBACK_1(LoadingScene::LoadingCallback, this)); TexureCache->addImageAsync("streak.png", CC_CALLBACK_1(LoadingScene::LoadingCallback, this)); TexureCache->addImageAsync("gameover_score_num_0.png",CC_CALLBACK_1(LoadingScene::LoadingCallback,this)); TexureCache->addImageAsync("num_0.png",CC_CALLBACK_1(LoadingScene::LoadingCallback,this)); TexureCache->addImageAsync("score_right_top.png", CC_CALLBACK_1(LoadingScene::LoadingCallback, this)); TexureCache->addImageAsync("gameover.png", CC_CALLBACK_1(LoadingScene::LoadingCallback, this)); }
bool MenuLayer::init() { if (!Layer::init()) { return false; } //播放菜单场景的音乐 if (soundOn) { SimpleAudioEngine::getInstance()->playBackgroundMusic((MUSIC + "menuMusic.mp3").c_str(), true); } //获取整个设备的尺寸 //auto size = Director::getInstance()->getWinSize(); //创建Menu背景 Sprite* bg = Sprite::create(IMG_BG + "img_bg_logo.jpg"); bg->setPosition(Vec2(SIZE_WIDTH / 2, SIZE_HEIGHT / 2)); addChild(bg); Sprite* logo = Sprite::create(IMG_BG + "logo.png"); logo->setPosition(Vec2(SIZE_WIDTH / 2, SIZE_HEIGHT * 2 / 3 + 15)); addChild(logo); //创建Menu菜单项-play MenuItemImage *itemPlay= MenuItemImage::create(IMG_MENU + "play_nor.png", IMG_MENU + "play_pre.png",CC_CALLBACK_1(MenuLayer::playIsPressed, this)); //创建Menu菜单项-score MenuItemImage *itemScore= MenuItemImage::create(IMG_MENU + "score_nor.png", IMG_MENU + "score_pre.png",CC_CALLBACK_1(MenuLayer::scoreIsPressed, this)); itemScore->setPosition(Vec2(0,-itemScore->getContentSize().height-20)); //创建Menu菜单项-about MenuItemImage *itemAbout= MenuItemImage::create(IMG_MENU + "about_nor.png", IMG_MENU + "about_pre.png",CC_CALLBACK_1(MenuLayer::aboutIsPressed, this)); itemAbout->setPosition(Vec2(0,-itemScore->getContentSize().height*2-40)); //创建Menu菜单项-settings MenuItemImage *itemSettings = MenuItemImage::create(IMG_MENU + "setting.png", IMG_MENU + "setting.png",CC_CALLBACK_1(MenuLayer::setttingsIsPressed, this)); itemSettings->setPosition(Vec2(0,-itemScore->getContentSize().height*3-40)); //test MenuItemFont *test = MenuItemFont::create("test", CC_CALLBACK_1(MenuLayer::testIsPressed, this)); test->setColor(Color3B(255, 0, 0)); test->setPosition(Vec2(0,-itemScore->getContentSize().height*4-40)); //利用3个菜单项创建Menu菜单 Menu * menu = Menu::create(itemPlay,itemScore,itemAbout,itemSettings,test,NULL); menu->setPosition(Vec2(SIZE_WIDTH / 2, SIZE_HEIGHT / 3 - 10)); addChild(menu); menu->alignItemsVerticallyWithPadding(10); auto textureCache = Director::getInstance()->getTextureCache(); textureCache->addImageAsync(IMG_PLAYER + "plane1.png", CC_CALLBACK_1(MenuLayer::loadCallback, this, "plan_yellow")); textureCache->addImageAsync(IMG_PLAYER + "plane5.png", CC_CALLBACK_1(MenuLayer::loadCallback, this, "plan_red")); textureCache->addImageAsync(IMG_PLAYER + "plane22.png", CC_CALLBACK_1(MenuLayer::loadCallback, this, "plan_blue")); textureCache->addImageAsync(IMG_PLAYER + "icon_hp.png", CC_CALLBACK_1(MenuLayer::loadCallback, this, "player_hp")); textureCache->addImageAsync(IMG_PLAYER + "playerBullet.png", CC_CALLBACK_1(MenuLayer::loadCallback, this, IMG_PLAYER + "playerBullet.plist")); textureCache->addImageAsync(IMG_PLAYER + "hp.png", CC_CALLBACK_1(MenuLayer::loadCallback, this, "gem_hp")); textureCache->addImageAsync(IMG_PLAYER + "upLevel.png", CC_CALLBACK_1(MenuLayer::loadCallback, this, "gem_bullet")); textureCache->addImageAsync(IMG_PLAYER + "skill1.png", CC_CALLBACK_1(MenuLayer::loadCallback, this, "gem_missile")); textureCache->addImageAsync(IMG_PLAYER + "skill2.png", CC_CALLBACK_1(MenuLayer::loadCallback, this, "gem_thunder")); textureCache->addImageAsync(IMG_PLAYER + "thunder.png", CC_CALLBACK_1(MenuLayer::loadCallback, this, IMG_PLAYER + "thunder.plist")); textureCache->addImageAsync(IMG_ENEMY + "enemy.png", CC_CALLBACK_1(MenuLayer::loadCallback, this, IMG_ENEMY + "enemy.plist")); textureCache->addImageAsync(IMG_ENEMY + "explosion.png", CC_CALLBACK_1(MenuLayer::loadCallback, this, IMG_ENEMY + "explosion.plist")); return true; }