Пример #1
0
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));		
	}	
}
Пример #3
0
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;
            }
        });
    }
}
Пример #5
0
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++;
}
Пример #6
0
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));

}
Пример #7
0
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;
}