void PianoKeyBoard::drawImageKey(cocos2d::Node *node, PianoKey *key, int zOder)
{
    if (key == NULL) {
        
        return ;
    }
    
    Rect rct = key->rect_;
    
    MenuItemImage *keySprite  ;

    if (key->type_ != BLACK_KEY) {
        keySprite = MenuItemImage::create(whiteNormalPix_, whiteDownPix_, CC_CALLBACK_1(PianoKeyBoard::keyTouched, this)) ;
        keySprite->setPosition(rct.origin.x, rct.origin.y) ;
    }else
    {
        keySprite = MenuItemImage::create(blackNormalPix_, blackDownPix_, CC_CALLBACK_1(PianoKeyBoard::keyTouched, this)) ;
        keySprite->setPosition(rct.origin.x, rct.origin.y+119) ;
    }
    
    keySprite->setAnchorPoint(Point::ZERO) ;
    keySprite->setTag(key->note_) ;

    node->addChild(keySprite, zOder) ;
    

}
bool GameOver::init()
{
    bool ret = false;
    do {
        CC_BREAK_IF(!Layer::init());
        Sprite *backGround1 = Sprite::createWithSpriteFrameName("gameover.png");
        backGround1->setAnchorPoint(Point(0, 0));
        backGround1->setPosition(Point(0, 0));
        this->addChild(backGround1, -1, 0);

        Size size = Director::getInstance()->getWinSize();

        MenuItemImage *item = MenuItemImage::create("ui/shoot_background/btn_finish.png"
            , "ui/shoot_background/btn_finish.png", menuCallback);
        Menu *menu = Menu::create(item, NULL);
        addChild(menu);
        item->setAnchorPoint(Point(0, 0));
        menu->setPosition(Point(0, 0));
        item->setPosition(Point(size.width - item->getContentSize().width, 0));

        m_scoreLabel = LabelTTF::create("0", "Arial", 28);
        m_scoreLabel->setFontSize(40);
        addChild(m_scoreLabel);

        m_scoreLabel->setPosition(Point(size.width * 0.5, size.height * 0.5));
        ret = true;
    } while (0);
    return ret;
}
Exemple #3
0
void MainLayer::initMenu()
{
    do
    {
        //单机游戏
        //3.0两种写法
        MenuItemImage *pSingleGameItem = MenuItemImage::create(
                                             "button_singleNormal.png",
                                             "button_singleSelected.png",
                                             std::bind(&MainLayer::menuCloseCallback,this,std::placeholders::_1));
        /*
        MenuItemImage *pSingleGameItem = MenuItemImage::create(
                "button_singleNormal.png",
                "button_singleSelected.png",
                CC_CALLBACK_1(MainLayer::menuCloseCallback, this));
        */
        CC_BREAK_IF(! pSingleGameItem);
        pSingleGameItem->setTag(MENU_SINGLE_GAME_TAG);
        pSingleGameItem->setAnchorPoint(Vec2(0.5,0.5));
        //多人游戏
        MenuItemImage *pMultiGameItem = MenuItemImage::create(
                                            "button_multiNormal.png",
                                            "button_multiSelected.png",
                                            std::bind(&MainLayer::menuCloseCallback,this,std::placeholders::_1));
        CC_BREAK_IF(! pMultiGameItem);
        pMultiGameItem->setTag(MENU_MULTI_GAME_TAG);

        //关于我们
        MenuItemImage *pAboutUsItem = MenuItemImage::create(
                                          "button_aboutNormal.png",
                                          "button_aboutSelected.png",
                                          std::bind(&MainLayer::menuCloseCallback,this,std::placeholders::_1));
        CC_BREAK_IF(! pAboutUsItem);
        pAboutUsItem->setTag(MENU_ABOUT_GAME_TAG);
        //退出游戏
        MenuItemImage *pExitGameItem = MenuItemImage::create(
                                           "button_exitNormal.png",
                                           "button_exitSelected.png",
                                           std::bind(&MainLayer::menuCloseCallback,this,std::placeholders::_1));
        pExitGameItem->setTag(MENU_EXIT_GAME_TAG);
        CC_BREAK_IF(! pExitGameItem);

        pMenu = Menu::create(pSingleGameItem, pMultiGameItem,pAboutUsItem ,pExitGameItem, NULL);
        pMenu->setPosition(Vec2(Director::getInstance()->getWinSize().width/2, Director::getInstance()->getWinSize().height/2));
        pMenu->alignItemsVerticallyWithPadding(50);
        CC_BREAK_IF(! pMenu);

        this->addChild(pMenu);
    }
    while(0);
}
Exemple #4
0
void MenuLayer::setResults(Results r)
{
	auto wiew = Director::getInstance()->getOpenGLView()->getDesignResolutionSize();
	auto callback = std::bind(&MenuLayer::menuCloseCallback, this, this);
	MenuItemImage* goToLevels;
	MenuItemImage* nextReload;
	auto goNextMap = std::bind(&MenuLayer::nextMap, this, this);
	auto reload = std::bind(&MenuLayer::reloadMap, this, this);
	auto back = std::bind(&MenuLayer::backToMap, this, this);
	switch (r)
	{
	case WIN:

		nextReload = MenuItemImage::create("exit_pressed.png", "exit_pressed.png", goNextMap);
		break;
	case LOSE:

		nextReload = MenuItemImage::create("exit_pressed.png", "exitGame.png", reload);
		break;
	case PAUSE:
		nextReload = MenuItemImage::create("exitGame.png", "exit_pressed.png", back);
		break;
	default:
		break;
	}
		goToLevels = MenuItemImage::create("exitGame.png", "exit_pressed.png", callback);
		goToLevels->setAnchorPoint(Vec2(1, 0));
		goToLevels->setPosition(Vec2(wiew.width, 0));

		nextReload->setAnchorPoint(Vec2(1, 0));
		nextReload->setPosition(Vec2(wiew.width, nextReload->getBoundingBox().size.height));

		Menu* pMenu = Menu::create(goToLevels, nextReload,  NULL);
		pMenu->setPosition(Point::ZERO);
		addChild(pMenu, 1);
	
};
Exemple #5
0
bool HWorld::init()
{
    if (!Layer::init() )
    {
        return false;
    }
    sh=this;
    
	SpriteFrameCache* cache = SpriteFrameCache::getInstance();
    cache->addSpriteFramesWithFile("button.plist","button.png");
    
    //播放游戏中的音乐
    SimpleAudioEngine::getInstance()->playBackgroundMusic("gameMusic.mp3",true);
    
    //地图
    HMap * map  = HMap::createMap("img_bg_level_1.jpg");
    addChild(map);
    
    //主角
    HPlayer * player=HPlayer::createPlayer("hero.png");
    addChild(player,1,tag_player);
    
    bulletBatchNode = SpriteBatchNode::create("heroBullet.png");
    this->addChild(bulletBatchNode);

    //创建子弹逻辑(创建间隔0.4秒)
    this->schedule(schedule_selector(HWorld::autoCreateBullet),0.4f);
    //创建敌怪逻辑
    this->schedule(schedule_selector(HWorld::autoCreateEnemy));

    if(touchType)
    {
        //this->setTouchEnabled(true);
    }else
    {
        //虚拟手柄
        Button * button = Button::createButton(player, this);
        addChild(button);
    }
    
    MenuItemImage *pause = MenuItemImage::create("pause.png", "pause.png", CC_CALLBACK_1(HWorld::doPause, this));
    pause->setAnchorPoint(Vec2(1, 1));
    pause->setPosition(Vec2(Director::getInstance()->getWinSize().width-10, Director::getInstance()->getWinSize().height-10));
    Menu *menu = Menu::create(pause, NULL);
    menu->setAnchorPoint(Vec2(0, 0));
    addChild(menu, 1, 10);
    menu->setPosition(Vec2(0, 0));
    
    smallEnemyTime = 0;
    mediumEnemyTime = 0;
    bigEnemyTime = 0;
    smallEnemyTime2 = 0;
    mediumEnemyTime2 = 0;

	auto _listener_touch = EventListenerTouchOneByOne::create();
	_listener_touch->onTouchBegan = CC_CALLBACK_2(HWorld::TouchBegan, this);
	_listener_touch->onTouchMoved = CC_CALLBACK_2(HWorld::TouchMoved, this);

	_eventDispatcher->addEventListenerWithSceneGraphPriority(_listener_touch, this);

    return true;
}
//一些菜单的设置不看也可以,与地图相关的操作在okCallback里面
void HelloWorld::createInitMenu()
{
	Size visibleSize = Director::getInstance()->getVisibleSize();

	m_setLayer = Layer::create();
	this->addChild(m_setLayer);

	//方向设置
	Vector<MenuItem*> dirItemFronts;
	dirItemFronts.pushBack(MenuItemFont::create("Right to Left"));
	dirItemFronts.pushBack(MenuItemFont::create("Left to Right"));
	dirItemFronts.pushBack(MenuItemFont::create("Top to Bottom"));
	dirItemFronts.pushBack(MenuItemFont::create("Bottom to Top"));
	m_dirSelItem = MenuItemToggle::createWithCallback(
		CC_CALLBACK_1(HelloWorld::toggleCallback,this),
        dirItemFronts);

	m_dirSelItem->setAnchorPoint(Vec2(0.5f,0.5f));
	m_dirSelItem->setPosition(Vec2(visibleSize.width/2 ,
								visibleSize.height/4*3));

    MenuItemImage *nextDir = MenuItemImage::create(
                                        "nextNor.png",
                                        "nextCli.png",
                                        CC_CALLBACK_1(HelloWorld::dirChangeCallback,this));

	nextDir->setTag(1);
	nextDir->setAnchorPoint(Vec2(0.5f,0.5f));
	nextDir->setPosition(Vec2(visibleSize.width/6*5,
                             visibleSize.height/4*3));

	MenuItemImage *lastDir = MenuItemImage::create(
                                        "lastNor.png",
                                        "lastCli.png",
                                        CC_CALLBACK_1(HelloWorld::dirChangeCallback,this));
	lastDir->setTag(-1);
	lastDir->setAnchorPoint(Vec2(0.5f,0.5f));
	lastDir->setPosition(Vec2(visibleSize.width/6,
                             visibleSize.height/4*3));



   //模式设置
	Vector<MenuItem*> modeItemFronts;
	modeItemFronts.pushBack(MenuItemFont::create("Loop Mode"));
	modeItemFronts.pushBack(MenuItemFont::create("Drop Mode"));
	m_modeSelItem = MenuItemToggle::createWithCallback(
	   CC_CALLBACK_1(HelloWorld::toggleCallback,this),
       modeItemFronts);

	m_modeSelItem->setAnchorPoint(Vec2(0.5f,0.5f));
	m_modeSelItem->setPosition(Vec2(visibleSize.width/2 ,
								visibleSize.height/3));

	m_modeSelItem->setAnchorPoint(Vec2(0.5f,0.5f));
	m_modeSelItem->setPosition(Vec2(visibleSize.width/2 ,
								visibleSize.height/2));

	MenuItemImage *nextMode = MenuItemImage::create(
                                        "nextNor.png",
                                        "nextCli.png",
                                        CC_CALLBACK_1(HelloWorld::modeChangeCallback,this));
	nextMode->setTag(1);
	nextMode->setAnchorPoint(Vec2(0.5f,0.5f));
	nextMode->setPosition(Vec2(visibleSize.width/6*5,
                             visibleSize.height/2));

	MenuItemImage *lastMode = MenuItemImage::create(
                                        "lastNor.png",
                                        "lastCli.png",
                                        CC_CALLBACK_1(HelloWorld::modeChangeCallback,this));
	lastMode->setTag(-1);
	lastMode->setAnchorPoint(Vec2(0.5f,0.5f));
	lastMode->setPosition(Vec2(visibleSize.width/6,
                             visibleSize.height/2));

	MenuItemFont* pOK = MenuItemFont::create("OK",CC_CALLBACK_1(HelloWorld::okCallback,this));
	pOK->setPosition(Vec2(visibleSize.width/3,visibleSize.height/4));

	MenuItemFont* pQuit = MenuItemFont::create("Quit",CC_CALLBACK_1(HelloWorld::quitCallback,this));
	pQuit->setPosition(Vec2(visibleSize.width/3*2,visibleSize.height/4));

	Menu* pMenu = Menu::create(lastDir,m_dirSelItem,nextDir,lastMode,m_modeSelItem,nextMode,pOK,pQuit,NULL);
	pMenu->setPosition(Vec2::ZERO);

    m_setLayer->addChild(pMenu);

	m_bg = 0;
}
void HelloWorld::okCallback(Ref* pSender)
{
	if(!m_bg)
	{
		m_runLayer = Layer::create();
		this->addChild(m_runLayer);

		int dirSel = m_dirSelItem->getSelectedIndex();
		switch (dirSel)
		{
		case 0:
			m_bg = ScrollingBackground::create(ScrollDirection::SD_RIGHT_TO_LEFT);
			m_direction = ScrollDirection::SD_RIGHT_TO_LEFT;
			break;
		case 1:
			m_bg = ScrollingBackground::create(ScrollDirection::SD_LEFT_TO_RIGHT);
			m_direction = ScrollDirection::SD_LEFT_TO_RIGHT;
			break;
		case 2:
			m_bg = ScrollingBackground::create(ScrollDirection::SD_TOP_TO_BOTTOM);
			m_direction = ScrollDirection::SD_TOP_TO_BOTTOM;
			break;
		case 3:
			m_bg = ScrollingBackground::create(ScrollDirection::SD_BOTTOM_TO_TOP);
			m_direction = ScrollDirection::SD_BOTTOM_TO_TOP;
			break;
		default:
			break;
		}

		m_runLayer->addChild(m_bg,1);

		for (int i = 1; i < 5; i++)
		{
			addBgSprite(i);
		}

		/*
		//当有一个背景精灵彻底离开屏幕的时候的消息,两种方式
		if(m_modeSelItem->getSelectedIndex()==0)
			m_bg->setBgChangeEventListener(this,bgSpriteChangeEvent(HelloWorld::loopBgChangeCallback)); //循环模式
		else
			m_bg->setBgChangeEventListener(this,bgSpriteChangeEvent(HelloWorld::dropBgChangeCallback)); //丢弃模式
		*/
		//当有一个背景精灵彻底离开屏幕的时候的消息,两种方式
		if(m_modeSelItem->getSelectedIndex()==0)
			m_bg->setBgChangeEventListener(CC_CALLBACK_3(HelloWorld::loopBgChangeCallback,this)); //循环模式
		else
			m_bg->setBgChangeEventListener(CC_CALLBACK_3(HelloWorld::dropBgChangeCallback,this)); //丢弃模式

		/*
		//当背景精灵移动时候的消息,两种方式
		m_bg->setBgMoveEventListener(this,bgSpriteMoveEvent(HelloWorld::bgMoveCallback));
		*/
		//当背景精灵移动时候的消息,两种方式
		m_bg->setBgMoveEventListener(CC_CALLBACK_2(HelloWorld::bgMoveCallback,this));

		m_velocity = 300.0f;
		m_bgSprite = m_bg->getCurBgSprite();
		m_bg->beginContinuousScroll(m_velocity);

		//一个跟随背景移动的物体
		m_pItem = Sprite::create("item.png");
		m_pItem->setAnchorPoint(Vec2(0.5f,0.5f));
		m_pItem->setPosition(Vec2(0.0f,0.0f));
		m_runLayer->addChild(m_pItem,2);

		//pItem锚点一直都是(0.5,0.5),坐标一直是(0.0,0.0),注意看当画面切换的时候他会出现在哪里
		//背景精灵精灵的锚点不同,会影响pItem的位置
		m_pItem->setPosition(m_bg->getCurBgSprite()->getPosition());
		




		/*下面的是一些菜单的设置,不看也可以*/
		Size visibleSize = Director::getInstance()->getVisibleSize();

		//返回按钮
		MenuItemFont* back = MenuItemFont::create("back",CC_CALLBACK_1(HelloWorld::backCallback,this));
		back->setAnchorPoint(Vec2(1.0f,1.0f));
		back->setPosition(Vec2(visibleSize.width/2.0f,visibleSize.height/2.0f));

		//设置相反速度的按钮
		MenuItemFont* reverse = MenuItemFont::create("reverse",CC_CALLBACK_1(HelloWorld::reverseCallback,this));

		//暂停
		MenuItemToggle* pause = MenuItemToggle::createWithCallback(CC_CALLBACK_1(HelloWorld::pauseCallback,this),
																	MenuItemFont::create("pause"),
																	MenuItemFont::create("resume"),
																	NULL);
		pause->setPosition(Vec2(0.0f,50.0f));

		//上一个画面
		MenuItemImage* lastBg = MenuItemImage::create("lastBgNor.png","lastBgCli.png","",CC_CALLBACK_1(HelloWorld::nextBgCallback,this));
		lastBg->setTag(0);
		lastBg->setAnchorPoint(Vec2(0.0f,0.5f));
		lastBg->setPosition(Vec2(-visibleSize.width/2.0f,0.0f));

		//下一个画面
		MenuItemImage* nextBg = MenuItemImage::create("NextBgNor.png","NextBgCli.png","",CC_CALLBACK_1(HelloWorld::nextBgCallback,this));
		nextBg->setTag(1);
		nextBg->setAnchorPoint(Vec2(1.0f,0.5f));
		nextBg->setPosition(Vec2(visibleSize.width/2.0f,0.0f));

		//增加背景精灵
		MenuItemFont* add = MenuItemFont::create("add background",CC_CALLBACK_1(HelloWorld::addBgSpriteCallback,this));
		add->setPosition(Vec2(0.0f,-50.0f));

		Menu* pMenu = Menu::create(pause,reverse,add,lastBg,nextBg,back,NULL);
		pMenu->setPosition(Vec2(visibleSize.width/2.0f,visibleSize.height/2.0f));
		m_runLayer->addChild(pMenu,3);

		//文字提示:
		Color3B color(255,0,0);
		m_itemTipsLabel = Label::createWithTTF("","fonts/arial.ttf",17.0f);
		m_itemTipsLabel->setColor(color);
		m_itemTipsLabel->setAnchorPoint(Vec2(0.5f,0.5f));
		m_itemTipsLabel->setPosition(Vec2(visibleSize.width/2.0f,visibleSize.height/6.0f));
		m_runLayer->addChild(m_itemTipsLabel,3);

		m_numBgLabel = Label::createWithTTF("","fonts/arial.ttf",17.0f);
		m_numBgLabel->setColor(color);
		m_numBgLabel->setAnchorPoint(Vec2(0.5f,0.5f));
		m_numBgLabel->setPosition(Vec2(visibleSize.width/2.0f,visibleSize.height/10.0f));
		m_runLayer->addChild(m_numBgLabel,3);

		
		m_addTipsLabel = Label::createWithTTF("","fonts/arial.ttf",17.0f);
		m_addTipsLabel->setColor(color);
		m_addTipsLabel->setAnchorPoint(Vec2(0.5f,0.5f));
		m_addTipsLabel->setPosition(Vec2(visibleSize.width/2.0f,visibleSize.height/10.0f*9.0f));
		m_addTipsLabel->setString("");
		m_runLayer->addChild(m_addTipsLabel,3);

		setTextTips(m_bg->getCurBgSprite());

		this->removeChild(m_setLayer);
		m_setLayer = 0;
	}
}
Exemple #8
0
bool GameScene::init()
{
    if (!Layer::init()) {
        return false;
    }
    gameScene = this;//用于获取游戏场景对象
    winSize = Director::getInstance()->getWinSize();
    
    floorCount = 16;//设置地面和金币的个数
    
    forceX = 300;
    forceY = 30;
    
    xSpeed = 5;
    ySpeed = 15;//决定跳的高度
    
    constXspeed = xSpeed;
    constYspeed = ySpeed;
    
    scaleFix = winSize.width/480;
    speedFix = 0.01;
    
    accelerate = 0.94;//加速度
    sizep =   Director::getInstance()->getWinSizeInPixels();
    scaleFix = sizep.width/480;
    
    isJump = false;
    isPlaySound=GameFatherLayer::allowSound();//是否播放音效
    isCollistionWithFloor =false;
    
    //创建背景地图
    BackMap *sky = BackMap::createMap("back_1.png");
    this->addChild(sky,0,0);
    BackMap *backMap = BackMap::createMap("back_5.png");
    this->addChild(backMap,0,1);
    
    //创建主角精灵
    player = Player::createPlayer();
    SpriteBatchNode *batchNode = SpriteBatchNode::create("run.png");
    batchNode->addChild(player, 2, 10);
    
    playerWidth = player->getContentSize().width;
    playerHeight = player->getContentSize().height;
    
    this->addChild(batchNode);
    
    player->setPosition(Point(-20, winSize.height/2 -100));
    
    MoveBy *move = MoveBy::create(1, Point(80, 0));
    player->runAction(move);
    
    Floor *temp = Floor::createFloor();
    floorWidth = temp->getContentSize().width;
    floorHeight = temp->getContentSize().height;
   
    SimpleAudioEngine::getInstance()->preloadBackgroundMusic("background.caf");
    SimpleAudioEngine::getInstance()->preloadEffect("eatcoin.caf");
    if (isPlaySound) {
        SimpleAudioEngine::getInstance()->playBackgroundMusic("background.caf");
    }
    
    //进度条
    coinNeededNum = 30;
    coinUsed = 0;
    isBarFull = false;
    progressInterval = 100.0/(float)coinNeededNum;
    Sprite *barSprite = Sprite::create("powerbar.png");
    progress = ProgressTimer::create(barSprite);
    progress->setPercentage(0.0f);
    progress->setMidpoint(Point(0, 0));
    progress->setBarChangeRate(Point(1, 0));
    progress->setScaleY(1.2);
    progress->setType(kCCProgressTimerTypeBar);
    progress->setAnchorPoint(Point(0, 0.5));
    progress->setPosition(Point(20, winSize.height-18));
    Sprite *proFrame = Sprite::create("powerui.png");
    proFrame->setAnchorPoint(Point(0, 0.3));
    progress->addChild(proFrame);
    this->addChild(progress);
    
    
    //添加返回主页按钮
    MenuItemImage *menuItem = MenuItemImage::create("btnmenu.png", "btnmenu.png",CC_CALLBACK_1(GameScene::menuButton, this));
    menuItem->setAnchorPoint(Point(1, 1));
    Menu *menu = Menu::create(menuItem, NULL);
    menu->setPosition(Point(winSize.width-20, winSize.height - 20));
    this->addChild(menu);
    
    this->initFloorsAndCoins();

    this->scheduleUpdate();
    
    return true;
}
bool TestFragmentEffect::init()
{
    if ( !TestBase::init() )
    {
        return false;
    }
    
    //都是菜单设置,可以不看
	MenuItemFont* MIF0 = MenuItemFont::create("ES_NONE");
	MIF0->setColor(Color3B::RED);
	MIF0->setTag(0);
	MenuItemFont* MIF1 = MenuItemFont::create("ES_BLACK_AND_WHITE");
	MIF1->setColor(Color3B::RED);
	MIF1->setTag(0);
	MenuItemFont* MIF2 = MenuItemFont::create("ES_OLD_PHOTOS");
	MIF2->setColor(Color3B::RED);
	MIF2->setTag(0);
	MenuItemFont* MIF3 = MenuItemFont::create("ES_INVERT");
	MIF3->setColor(Color3B::RED);
	MIF3->setTag(0);
	MenuItemFont* MIF4 = MenuItemFont::create("ES_BURNS");
	MIF4->setColor(Color3B::RED);
	MIF4->setTag(0);
	MenuItemFont* MIF5 = MenuItemFont::create("ES_POISONING");
	MIF5->setColor(Color3B::RED);
	MIF5->setTag(0);
	MenuItemFont* MIF6 = MenuItemFont::create("ES_COLD");
	MIF6->setColor(Color3B::RED);
	MIF6->setTag(0);
	MenuItemFont* MIF7 = MenuItemFont::create("ES_USER_DEFINED");
	MIF7->setColor(Color3B::RED);
	MIF7->setTag(0);
	m_sel = MenuItemToggle::createWithCallback(CC_CALLBACK_1(TestFragmentEffect::toggleCallback,this),MIF0,MIF1,MIF2,MIF3,MIF4,MIF5,MIF6,MIF7,NULL);

	m_sel->setTag(0);
	m_sel->setAnchorPoint(Vec2(0.5f,1.0f));
	m_sel->setPosition(Vec2(m_visibleOrigin.x + m_visibleSize.width / 2, 
							m_visibleOrigin.y + m_visibleSize.height - 7));
	
	MenuItemImage* last = MenuItemImage::create("FragmentEffect/lastNor.png","FragmentEffect/lastCli.png","",CC_CALLBACK_1(TestFragmentEffect::toggleCallback,this));
	last->setTag(-1);
	last->setAnchorPoint(Vec2(0.5f,1.0f));
	last->setPosition(Vec2(m_visibleOrigin.x + m_visibleSize.width / 10 * 1,
						   m_visibleOrigin.y + m_visibleSize.height));

	MenuItemImage* next = MenuItemImage::create("FragmentEffect/nextNor.png","FragmentEffect/nextCli.png","",CC_CALLBACK_1(TestFragmentEffect::toggleCallback,this));
	next->setTag(1);
	next->setAnchorPoint(Vec2(0.5f,1.0f));
	next->setPosition(Vec2(m_visibleOrigin.x + m_visibleSize.width / 10 * 9, 
						   m_visibleOrigin.y + m_visibleSize.height));

	MenuItemFont* UDF = MenuItemFont::create("goto ES_USER_DEFINED",CC_CALLBACK_1(TestFragmentEffect::gotoUserDefine,this));
	UDF->setColor(Color3B::RED);
	UDF->setTag(0);
	UDF->setPosition(Vec2(m_visibleOrigin.x + m_visibleSize.width / 2, 
						  m_visibleOrigin.y + m_visibleSize.height - 50.0f));

    Menu* pMenu = Menu::create(m_sel,last,next,UDF,NULL);
	pMenu->setPosition(Vec2::ZERO);
    this->addChild(pMenu, 1);


    m_bgSprite = Sprite::create("FragmentEffect/HelloWorld.png");
    m_bgSprite->setPosition(Vec2(m_visibleOrigin.x + m_visibleSize.width / 2, 
								 m_visibleOrigin.y + m_visibleSize.height / 2));
    this->addChild(m_bgSprite, 0);
	
	//加载骨骼动画
	ArmatureDataManager::getInstance()->addArmatureFileInfo("FragmentEffect/Hero0.png","FragmentEffect/Hero0.plist","FragmentEffect/Hero.ExportJson");
	m_armature = Armature::create("Hero");
	m_armature->getAnimation()->playWithIndex(0);
	m_armature->setPosition(Vec2(m_visibleOrigin.x+m_visibleSize.width/2, 0.0f));
	m_armature->setAnchorPoint(Vec2(0.5f,0.0f));
	this->addChild(m_armature,1);

	//淡出淡入这样的动作依然可以使用
	m_armature->runAction(Sequence::create(FadeOut::create(0.5f),FadeIn::create(0.5f),0));

	//就这几句是设置效果的,toggleCallback 和 gotoUserDefine方法里面也有
	m_indexSprite   = FragmentEffect::getInstance()->addEffectNode(m_bgSprite); //m_indexSprite接收返回的序号,setEffect 和 getEffectSelect 的时候使用
	m_indexArmature = FragmentEffect::getInstance()->addEffectNode(m_armature); //m_indexArmature接收返回的序号,setEffect 和 getEffectSelect 的时候使用


	float f[] = {
		0.5f,0.0f,0.0f,0.0f,
		0.0f,0.5f,0.0f,0.0f,
		0.0f,0.0f,0.5f,0.0f,
		0.0f,0.0f,0.0f,0.5f
	};
	FragmentEffect::getInstance()->addEffectMatrix(Mat4(f));//增加自定义特效矩阵,序号从 ES_USER_DEFINED 开始增加

    return true;
}
void FriendListScene::buildScene()
{
    _friendDictionary.clear();
    _friendList.clear();
    _tableView = NULL;
    _downloadCount = 0;
    
    const char* headerString = "";
    
    switch (_selectedFriendCircle)
    {
        case ALL_FRIENDS:
            headerString = "All Friends";
            break;
        
        case INSTALLED_ONLY:
            headerString = "Friends Playing Game";
            break;
            
        case NON_PLAYING_ONLY:
            headerString = "Friends not Playing Game";
            break;
            
        case MY_DEVICE_ONLY:
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
            headerString = "Friends playing on iOS Device";
#else
            headerString = "Friends playing on Android Device";
#endif
        default:
            break;
    }
    
    //_friendList = CCArray::createWithCapacity(5);
    //_friendList->retain();
    CCLOG("ALL Request count = %lu", _friendList.size());
    
    // Add background layers to the scene.
    LayerColor *bg = LayerColor::create(Color4B(255, 255, 255, 255), AppDelegate::SCREEN_WIDTH, AppDelegate::SCREEN_HEIGHT);
    this->addChild(bg);
    
    LayerColor *secondBG = LayerColor::create(Color4B(95, 95, 95, 255),
                                                  AppDelegate::SCREEN_WIDTH - SCALED_VALUE(20.0f),
                                                  AppDelegate::SCREEN_HEIGHT - SCALED_VALUE(20.0f));
    
    secondBG->setPosition(Point(SCALED_VALUE(10.0f), SCALED_VALUE(10.0f)));
    this->addChild(secondBG);
    
    // Set the table header.
    LayerColor *header = LayerColor::create(Color4B(66, 66, 66, 255),
                                                AppDelegate::SCREEN_WIDTH - SCALED_VALUE(20.0f),
                                                SCALED_VALUE(100.0f));
    header->setAnchorPoint(Point(0, 0));
    header->setPosition(Point(SCALED_VALUE(10.0f), AppDelegate::SCREEN_HEIGHT - SCALED_VALUE(110.0f)));
    this->addChild(header);
    
    // Set the header text.
    auto headerText = LabelTTF::create(headerString, "Arial", SCALED_VALUE(40.0f));
    headerText->setAnchorPoint(Point(0.0f, 0.5f));
    header->addChild(headerText);
    headerText->setPositionX(SCALED_VALUE(28.0f));
    headerText->setPositionY(header->getContentSize().height/2);
    
    // Add back button go back to previous scene
    MenuItemImage *backButton = MenuItemImage::create();
    backButton->setNormalSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("btn_table_back_nrl"));
    backButton->setSelectedSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("btn_table_back_prd"));
    
    backButton->setCallback(CC_CALLBACK_1(FriendListScene::backButtonPressed, this));

    backButton->setAnchorPoint(Point(1.0f, 0.5));
    Menu* backMenu = Menu::create(backButton, NULL);
    header->addChild(backMenu);
    backMenu->setPositionX(header->getContentSize().width - SCALED_VALUE(20.0f));
    backMenu->setPositionY(header->getContentSize().height/2);
    
    
    // Create the table view.
    float tableHeight = bg->getContentSize().height - secondBG->getPositionY() - (header->getContentSize().height) - SCALED_VALUE(10);
    _tableView = TableView::create(this, Size(secondBG->getContentSize().width, tableHeight));
    _tableView->setAnchorPoint(Point(0, 0.0));
    _tableView->setDirection(ScrollView::Direction::VERTICAL);
    _tableView->setPosition(Point(SCALED_VALUE(10.0f), SCALED_VALUE(10)));
    _tableView->setDelegate(this);
    this->addChild(_tableView);
}