//测试图片滚动
void HelloWorld::test1()
{
	CCSize visableSize = CCSizeMake(480, 320); //屏幕大小
	CCSize mysize = CCSizeMake(960,600); //容器大小

	
//创建容器、设置大小
	CCLayerColor* scrollLayer = CCLayerColor::create( ccc4(255,255,255,255) );
	scrollLayer->setContentSize(mysize);
	
//容器中的东西
	CCSprite* bg = CCSprite::create("war.png");
	bg->setPosition( ccp(960/2.0, 600/2.0) );
	scrollLayer->addChild(bg);


//创建滚动视图CCScrollView
	CCScrollView* scrollView = CCScrollView::create();
	this->addChild(scrollView, 0, 1);
	
	//属性设置
	scrollView->setContainer(scrollLayer); //设置容器
	scrollView->setViewSize( visableSize ); //可视区域大小
	scrollView->setBounceable(true); //是否具有弹性
	
	//委托代理
	scrollView->setDelegate(this);
}
Example #2
0
bool LoginLayerUC::init()
{
	BaseLayer::init();

	m_ui = nullptr;
	m_iCurrentType = LoginResponseMsg;
	m_LayoutRoot = CWidgetWindow::create();
	m_LayoutRoot->setTag(10000);
	this->addChild(m_LayoutRoot);
	CCLayerColor* pColor = CCLayerColor::create(ccc4(255, 255, 255, 255));
	pColor->setContentSize(WINSIZE);
	pColor->setPosition(CCPointZero);
	m_LayoutRoot->addChild(pColor, -1);

	//加载
	CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo("loginScene/opening.ExportJson");
	//生成骨骼
	m_armature = CCArmature::create("opening");
	m_armature->setPosition(VCENTER);
	m_LayoutRoot->addChild(m_armature);
	//绑定动画事件
	m_armature->getAnimation()->setMovementEventCallFunc(this, movementEvent_selector(LoginLayerUC::movementCallBack));
	m_armature->getAnimation()->setFrameEventCallFunc(this, frameEvent_selector(LoginLayerUC::frameEventCallBack));
	m_armature->getAnimation()->playWithIndex(0);

	this->runAction(CCSequence::createWithTwoActions(CCDelayTime::create(2.8f), CCCallFunc::create(this, callfunc_selector(LoginLayerUC::callBackForSoundUp))));

	return true;
}
//测试只能纵向滚动
void HelloWorld::test2()
{
	CCSize visableSize = CCSizeMake(480, 320); //屏幕大小
	CCSize mysize = CCSizeMake(150,220); //容器大小

//创建容器、设置大小
	CCLayerColor* scrollLayer = CCLayerColor::create( ccc4(255,255,255,255) );
	scrollLayer->setContentSize(mysize);

//容器中添加四个按钮
	for(int i = 1; i <= 4; i++) 
	{
		char file[20];
		sprintf(file, "btn%d.png", i);
		CCSprite* btn = CCSprite::create(file);
		btn->setPosition( ccp(mysize.width/2, 220 - 50*i) );
		scrollLayer->addChild(btn);
	}

//创建滚动视图CCScrollView
	//可视区域大小150*100 、 容器为scrollLayer
	CCScrollView* scrollView = CCScrollView::create(CCSizeMake(150, 100), scrollLayer);
	scrollView->setPosition( visableSize/2 - ccp(150/2.0, 100/2.0) );
	this->addChild(scrollView, 0, 2);
	
	//设置为只能纵向滚动
	scrollView->setDirection(kCCScrollViewDirectionVertical);

	//委托代理
	scrollView->setDelegate(this);

}
Example #4
0
bool bottonLayer::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !CCLayer::init() )
    {
        return false;
    }
    
    //CCSize size = CCDirector::sharedDirector()->getWinSize();

    CCLayerColor *layer = CCLayerColor::create(ccc4(192, 192, 192, 255));
    //CCLayer *layer = CCLayer::create();
    layer->setContentSize(CCSizeMake(1280,168));
    CCSprite *sprite1 = CCSprite::create("buttons/food.png");
    CCSprite *sprite2 = CCSprite::create("buttons/game.png");
    CCSprite *sprite3 = CCSprite::create("buttons/gift.png");
    CCSprite *sprite4 = CCSprite::create("buttons/creat.png");
    CCSprite *sprite5 = CCSprite::create("buttons/lib.png");
    CCSprite *sprite6 = CCSprite::create("buttons/money.png");
    CCSprite *sprite7 = CCSprite::create("buttons/setting.png");
    CCSprite *sprite8 = CCSprite::create("buttons/talk.png");
    
    int spriteSize = 64;
    // Menu
    CCMenuItemSprite *menuItem1 = CCMenuItemSprite::create(sprite1, sprite1, this, menu_selector(bottonLayer::menu1Callback));
    menuItem1->setPosition(ccpAdd(ccp(16,20),ccp(spriteSize,spriteSize)));
    CCMenuItemSprite *menuItem2 = CCMenuItemSprite::create(sprite2, sprite2, this, menu_selector(bottonLayer::menu2Callback));
    menuItem2->setPosition(ccpAdd(ccp(176,20), ccp(spriteSize,spriteSize)));
    CCMenuItemSprite *menuItem3 = CCMenuItemSprite::create(sprite3, sprite3, this, menu_selector(bottonLayer::menu3Callback));
    menuItem3->setPosition(ccpAdd(ccp(336,20), ccp(spriteSize,spriteSize)));
    CCMenuItemSprite *menuItem4 = CCMenuItemSprite::create(sprite4, sprite4, this, menu_selector(bottonLayer::menu4Callback));
    menuItem4->setPosition(ccpAdd(ccp(496,20), ccp(spriteSize,spriteSize)));
    CCMenuItemSprite *menuItem5 = CCMenuItemSprite::create(sprite5, sprite5, this, menu_selector(bottonLayer::menu3Callback));
    menuItem5->setPosition(ccpAdd(ccp(656,20), ccp(spriteSize,spriteSize)));
    CCMenuItemSprite *menuItem6 = CCMenuItemSprite::create(sprite6, sprite6, this, menu_selector(bottonLayer::menu3Callback));
    menuItem6->setPosition(ccpAdd(ccp(816,20), ccp(spriteSize,spriteSize)));
    CCMenuItemSprite *menuItem7 = CCMenuItemSprite::create(sprite7, sprite7, this, menu_selector(bottonLayer::menu3Callback));
    menuItem7->setPosition(ccpAdd(ccp(976,20), ccp(spriteSize,spriteSize)));
    CCMenuItemSprite *menuItem8 = CCMenuItemSprite::create(sprite8, sprite8, this, menu_selector(bottonLayer::menu3Callback));
    menuItem8->setPosition(ccpAdd(ccp(1136,20), ccp(spriteSize,spriteSize)));

    CCMenu *menu = CCMenu::create(menuItem1, menuItem2,menuItem3,menuItem4,menuItem5,menuItem6,menuItem7,menuItem8, NULL);
    
    menu->setPosition(CCPointZero);
    layer->addChild(menu);
    
    scrollView = CCScrollView::create(); // 创建一个实例
    scrollView->setContentSize(CCSizeMake(1080, 168)); //设置容器大小(内容尺寸)
    scrollView->setViewSize(CCSizeMake(640, 168)); //设置显示(可视)范围
    scrollView->setContainer(layer);
    scrollView->setDirection( kCCScrollViewDirectionHorizontal );
    scrollView->setTouchPriority(-130);   //提升优先级到比ccMenu高
    this->addChild(scrollView);

    return true;
}
Example #5
0
void CTextRich::reloadData()
{
	CCAssert(!m_pRichTextAtlas->empty(), "reload data was empty");
	removeAllChildrenWithCleanup(true);
	m_vRichTextAtlasDescriptions.clear();
	m_uCharCursor = 0;

	CCSize tRealContentSize = CCSizeZero;

	int nRowBegin = m_pRichTextAtlas->size() - 1;
	unsigned int uRowEnd = 0;
	unsigned int uColumn = 0;
	unsigned int uColumnSize = 0;
	
	for(; nRowBegin >= (int)uRowEnd; --nRowBegin )
	{
		CTextRichAtlasLine* vAtlasLine = m_pRichTextAtlas->at(nRowBegin);
		uColumnSize = vAtlasLine->size();
		uColumn = 0;

		float fWidgetOfLine = 0.0f;
		float fMaxHeightOfLine = 0.0f;

		for(; uColumn < uColumnSize; ++uColumn )
		{
			_ccTEXTRICHELEMENT& tElement = vAtlasLine->at(uColumn);

			tElement.pATLASITEM->setPosition(CCPoint(fWidgetOfLine, tRealContentSize.height));
			addChild(tElement.pATLASITEM);
#if 0
			CCLayerColor* pColor = CCLayerColor::create(ccc4(255, 0,0, 129));
			pColor->setPosition(CCPoint(fWidgetOfLine, tRealContentSize.height) + ccp(1, 1));
			pColor->setContentSize(tElement.pATLASITEM->getContentSize() - CCSize(2,2));
			addChild(pColor);
#endif

			_ccTEXTRICHELEMENTRECT tDES;
			tDES.tRECT = tElement.pATLASITEM->boundingBox();
			tDES.strDESCRIPTION = tElement.strDESCRIPTION;
			m_vRichTextAtlasDescriptions.push_back(tDES);

			fWidgetOfLine += tElement.pATLASITEM->getContentSize().width;
			fMaxHeightOfLine = MAX(fMaxHeightOfLine, tElement.pATLASITEM->getContentSize().height);
		}

		tRealContentSize.width = MAX(tRealContentSize.width, fWidgetOfLine);
		tRealContentSize.height += fMaxHeightOfLine + m_fVerticalSpacing;

		delete vAtlasLine;
	}

	m_pRichTextAtlas->clear();

	tRealContentSize.height -= m_fVerticalSpacing;
	setContentSize(tRealContentSize);
}
Example #6
0
void LayerTest1::updateSize(CCPoint &touchLocation)
{    
    CCSize s = CCDirector::sharedDirector()->getWinSize();
    
    CCSize newSize = CCSizeMake( fabs(touchLocation.x - s.width/2)*2, fabs(touchLocation.y - s.height/2)*2);
    
    CCLayerColor* l = (CCLayerColor*) getChildByTag(kTagLayer);

    l->setContentSize( newSize );
}
void GameWeekRewardLayer::initData()
{
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCLayerColor *backGround = CCLayerColor::create(ccc4(0, 0, 0, 150));
    backGround->setContentSize(visibleSize);
    backGround->setZOrder(0);
    this -> addChild(backGround);
    // add your codes here...
    
}
void SpRuleInfoBox::initView()
{
    CCPoint center = SGLayout::getPoint(kMiddleCenter);
    
	fontbg->setPreferredSize(CCSizeMake(380, 380));
	fontbg->setPosition(ccpAdd(fontbg->getPosition(), ccp(0, 25)));
	SGCCLabelTTF *tips = SGCCLabelTTF::create(str_SpecialBattleIntro, FONT_PANGWA, 32 ,ccRED);
	this->addChild(tips, 2);
	tips->setPosition(ccpAdd(biao->getPosition(), ccp(0, 0)));
	
    //可滚动规则视图
    
	CCScrollView *m_scrollview = CCScrollView::create(CCSizeMake(350, 150));
	m_scrollview->setViewSize(CCSizeMake(350, 360));
    CCLayerColor *container = CCLayerColor::create(ccc4(0, 0, 0, 0));
    container->setContentSize(CCSizeMake(350, 355));
    m_scrollview->setContainer(container);
	m_scrollview->setPosition(ccpAdd(center, ccp(-fontbg->getContentSize().width / 2, -fontbg->getContentSize().height / 2 + 30)));//设置scrollview位置
	
	m_scrollview->setDirection(kCCScrollViewDirectionVertical);
    this->addChild(m_scrollview);
	m_scrollview->setTag(103);
	
	//测试数据
	int finalLen = 0;
	int rankSize = 10;
    SGStaticDataManager *mgr = SGStaticDataManager::shareStatic();
    
	for (int i = 0; i < mgr->getSpHelpInfoKeysNum(); i++)
	{
        
        std::string info = SGStaticDataManager::shareStatic()->getSingleSpBattleRule(i);
        if (info != "")
        {
            SGRuleItem *item = SGRuleItem::create(i, info.c_str());
            container->addChild(item);
            item->setPosition(ccpAdd(container->getPosition(), ccp(item->getContentSize().width / 2.8,
															   (item->getContentSize().height + 10) * (rankSize - i) - item->getContentSize().height - 30)));
            finalLen += (item->getContentSize().height + 10);
        }
	}
	m_scrollview->setContentOffset(ccp(0, -finalLen + m_scrollview->getContentSize().height - 10));
	m_scrollview->setContentSize(CCSizeMake(350, finalLen));
	m_scrollview->getContainer()->setContentSize(CCSizeMake(350, finalLen + 20));
    
    
	
	SGButton *okButton = SGButton::createFromLocal("box_btnbg.png", str_Ok, this, menu_selector(SpRuleInfoBox::pressOkButton),
												   ccp(0, 0), FONT_PANGWA, ccWHITE, 24);
	this->addBtn(okButton);
	okButton->setPosition(ccpAdd(center, ccp(0, -324/2+5 -70)));
}
Example #9
0
void LayerTest1::updateSize(CCTouch*touch)
{
	CCPoint touchLocation = touch->locationInView(touch->view());
	touchLocation = CCDirector::sharedDirector()->convertToGL( touchLocation );
	
	CCSize s = CCDirector::sharedDirector()->getWinSize();
	
	CCSize newSize = CCSizeMake( fabs(touchLocation.x - s.width/2)*2, fabs(touchLocation.y - s.height/2)*2);
	
	CCLayerColor* l = (CCLayerColor*) getChildByTag(kTagLayer);

	l->setContentSize( newSize );
}
Example #10
0
void ShowTip::show(const char *str, cocos2d::CCPoint& point, float fontSize, float delayTime, bool displayBg)
{
    CCLabelTTF* ttfTip = CCLabelTTF::create(str, "宋体", fontSize);
    ttfTip->cocos2d::CCNode::setAnchorPoint(CCPoint(0, 0));
    
    CCSize size = ttfTip->getContentSize();
    CCLayerColor* bgColor = NULL;
    if (displayBg)
    {
        bgColor = CCLayerColor::create();
        bgColor->setColor(ccColor3B(ccc3(0, 0, 0)));
        bgColor->setAnchorPoint(CCPoint(0.5,0.5));
        bgColor->setPosition(CCPoint(point.x - size.width * 0.5, point.y - 40));
        bgColor->setContentSize(size);
        bgColor->addChild(ttfTip);
        this->addChild(bgColor);
        
        ttfTip->setFontFillColor(ccColor3B(ccc3(255, 255, 255)));
    }
    else
    {
        size = CCSize(0,0);
        ttfTip->setFontFillColor(ccColor3B(ccc3(0, 0, 0)));
        ttfTip->setPosition(CCPoint(point.x, point.y - 60));
        this->addChild(ttfTip);
    }
    
    
    CCAction*  moveTo  = CCMoveTo::create(delayTime, CCPoint(point.x - size.width * 0.5, point.y + 40));
    
    if ( displayBg && bgColor )
    {
        CCFadeIn* fadeIn  = CCFadeIn::create(delayTime * 0.25);
        CCScaleTo* scaleTo = CCScaleTo::create(delayTime * 0.5, 1);
        CCFadeOut* fadeOut = CCFadeOut::create(delayTime * 0.25);
        bgColor->runAction(CCSequence::create(fadeIn,scaleTo, fadeOut, NULL));
        bgColor->runAction(moveTo);
    }
    else
    {
        CCFadeIn* fadeIn  = CCFadeIn::create(delayTime * 0.5);
        CCFadeOut* fadeOut = CCFadeOut::create(delayTime * 0.5);
        ttfTip->runAction(CCSequence::create(fadeIn, fadeOut, NULL));
        ttfTip->runAction(moveTo);
    }
    
    scheduleOnce(schedule_selector(ShowTip::removeFromParent), delayTime);
}
//测试背包翻页
void HelloWorld::test3()
{
	CCSize visableSize = CCSizeMake(480, 320); //屏幕大小
	CCSize mysize = CCSizeMake(300,80); //容器大小

//创建容器、设置大小
	CCLayerColor* scrollLayer = CCLayerColor::create( ccc4(255,255,255,255) );
	scrollLayer->setContentSize(mysize);

//容器中添加三个图片
	for(int i = 1; i <= 3; i++) 
	{
		char file[20];
		sprintf(file, "sp%d.png", i);
		CCSprite* sp = CCSprite::create(file);
		sp->setPosition( ccp(100*i - 50, 40) );
		scrollLayer->addChild(sp);
	}

//创建滚动视图CCScrollView
	//可视区域大小100*80 、 容器为scrollLayer
	CCScrollView* scrollView = CCScrollView::create(CCSizeMake(100, 80), scrollLayer);
	scrollView->setPosition( visableSize/2 - ccp(100/2.0, 0) );
	this->addChild(scrollView, 0, 3);

	//属性设置
	scrollView->setTouchEnabled(false); //关闭触碰事件,无法触摸滚动

	//委托代理
	scrollView->setDelegate(this);


//创建背包翻页按钮
	//前翻pBack、后翻pFront
	pBack = CCMenuItemImage::create("b1.png", "b2.png", "b3.png", this, menu_selector(HelloWorld::scrollImage) );
	pFront = CCMenuItemImage::create("f1.png", "f2.png", "f3.png", this, menu_selector(HelloWorld::scrollImage) );
	pBack->setPosition( ccp(visableSize.width/2 - 100, 60) );
	pFront->setPosition( ccp(visableSize.width/2 + 100, 60) );
	CCMenu* pMenu = CCMenu::create(pBack, pFront, NULL);
	pMenu->setPosition(CCPointZero);
	this->addChild(pMenu, 0, 100);

	pBack->setEnabled(false);
	pageNumber = 0; //第0页

}
CCLayer* CommonScrollBar2::createScrollContent(const CCSize& size) {
	CCLayerColor* layer = CCLayerColor::create(ccc4(255, 0, 0, 255));
	
	float y = 0;
	char buf[64];
	for(int i = 0; i < 100; i++) {
		sprintf(buf, "test label %d", i);
		CCLabelTTF* label = CCLabelTTF::create(buf, "Helvetica", 24);
		label->setAnchorPoint(ccp(0, 0));
		label->setPosition(ccp(0, y));
		layer->addChild(label);
		
		y += label->getContentSize().height + 10 / CC_CONTENT_SCALE_FACTOR();
	}
	
	layer->setContentSize(CCSizeMake(size.width, y));
	return layer;
}
bool LoadingScene::init()
{
    CCLayer::init();
    const CCSize size = CCDirector::sharedDirector()->getWinSize();

    CCLayerColor *background = CCLayerColor::create(ccc4(200, 200, 200, 255));
    background->setContentSize(size);
    addChild(background, -1);

    CCLabelTTF *labelLoading = CCLabelTTF::create("Loading...", "Arial", 20);
    labelLoading->setPosition(CCPoint(size.width * 0.5, size.height * 0.5));
    addChild(labelLoading, 1);
    labelLoading->setColor(ccBLACK);

    scheduleUpdate();

    return true;
}
Example #14
0
// on "init" you need to initialize your instance
bool StageSelectScene::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !CCLayer::init() )
    {
        return false;
    }
    
    //사이즈 받아오기 (윈도우 사이즈)
    //CCSize size = CCDirector::sharedDirector()->getWinSize();
    
    //스크롤 뷰 및 페이지 컨트롤 설정
    
    //스크롤 되는 메뉴 불러오기
    CCSize s = CCDirector::sharedDirector()->getWinSize();
    CCLayerColor* layer = CCLayerColor::create();
    layer->setPosition(0, 0);
    layer->setContentSize(CCSizeMake(s.width, 210));
    
    for (int i = 0; i < 4; i++)
        {
        std::string str = "CloseNormal.png";
        CCMenuItemImage* item = CCMenuItemImage::create(str.c_str(),
                                                        str.c_str(),
                                                        this,
                                                        menu_selector(StageSelectScene::menuCallbackBuyCharater));
        item->setTag(i);
        ScrollMenu* menu = ScrollMenu::create(item, NULL);
        menu->setPosition(ccp(i * 100, 100));
        layer->addChild(menu);
        }
    
    // Set up scroll view
    cocos2d::extension::CCScrollView *scrollView = cocos2d::extension::CCScrollView::create(s, layer);
    scrollView->setAnchorPoint(ccp(0,0));
    scrollView->setPosition(ccp(0, 465));
    scrollView->setDirection(cocos2d::extension::kCCScrollViewDirectionHorizontal);
    
    this->addChild(scrollView);
    
    
    return true;
}
Example #15
0
void GameLayer::createPauseLayer() {
	Context *context = Context::sharedContext();
	CCSize s = CCDirector::sharedDirector()->getWinSize();
	/* 半透明层 */
	CCLayerColor* pauseLayer = CCLayerColor::create();
	pauseLayer->setContentSize(CCSizeMake(s.width, s.height));
	pauseLayer->setColor(ccc3(0, 0, 0));
	pauseLayer->setOpacity(150);
	CCMenu *menu = CCMenu::create();
//回到游戏
	CCMenuItemImage *resumebg = CCMenuItemImage::create(("btn_big.png"),
			("btn_big.png"));
	resumebg->setTarget(this, menu_selector(GameLayer::onResumeItem));
	CCMenuItemFont *resumetxt = CCMenuItemFont::create(LOCAL_RESOURCES->valueByKey("i18n_resume")->getCString());
	resumebg->setAnchorPoint(ccp(0.5, 0.5));
	resumebg->setPosition(ccpp(0, 0));
	resumetxt->setPosition(
			ccp(resumebg->getContentSize().width / 2,
					resumebg->getContentSize().height / 2));
	resumetxt->setAnchorPoint(ccp(0.5, 0.5));
	resumetxt->setColor(context->getFontColor());
	resumebg->addChild(resumetxt);
	menu->addChild(resumebg);

//回到菜单
	CCMenuItemImage *backbg = CCMenuItemImage::create(("btn_big.png"),
			("btn_big.png"));
	backbg->setTarget(this, menu_selector(GameLayer::onBackItem));
	CCMenuItemFont *backtxt = CCMenuItemFont::create(LOCAL_RESOURCES->valueByKey("i18n_back")->getCString());
	backbg->setAnchorPoint(ccp(0.5, 0.5));
	backbg->setPosition(ccpp(0, -0.12));
	backtxt->setPosition(
			ccp(backbg->getContentSize().width / 2,
					backbg->getContentSize().height / 2));
	backtxt->setAnchorPoint(ccp(0.5, 0.5));
	backtxt->setColor(context->getFontColor());
	backbg->addChild(backtxt);
	menu->addChild(backbg);

	pauseLayer->addChild(menu);
	CCDirector::sharedDirector()->getRunningScene()->addChild(pauseLayer, 0,
	TAG_LAYER_PAUSE);
}
Example #16
0
int Bitmap::handler_method_fill( int ptr1, void* ptr2 )
{
	FillRectStruct* ptr2str = (FillRectStruct*)ptr2;
	Bitmap* bitmap =(Bitmap*)ptr1;
	
	if (NULL!=bitmap->p->m_emuBitmap)
	{
		Vec4 color = ptr2str->color;
		CCLayerColor* layerColor = CCLayerColor::create(ccc4(color.x*255,color.y*255,color.z*255,color.w*255));
		layerColor->setContentSize(CCSizeMake(ptr2str->rect.w,ptr2str->rect.h));
		layerColor->setAnchorPoint(ccp(0,1));
		layerColor->ignoreAnchorPointForPosition(false);
		layerColor->setPosition(ccp(ptr2str->rect.x,rgss_y_to_cocos_y(ptr2str->rect.y,bitmap->p->m_height)));
		bitmap->p->m_emuBitmap->addChild(layerColor);
	}

	delete ptr2str;
	return 0;
}
Example #17
0
bool BillboardScene::init()
{
	bool bRef = false;
	do{
		CC_BREAK_IF(!CCLayer::init());
		this->setContentSize(CCSizeZero);

		CCSize winSize = CCDirector::sharedDirector()->getWinSize();
		CCLayerColor* layerColor = CCLayerColor::create();  

		layerColor->setColor(ccc3(0, 0, 0));  

		layerColor->setOpacity(150);  

		layerColor->setContentSize(CCSizeMake(winSize.width, winSize.height));  
		
		this->addChild(layerColor,0); 
		setTouchEnabled(true);
		bRef = true;
	}while(0);
	return bRef;
}
Example #18
0
// on "init" you need to initialize your instance
bool Bug914Layer::init()
{
    // always call "super" init
    // Apple recommends to re-assign "self" with the "super" return value
    if (BugsTestBaseLayer::init())
    {
        setTouchEnabled(true);
        // ask director the the window size
        CCSize size = CCDirector::sharedDirector()->getWinSize();
        CCLayerColor *layer;
        for( int i=0;i < 5;i++)
        {
            layer = CCLayerColor::create(ccc4(i*20, i*20, i*20,255));
            layer->setContentSize(CCSizeMake(i*100, i*100));
            layer->setPosition(ccp(size.width/2, size.height/2));
            layer->setAnchorPoint(ccp(0.5f, 0.5f));
            layer->setIsRelativeAnchorPoint(true);
            addChild(layer, -1-i);
        }

        // create and initialize a Label
        CCLabelTTF *label = CCLabelTTF::create("Hello World", "Marker Felt", 64);
        CCMenuItem *item1 = CCMenuItemFont::create("restart", this, menu_selector(Bug914Layer::restart));

        CCMenu *menu = CCMenu::create(item1, NULL);
        menu->alignItemsVertically();
        menu->setPosition(ccp(size.width/2, 100));
        addChild(menu);

        // position the label on the center of the screen
        label->setPosition(ccp( size.width /2 , size.height/2 ));

        // add the label as a child to this Layer
        addChild(label);
        return true;
    }
    return false;
}
void AdventureLevelClass::loadResAndInit()
{
    CCSize size = LcdAdapClass::sharedLCDADAP()->getWinSize();
    
    
    CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("Themes/scene/stages_bg-hd.plist");
    CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("Themes/scene/themescene1-hd.plist");
    
    memset(comBuffer, 0, sizeof(comBuffer));
    sprintf(comBuffer, "Themes/scene/stages_theme%d-hd.plist",GameStageConClass::sharedStageCon()->getGameStageIndex());
    CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(comBuffer);
    
    
    bgSprite = CCSprite::createWithSpriteFrameName("ss_bg.png");
    CCSize bgSize = bgSprite->getContentSize();
    //    bgSprite->setPosition(ccp(size.width / 2, size.height / 2));
    LcdAdapClass::sharedLCDADAP()->setAdaptorNodePos(bgSprite, ccp(size.width / 2, size.height / 2));
    this->addChild(bgSprite,1);
    
    CCSprite* bgCN = CCSprite::createWithSpriteFrameName("ss_bg_CN.png");
    bgCN->setPosition(ccp(bgSize.width/2, bgSize.height/2));
    bgSprite->addChild(bgCN,1);
    
    
    if (GameStageConClass::sharedStageCon()->getGameStageIndex() != GAME_STAGE_TYPE_EXTRE) {
        memset(comBuffer, 0, sizeof(comBuffer));
        sprintf(comBuffer, "ss_towers_%02d.png",(curPageIndex + 1));
        levelTowerTypeSP = CCSprite::createWithSpriteFrameName(comBuffer);//default
        levelTowerTypeSP->setPosition(ccp(bgSize.width/2, bgSize.height * 18/100));
        bgSprite->addChild(levelTowerTypeSP,3);
        
        levelNumSP = CCSprite::createWithSpriteFrameName("ss_waves_10.png");//default
        levelNumSP->setPosition(ccp(bgSize.width/2, bgSize.height * 84/100));
        bgSprite->addChild(levelNumSP,3);
        
        CCSprite* leftCloud = CCSprite::createWithSpriteFrameName("ss_cloud.png");
        CCSize cloudSize = leftCloud->getContentSize();
        leftCloud->setPosition(ccp(bgSize.width / 2, bgSize.height / 2));
        bgSprite->addChild(leftCloud,5);
    }
    
    ccColor4B color;
    color.a = 125;
    color.b = 0;
    color.g = 0;
    color.r = 0;
    
    scrollLayer = CCLayer::create();//default pos is (0,0)
    scrollLayer->setContentSize(CCSize(size.width * levelNum / 2, size.height));
    bgSprite->addChild(scrollLayer,15);
    
    
    
    for (int i = 0; i < levelNum; i++) {
        
        gameLevelInfoStruct levelInfo = HUDClass::sharedHUD()->getGameCurLevelInfo((GAME_STAGE_TYPE)(GameStageConClass::sharedStageCon()->getGameStageIndex()), (i + 1));
        
        
        
        memset(comBuffer, 0, sizeof(comBuffer));
        sprintf(comBuffer, "ss_map%02d.png",(i + 1));
        CCSprite* sprite = CCSprite::createWithSpriteFrameName(comBuffer);
        CCSize spriteSize = sprite->getContentSize();
        //sprite->setPosition(ccp(size.width / 2, size.height / 2));
        
        memset(comBuffer, 0, sizeof(comBuffer));
        sprintf(comBuffer, "%s","gainhonor_1.png");//这里要加个判断,判断用户的荣誉
        CCSprite* honorSP = NULL;
        if (levelInfo.UserGained > 0 && levelInfo.UserGained < 4) {
            sprintf(comBuffer, "gainhonor_%d.png",levelInfo.UserGained);
            honorSP = CCSprite::createWithSpriteFrameName(comBuffer);
            honorSP->setVisible(true);//要不要显示
        }
        else
        {
            honorSP = CCSprite::createWithSpriteFrameName(comBuffer);
            honorSP->setVisible(false);//要不要显示
        }
        
        honorSP->setPosition(ccp(spriteSize.width * 84/100, spriteSize.height * 22/100));
        sprite->addChild(honorSP,1);
        
        CCSprite* allClearSP = CCSprite::createWithSpriteFrameName("gainhonor_4.png");
        if (!levelInfo.isClearAllObject) {
            allClearSP->setVisible(false);
        }
        allClearSP->setPosition(ccp(spriteSize.width * 60/100, spriteSize.height * 22/100));
        sprite->addChild(allClearSP,1);
        
        levelNormalArray->addObject(sprite);//normal
        
        CCLayerColor* layer = CCLayerColor::create(color);
        layer->setContentSize(spriteSize);
		ccBlendFunc blend = {GL_DST_ALPHA, GL_SRC_ALPHA};
		layer->setBlendFunc(blend);
        
        CCRenderTexture* rt = CCRenderTexture::create(spriteSize.width, spriteSize.height);
        sprite->setPosition(ccp(spriteSize.width/2, spriteSize.height/2));
        rt->begin();
        sprite->visit();
        layer->visit();
        rt->end();
        
        CCSprite* levelShade = CCSprite::createWithTexture(rt->getSprite()->getTexture());
        levelShade->setFlipY(true);
        levelShade->setPosition(ccp((bgSize.width/2) * (i + 1), bgSize.height / 2));
        levelShadeArray->addObject(levelShade);
        
        sprite->setPosition(ccp((bgSize.width/2) * (i + 1), bgSize.height / 2));
        sprite->setVisible(false);
        scrollLayer->addChild(levelShade,1);
        scrollLayer->addChild(sprite,1);
        
        if (i == curPageIndex) {//加个判断,哪一个关卡点亮
            curShadeLevelSprite = levelShade;
            curNormalLevelSprite = sprite;
            curShadeLevelSprite->setVisible(false);
            curNormalLevelSprite->setVisible(true);
        }
    }
    
    gameStartMenu = CCMenuItemImage::create("ss_play_normal_CN.png", "ss_play_pressed_CN.png", this, menu_selector(AdventureLevelClass::selMenuCallBack));
    
    if (GameStageConClass::sharedStageCon()->checkIsCurLevelLocked((curPageIndex + 1))) {
        gameStartMenu->setNormalSpriteFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("ss_locked_CN.png"));
        gameStartMenu->setEnabled(false);
    }
    
    gameStartMenu->setTag(MENU_ID_START_TAG);
    gameStartMenu->setPosition(ccp(bgSize.width/2, bgSize.height * 8/ 100));
    
    CCMenuItemImage* homeBtn = CCMenuItemImage::create("ss_back_normal.png", "ss_back_pressed.png", this, menu_selector(AdventureLevelClass::selMenuCallBack));
    homeBtn->setTag(MENU_ID_HOME_TAG);
    homeBtn->setPosition(ccp(bgSize.width/25, bgSize.height * 95.5 / 100));
    
    CCMenuItemImage* helpBtn = CCMenuItemImage::create("ss_help_normal.png", "ss_help_pressed.png", this, menu_selector(AdventureLevelClass::selMenuCallBack));
    helpBtn->setTag(MENU_ID_HELP_TAG);
    helpBtn->setPosition(ccp(bgSize.width * 24/25, bgSize.height * 95.5 / 100));
    
    
    CCMenu* menu = CCMenu::create(homeBtn,helpBtn,gameStartMenu,NULL);
    menu->setPosition(CCPointZero);
    bgSprite->addChild(menu,2);
    
    loadWaitSprite->removeFromParentAndCleanup(true);
//    this->gotoPageIndexNow(curPageIndex);
    
    scrollLayer->setPosition(ccp((bgSize.width/2) * (-curPageIndex), 0));
}
void AlertViewScene::showMessageParking(CCNode* parent, SEL_MenuHandler callbackFunction  ,int wayPoint)
{
    int basePosition = 50;
    
    float heigth = CCDirector::sharedDirector()->getWinSize().height;
    if (heigth >480) {
        basePosition = 100;//4inch
    }
    
    if( AlertViewScene::isActive ==  true)
        return;
    
    AlertViewScene::isActive = true;
    //Layer - Container with all elements of Alert
    CCLayerColor *node = CCLayerColor::create(ccc4(0,0,0,255));
    node->setContentSize(CCDirector::sharedDirector()->getWinSize());
    node->setOpacity(200);
    node->setAnchorPoint(ccp(0,0));
    node->setPosition(ccp(0,0));

    
    //Fundo do Popup
    CCSprite *sprBackground = CCSprite::create("popup.png");
    sprBackground->setAnchorPoint(ccp(0,0));
    sprBackground->setScale(1);
    sprBackground->setPosition(ccp( 25,basePosition+100));
    node->addChild(sprBackground);

    //Close Button of frame
    CCSprite *btnClose = CCSprite::create("fechar_btn.png");
    CCSprite *btnClosePress = CCSprite::create("fechar_press.png");

    CCSprite *Icone = CCSprite::create("icone_estacionamento.png");
    Icone->setPosition(ccp(45,basePosition+225));
    node->addChild(Icone);
    
    CCMenuItemSprite *itembtnClose = CCMenuItemSprite::create(btnClose, btnClosePress, node, callbackFunction);
	itembtnClose->setAnchorPoint(ccp(0, 0));
	itembtnClose->setPosition(ccp(280,basePosition+303));
    
    //Button Rota para o local
    CCSprite *btnSelect = CCSprite::create("ok_btn.png");
    CCSprite *btnUnselect = CCSprite::create("ok_press.png");
    
    CCMenuItemSprite *itembtnRota = CCMenuItemSprite::create( btnSelect,btnUnselect, node,callbackFunction);
	itembtnRota->setAnchorPoint(ccp(0, 0));
	itembtnRota->setPosition(ccp(115,basePosition+150));
    //Button Rota para o local
    CCMenu* options = CCMenu::create();
    options->addChild(itembtnClose,0,44);
    options->addChild(itembtnRota,0,wayPoint);
    options->setPosition(ccp(0, -20));
    node->addChild(options,3,Global::TAG_Child_Layer);
    
    //Title of Alert
    CCLabelTTF *labelTitle;
    labelTitle = CCLabelTTF::create("Alerta", "LucidaGrandeBold", 16);
    labelTitle->setPosition(ccp(35, basePosition+260));
    labelTitle->setAnchorPoint(ccp(0,0));
    labelTitle->setColor(ccc3(55, 55, 55));
    node->addChild(labelTitle);
    
    
    //sub-Title of Alert
    CCLabelTTF *labelSubTitle;
    labelSubTitle = CCLabelTTF::create("Atenção", "LucidaGrandeBold", 11);
    labelSubTitle->setPosition(ccp(60, basePosition+225));
    labelSubTitle->setAnchorPoint(ccp(0,0));
    labelSubTitle->setColor(ccc3(55, 55, 55));
    node->addChild(labelSubTitle);

    //Description of Alert
    CCLabelTTF *labelDescription;
    labelDescription = CCLabelTTF::create("       Ao entrar por este bloco você só poderá retirar", "Lucida Grande", 10);
    labelDescription->setPosition(ccp(40, basePosition+210));
    labelDescription->setAnchorPoint(ccp(0,0));
    labelDescription->setColor(ccc3(55, 55, 55));
    node->addChild(labelDescription);
    
    //Description of Alert
    CCLabelTTF *labelDescription2;
    labelDescription2 = CCLabelTTF::create("seu veículo neste mesmo bloco.", "Lucida Grande", 10);
    labelDescription2->setPosition(ccp(35, basePosition+200));
    labelDescription2->setAnchorPoint(ccp(0,0));
    labelDescription2->setColor(ccc3(55, 55, 55));
    node->addChild(labelDescription2);


    parent->addChild(node,10,Global::TAG_Alert_Layer);
}
void showMessageSearch(CCNode* sender, SEL_MenuHandler callbackFunction)
{
    if( AlertViewScene::isActive ==  true)
        return;
    
    AlertViewScene::isActive = true;
    //Layer - Container with all elements of Alert
    CCLayerColor *node = CCLayerColor::create(ccc4(0,0,0,255));
    node->setContentSize(CCDirector::sharedDirector()->getWinSize());
    node->setOpacity(200);
    node->setAnchorPoint(ccp(0,0));
    node->setPosition(ccp(0,0));
    
    
    //Fundo do Popup
    CCSprite *sprBackground = CCSprite::create("popup.png");
    sprBackground->setAnchorPoint(ccp(0,0));
    sprBackground->setScale(1);
    sprBackground->setPosition(ccp(25,100));
    node->addChild(sprBackground);
    
    //Close Button of frame
//    CCSprite *btnClose = CCSprite::create("fechar_btn.png");
//    CCSprite *btnClosePress = CCSprite::create("fechar_press.png");
    
//    CCSprite *Icone = CCSprite::create("icone_estacionamento.png");
//    Icone->setPosition(ccp(45,225));
//    node->addChild(Icone);
    
//    CCMenuItemSprite *itembtnClose = CCMenuItemSprite::create(btnClose, btnClosePress, node, callbackFunction);
//	itembtnClose->setAnchorPoint(ccp(0, 0));
//	itembtnClose->setPosition(ccp(280,303));
    
    //Button Rota para o local
//    CCSprite *btnSelect = CCSprite::create("ok_btn.png");
//    CCSprite *btnUnselect = CCSprite::create("ok_press.png");
    
//    CCMenuItemSprite *itembtnRota = CCMenuItemSprite::create( btnSelect,btnUnselect, node,callbackFunction);
//	itembtnRota->setAnchorPoint(ccp(0, 0));
//	itembtnRota->setPosition(ccp(115,150));
//    //Button Rota para o local
//    CCMenu* options = CCMenu::create();
//    options->addChild(itembtnClose,0,44);
//    options->addChild(itembtnRota,0,wayPoint);
//    options->setPosition(ccp(0, -20));
//    node->addChild(options,3,Global::TAG_Child_Layer);
    
    //Title of Alert
    CCLabelTTF *labelTitle;
    labelTitle = CCLabelTTF::create("Alerta", "LucidaGrandeBold", 16);
    labelTitle->setPosition(ccp(35, 260));
    labelTitle->setAnchorPoint(ccp(0,0));
    labelTitle->setColor(ccc3(55, 55, 55));
    node->addChild(labelTitle);
    
    
    //sub-Title of Alert
    CCLabelTTF *labelSubTitle;
    labelSubTitle = CCLabelTTF::create("Atenção", "LucidaGrandeBold", 11);
    labelSubTitle->setPosition(ccp(60, 225));
    labelSubTitle->setAnchorPoint(ccp(0,0));
    labelSubTitle->setColor(ccc3(55, 55, 55));
    node->addChild(labelSubTitle);
    
    //Description of Alert
    CCLabelTTF *labelDescription;
    labelDescription = CCLabelTTF::create("       Sua busca retornou muitos resultados.", "Lucida Grande", 10);
    labelDescription->setPosition(ccp(40, 210));
    labelDescription->setAnchorPoint(ccp(0,0));
    labelDescription->setColor(ccc3(55, 55, 55));
    node->addChild(labelDescription);
    
    //Description of Alert
//    CCLabelTTF *labelDescription2;
//    labelDescription2 = CCLabelTTF::create(".", "Lucida Grande", 10);
//    labelDescription2->setPosition(ccp(35, 200));
//    labelDescription2->setAnchorPoint(ccp(0,0));
//    labelDescription2->setColor(ccc3(55, 55, 55));
//    node->addChild(labelDescription2);
    
    
    sender->addChild(node,10,Global::TAG_Alert_Layer);
}
void AlertViewScene::showMessageRota(CCNode* sender, SEL_MenuHandler callbackFunction ,int wayPoint)
{
    if( AlertViewScene::isActive ==  true)
        return;
    AlertViewScene::isActive = true;

    //Backgroud Alert
    CCSprite *sprBackground = CCSprite::create("popup.png");
    sprBackground->setAnchorPoint(ccp(0,0));
    sprBackground->setScale(1);
    sprBackground->setPosition(ccp(25,100));
    
    //Layer - Container with all elements of Alert
    CCLayerColor *node = CCLayerColor::create(ccc4(0,0,0,255));
    node->setContentSize(CCDirector::sharedDirector()->getWinSize());
    node->addChild(sprBackground);
    node->setOpacity(200);
    node->setAnchorPoint(ccp(0,0));
    node->setPosition(ccp(0,0));

    //Close Button of frame
    CCSprite *btnClose = CCSprite::create("fechar_btn.png");
    CCSprite *btnClosePress = CCSprite::create("fechar_press.png");

    CCSprite *Icone = CCSprite::create("icone_horario.png");
    Icone->setPosition(ccp(45,225));
    node->addChild(Icone);
    
    CCMenuItemSprite *itembtnClose = CCMenuItemSprite::create(btnClose, btnClosePress, node, menu_selector(AlertViewScene::btnCloseAlert));
	itembtnClose->setAnchorPoint(ccp(0, 0));
	itembtnClose->setPosition(ccp(280,303));
    
    //Button Rota para o local
    CCSprite *btnSelect = CCSprite::create("Rota_btn.png");
    CCSprite *btnUnselect = CCSprite::create("Rota_press.png");
    
    CCMenuItemSprite *itembtnRota = CCMenuItemSprite::create( btnSelect,btnUnselect, node,callbackFunction);
	itembtnRota->setAnchorPoint(ccp(0, 0));
	itembtnRota->setPosition(ccp(80,150));
    //Button Rota para o local
    CCMenu* options = CCMenu::create();
    options->addChild(itembtnClose,0,44);
    options->addChild(itembtnRota,0,wayPoint);
    options->setPosition(ccp(0, -20));
    node->addChild(options,3,Global::TAG_Child_Layer);

    //Title of Alert
    CCLabelTTF *labelTitle;
    labelTitle = CCLabelTTF::create(IFixedMenu::LoadWayPointName(wayPoint), "LucidaGrandeBold", 16);
    labelTitle->setPosition(ccp(35, 260));
    labelTitle->setAnchorPoint(ccp(0,0));
    labelTitle->setColor(ccc3(55, 55, 55));
    node->addChild(labelTitle);
    
    CCLabelTTF *labelSubTitle;
    labelSubTitle = CCLabelTTF::create("Horário de funcionamento", "LucidaGrandeBold", 11);
    labelSubTitle->setPosition(ccp(60, 225));
    labelSubTitle->setAnchorPoint(ccp(0,0));
    labelSubTitle->setColor(ccc3(55, 55, 55));
    node->addChild(labelSubTitle);
    
    //Description of Alert
    CCLabelTTF *labelDescription;
    labelDescription = CCLabelTTF::create("Estamos abertos todos os dias das 9h as 24h*", "Lucida Grande", 10);
    labelDescription->setPosition(ccp(60, 210));
    labelDescription->setAnchorPoint(ccp(0,0));
    labelDescription->setColor(ccc3(55, 55, 55));
    node->addChild(labelDescription);
    
    ((CCLayerColor*)sender)->setOpacity(30);
    CCDirector::sharedDirector()->getRunningScene()->addChild(node,10,Global::TAG_Alert_Layer);
}
// on "init" you need to initialize your instance
bool HTMLTest::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !CCLayer::init() )
    {
        return false;
    }

	CCLayerColor* l = CCLayerColor::create(ccc4(0xb0, 0xb0, 0xb0, 0xff));
	l->setContentSize(this->getContentSize());
	this->addChild(l);
    
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

    /////////////////////////////
    // 2. add a menu item with "X" image, which is clicked to quit the program
    //    you may modify it.

    // add a "close" icon to exit the progress. it's an autorelease object
    CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                                        "res/close.png",
                                        "res/close.png",
                                        this,
                                        menu_selector(HTMLTest::menuCloseCallback));
    
	pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 ,
                                origin.y + pCloseItem->getContentSize().height/2));

    // create menu, it's an autorelease object
    CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
    pMenu->setPosition(CCPointZero);
    this->addChild(pMenu, 1);


	using namespace dfont;

	// font1
	FontCatalog* font_catalog = NULL;
	font_catalog = FontFactory::instance()->create_font(
		"font1", "simhei.ttf", 0xffffffff, 32, e_plain, 0.0f, 0xffffffff, 0);
	// font2
	font_catalog = FontFactory::instance()->create_font(
		"font2", "simkai.ttf", 0xffffffff, 24, e_shadow, 1.0f, 0xff000000, 0);
	font_catalog->add_hackfont("htmltest/Marker Felt.ttf", latin_charset(), -1);
	// font3
	font_catalog = FontFactory::instance()->create_font(
		"font3", "simli.ttf", 0xffffffff, 20, e_border, 1.0f, 0xff000000, 0);
	font_catalog->add_hackfont("simhei.ttf", latin_charset(), 5);


	//////////////////////////////////////////////////////////////////////////
	
	CCSize vsize = CCDirector::sharedDirector()->getVisibleSize();
	CCString* str_utf8 = CCString::createWithContentsOfFile("html.htm");

	CCHTMLLabel* htmllabel = CCHTMLLabel::createWithString(str_utf8->getCString(), 
		CCSize(vsize.width*0.8f, vsize.height), "default");
	htmllabel->setAnchorPoint(ccp(0.5f,0.5f));
	htmllabel->setPosition(ccp(vsize.width*0.5f, vsize.height*0.5f));

	addChild(htmllabel);

	s_htmlLabel = htmllabel;

	htmllabel->registerListener(this, &HTMLTest::onHTMLClicked, &HTMLTest::onHTMLMoved );

	FontFactory::instance()->dump_textures();

    return true;
}
Example #24
0
// on "init" you need to initialize your instance
bool GameScene::init()
{
    if ( !CCLayer::init() )
    {
        return false;
    }

    // Variables de tamanyo
    CCSize vs = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

    // Layer con los botones al hacer pause
    _layerPause = CCLayerColor::create(ccc4(255,255,255,0));
    _layerPause->setContentSize(CCSizeMake(350, 100));
    _layerPause->ignoreAnchorPointForPosition(false);
    _layerPause->setAnchorPoint(ccp(0.5, 0.5));
    _layerPause->setPosition(ccp(vs.width/2, vs.height/2));
    _layerPause->retain();

    CCMenuItem* button_resume = CCMenuItemImage::create("btn_resume.png", "btn_resume_h.png", this, menu_selector(GameScene::menuResumeCallback));
    button_resume->setPosition(ccp(50, 50));
    CCMenuItem* button_restart = CCMenuItemImage::create("btn_restart.png", "btn_restart_h.png", this, menu_selector(GameScene::menuRestartCallback));
    button_restart->setPosition(ccp(175, 50));
    CCMenuItem* button_exit = CCMenuItemImage::create("btn_exit.png", "btn_exit_h.png", this, menu_selector(GameScene::menuExitCallback));
    button_exit->setPosition(ccp(300, 50));

    CCMenu* menu_pause = CCMenu::create(button_resume, button_restart, button_exit, NULL);
    menu_pause->setPosition(ccp(0,0));

    _layerPause->addChild(menu_pause);

    // Layer que se muestra al terminar la carrera
    _layerEnd = CCLayerColor::create(ccc4(0,0,0,0));
    _layerEnd->setContentSize(CCSizeMake(225, 225));
    _layerEnd->ignoreAnchorPointForPosition(false);
    _layerEnd->setAnchorPoint(ccp(0.5, 0.5));
    _layerEnd->setPosition(ccp(vs.width/2, vs.height/2));
    _layerEnd->retain();

    CCMenuItem* button_end_restart = CCMenuItemImage::create("btn_restart.png", "btn_restart_h.png", this, menu_selector(GameScene::menuRestartCallback));
    button_end_restart->setPosition(ccp(50, 50));
    CCMenuItem* button_end_exit = CCMenuItemImage::create("btn_exit.png", "btn_exit_h.png", this, menu_selector(GameScene::menuExitCallback));
    button_end_exit->setPosition(ccp(175, 50));

    CCMenu* menu_end = CCMenu::create(button_end_restart, button_end_exit, NULL);
    menu_end->setPosition(ccp(0,0));

    CCLayerColor* layerTime = CCLayerColor::create(ccc4(255,255,255,255));
    layerTime->setContentSize(CCSizeMake(225, 100));
    layerTime->ignoreAnchorPointForPosition(false);
    layerTime->setAnchorPoint(ccp(0.5, 0.5));
    layerTime->setPosition(ccp(112.5, 175));
    layerTime->retain();

    _labelTimeEnd = CCLabelTTF::create("Time:\n0:00:000", "fonts/FrancoisOne.ttf", 30, CCSizeMake(225, 100), kCCTextAlignmentCenter);
    _labelTimeEnd->setColor(ccc3(0,0,0));
    _labelTimeEnd->setPosition(ccp(112.5, 50));
    layerTime->addChild(_labelTimeEnd);

    _layerEnd->addChild(menu_end);
    _layerEnd->addChild(layerTime);


    // Boton de pause (menu)
    CCMenuItem* button_pause = CCMenuItemImage::create("btn_pause.png", "btn_pause_h.png", this, menu_selector(GameScene::menuPauseCallback));
    button_pause->setPosition(ccp(75, vs.height - 75));

    CCMenu* menu = CCMenu::create(button_pause, NULL);
    menu->setPosition(ccp(0,0));

    // Velocidad
    CCString* stringVel = CCString::createWithFormat("%d km/h", (int)_vel);
    _labelVel = CCLabelTTF::create(stringVel->getCString(), "fonts/FrancoisOne.ttf", 30, CCSizeMake(140, 50), kCCTextAlignmentCenter);
    _labelVel->setColor(ccc3(255,255,255));
    _labelVel->setPosition(ccp(vs.width - 72, 50));

    // Distancia
    CCString* stringDist = CCString::createWithFormat("%d m", (int)_dist);
    _labelDist = CCLabelTTF::create(stringDist->getCString(), "fonts/FrancoisOne.ttf", 30, CCSizeMake(140, 50), kCCTextAlignmentCenter);
    _labelDist->setColor(ccc3(255,255,255));
    _labelDist->setPosition(ccp(72, 50));

    // Tiempo
    int hs = _time/3600000;
    int mins = (_time%3600000)/60000;
    int ss = ((_time%3600000)%60000)/1000;
    int ms = ((_time%3600000)%60000)%1000;
    CCString* stringTime = CCString::createWithFormat("%d:%02d:%03d", mins, ss, ms);
    _labelTime = CCLabelTTF::create(stringTime->getCString(), "fonts/FrancoisOne.ttf", 30, CCSizeMake(140, 50), kCCTextAlignmentCenter);
    _labelTime->setColor(ccc3(255,255,255));
    _labelTime->setPosition(ccp(vs.width - 72, vs.height - 50));

    // Click to start
    _labelStart = CCLabelTTF::create("Click to Start", "fonts/FrancoisOne.ttf", 50, CCSizeMake(200, 200), kCCTextAlignmentCenter);
    _labelStart->setColor(ccc3(255,255,255));
    _labelStart->setPosition(ccp(vs.width/2, vs.height/2));
    _labelStart->retain();

    // Hierba
    ccTexParams tp = { GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT};
    CCTexture2D* texture = CCTextureCache::sharedTextureCache()->addImage("texture_grass2.jpg");
    texture->setTexParameters(&tp);
    _grass = CCSprite::createWithTexture(texture, CCRectMake(0, 0, vs.width, vs.height + 256));
    _grass->setPosition( ccp( vs.width/2, vs.height/2 + 128 ) );

    // Carretera
    texture = CCTextureCache::sharedTextureCache()->addImage("texture_road2.jpg");
    texture->setTexParameters(&tp);
    _road = CCSprite::createWithTexture(texture, CCRectMake(0, 0, 512, vs.height + 512));
    _road->setPosition( ccp( vs.width/2, vs.height/2 + 256 ) );

    // Pianos
    texture = CCTextureCache::sharedTextureCache()->addImage("piano.png");
    texture->setTexParameters(&tp);
    _piano1 = CCSprite::createWithTexture(texture, CCRectMake(0, 0, 64, vs.height + 64));
    _piano1->setPosition( ccp(vs.width * 0.15, vs.height / 2 + 32) );
    _piano2 = CCSprite::createWithTexture(texture, CCRectMake(0, 0, 64, vs.height + 64));
    _piano2->setPosition( ccp(vs.width * 0.85, vs.height / 2 + 32) );

    // Coche
    _car = CCSprite::create("car_above_blue.png");
    _car->setPosition(ccp(vs.width/2, 50));

    // Creamos los indicadores de curva
    _curvasI = new CCArray;
    _curvasD = new CCArray;

    for (int i = 1; i <= 5; i++) {
        CCString* str_curvaI = CCString::createWithFormat("curva_izq_%d.png", i);
        CCString* str_curvaD = CCString::createWithFormat("curva_der_%d.png", i);
        CCSprite* curvaI = CCSprite::create(str_curvaI->getCString());
        curvaI->setOpacity(0);
        curvaI->setPosition(ccp(vs.width/2, vs.height/4*3));
        CCSprite* curvaD = CCSprite::create(str_curvaD->getCString());
        curvaD->setOpacity(0);
        curvaD->setPosition(ccp(vs.width/2, vs.height/4*3));
        _curvasI->addObject(curvaI);
        _curvasD->addObject(curvaD);
        this->addChild(curvaI, 5);
        this->addChild(curvaD, 5);
    }

    // Anyadimos los elementos a la vista
    this->addChild(_grass, 1);
    this->addChild(_road, 2);
    this->addChild(_car, 3);
    this->addChild(menu, 5);
    this->addChild(_labelVel, 5);
    this->addChild(_labelDist, 5);
    this->addChild(_labelTime, 5);
    this->addChild(_labelStart, 5);


    // Inicializamos el vector de curvas segun el nivel
    if (_level == 1) {
        _curvas.push_back(Curva(250, 200, 2, false));
        _curvas.push_back(Curva(550, 200, 2, false));
        _curvas.push_back(Curva(1200, 100, 4, false));
        _curvas.push_back(Curva(1650, 200, 2, false));
        _curvas.push_back(Curva(1950, 200, 2, false));
        _curvas.push_back(Curva(2500, 200, 2, false));
        _curvas.push_back(Curva(2800, 200, 2, false));
        _mCircuito = 3000;

    } else if (_level == 2) {
        _curvas.push_back(Curva(100, 150, 2, false));
        _curvas.push_back(Curva(350, 150, 2, false));
        _curvas.push_back(Curva(700, 250, 1, false));
        _curvas.push_back(Curva(1150, 150, 3, false));
        _curvas.push_back(Curva(1500, 100, 4, false));
        _curvas.push_back(Curva(1800, 100, 4, false));
        _curvas.push_back(Curva(2000, 200, 2, true));
        _curvas.push_back(Curva(2300, 50, 5, true));
        _curvas.push_back(Curva(2750, 150, 2, true));
        _curvas.push_back(Curva(3000, 50, 4, true));
        _curvas.push_back(Curva(3100, 100, 2, false));
        _curvas.push_back(Curva(3300, 100, 2, false));
        _curvas.push_back(Curva(3500, 100, 4, false));
        _curvas.push_back(Curva(3800, 250, 2, false));
        _curvas.push_back(Curva(4250, 250, 1, false));
        _curvas.push_back(Curva(4700, 150, 3, false));
        _mCircuito = 5350;

    } else { // _level == 3
        _curvas.push_back(Curva(100, 50, 2, true));
        _curvas.push_back(Curva(250, 50, 2, false));
        _curvas.push_back(Curva(400, 100, 4, false));
        _curvas.push_back(Curva(600, 100, 2, false));
        _curvas.push_back(Curva(800, 50, 4, true));
        _curvas.push_back(Curva(950, 50, 4, true));
        _curvas.push_back(Curva(1100, 100, 2, false));
        _curvas.push_back(Curva(1300, 50, 4, true));
        _curvas.push_back(Curva(1450, 50, 4, true));
        _curvas.push_back(Curva(1600, 100, 4, false));
        _curvas.push_back(Curva(1900, 100, 2, false));
        _curvas.push_back(Curva(2100, 50, 5, true));
        _curvas.push_back(Curva(2450, 100, 2, true));
        _curvas.push_back(Curva(2650, 50, 5, false));
        _curvas.push_back(Curva(2900, 100, 4, false));
        _curvas.push_back(Curva(3200, 150, 2, true));
        _curvas.push_back(Curva(3450, 100, 4, true));
        _curvas.push_back(Curva(3650, 50, 4, true));
        _curvas.push_back(Curva(3800, 100, 4, false));
        _curvas.push_back(Curva(4000, 50, 4, true));
        _curvas.push_back(Curva(4150, 150, 2, true));
        _curvas.push_back(Curva(4400, 100, 2, false));
        _curvas.push_back(Curva(4600, 100, 2, false));
        _curvas.push_back(Curva(4800, 100, 5, true));
        _curvas.push_back(Curva(5000, 50, 2, true));
        _curvas.push_back(Curva(5150, 100, 5, false));
        _curvas.push_back(Curva(5450, 200, 5, true));
        _mCircuito = 5850;
    }

    // Inicializamos el vector de coches en contra
    _oppCars = new CCArray;

    // Activamos el acelerometro y el touch
    this->setTouchEnabled(true);

    // Calculamos el tamanyo de cada tramo para informar al Arduino
    int nleds = CCUserDefault::sharedUserDefault()->getIntegerForKey("nleds");
    _longTramo = (int) (_mCircuito/nleds);

    // Enviamos al Arduino que hemos entrado
    int iColor = CCUserDefault::sharedUserDefault()->getIntegerForKey("color");
    CCDictionary* prms = CCDictionary::create();
    prms->setObject(CCString::createWithFormat("%d", iColor), "color");
    SendMessageWithParams(string("JugadorEntra"), prms);

    return true;
}
// on "init" you need to initialize your instance
bool MainMenuScene::init()
{
    // Parent
    CCLayerColor *layer = CCLayerColor::create();
    layer->initWithColor(ccc4(255, 255, 255, 255), VisibleRect::right().x , VisibleRect::top().y);
    layer->setPosition(VisibleRect::center());
    layer->setAnchorPoint(ccp(0.5f, 0.5f));
    layer->ignoreAnchorPointForPosition(false);
    addChild(layer, 0);
    
    CCSprite *fondo = CCSprite::create("fondo.png");
    fondo->setPosition(VisibleRect::center());
    layer->addChild(fondo);
    
    // 1st Son
    CCLayerColor *upperLayer = CCLayerColor::create();
    upperLayer->setContentSize(ccp(VisibleRect::right().x , VisibleRect::top().y/2));
    //upperLayer->initWithColor(ccc4(120, 120, 120, 120), VisibleRect::right().x , VisibleRect::top().y/2);
    upperLayer->setPosition(ccp(VisibleRect::left().x, VisibleRect::center().y));
    upperLayer->setAnchorPoint(ccp(0,0));
    upperLayer->ignoreAnchorPointForPosition(false);
    layer->addChild(upperLayer, 0);
    
    CCSprite *spriteLogo = CCSprite::create("logo_opciones.png");
    spriteLogo->setPosition(ccp(layer->getPosition().x, layer->getPosition().y/2));
    upperLayer->addChild(spriteLogo);
    
    // 2nd Son
    CCLayerColor *lowerLayer = CCLayerColor::create();
    lowerLayer->setContentSize(ccp(VisibleRect::right().x , VisibleRect::top().y/2));
    //lowerLayer->initWithColor(ccc4(200, 200, 200, 200), VisibleRect::right().x , VisibleRect::top().y/2);
    lowerLayer->setPosition(ccp(VisibleRect::left().x, VisibleRect::bottom().y));
    lowerLayer->setAnchorPoint(ccp(0,0));
    lowerLayer->ignoreAnchorPointForPosition(false);
    layer->addChild(lowerLayer, 0);
    
    int mySize = lowerLayer->getContentSize().height / 3;
    
    // Button SAILKAPENA
    CCTexture2D *texture1 = CCTextureCache::sharedTextureCache()->addImage("botoia_normal.png");
    SpriteButton *pButton1 = SpriteButton::create(texture1 ,this, callfuncO_selector(MainMenuScene::menuSelector), 1.0f);
    pButton1->setTag(2);
    pButton1->setPosition(ccp(
                              lowerLayer->getContentSize().width / 2,
                              lowerLayer->getContentSize().height / 2));
    pButton1->setAnchorPoint(ccp(0.5f, 0.5f));
    CCLabelTTF *pLabel1 = CCLabelTTF::create("Sailkapena", "fonts/PT_Sans-Web-Bold.ttf", 30.0);
    pLabel1->setPosition(ccp(
                             lowerLayer->getContentSize().width / 2,
                             lowerLayer->getContentSize().height / 2));
    lowerLayer->addChild(pButton1);
    lowerLayer->addChild(pLabel1);
    
    // Button JOKATU
    CCTexture2D *texture2 = CCTextureCache::sharedTextureCache()->addImage("botoia_normal.png");
    SpriteButton *pButton2 = SpriteButton::create(texture2 ,this, callfuncO_selector(MainMenuScene::menuSelector), 1.0f);
    pButton2->setTag(1);
    pButton2->setPosition(ccp(
                              lowerLayer->getContentSize().width / 2,
                              (mySize * 3) - texture2->getContentSize().height));
    pButton2->setAnchorPoint(ccp(0.5f, 0.5f));
    CCLabelTTF *pLabel2 = CCLabelTTF::create("Jokatu", "fonts/PT_Sans-Web-Bold.ttf", 30.0);
    pLabel2->setPosition(ccp(
                             lowerLayer->getContentSize().width / 2,
                             (mySize * 3) - texture2->getContentSize().height));
    lowerLayer->addChild(pButton2);
    lowerLayer->addChild(pLabel2);
    
    // Button HONI BURUZ
    CCTexture2D *texture3 = CCTextureCache::sharedTextureCache()->addImage("botoia_normal.png");
    SpriteButton *pButton3 = SpriteButton::create(texture3 ,this, callfuncO_selector(MainMenuScene::menuSelector), 1.0f);
    pButton3->setTag(3);
    pButton3->setPosition(ccp(
                              lowerLayer->getContentSize().width / 2,
                              mySize - (texture2->getContentSize().height / 2)));
    pButton3->setAnchorPoint(ccp(0.5f, 0.5f));
    CCLabelTTF *pLabel3 = CCLabelTTF::create("Honi buruz", "fonts/PT_Sans-Web-Bold.ttf", 30.0);
    pLabel3->setPosition(ccp(
                             lowerLayer->getContentSize().width / 2,
                             mySize - (texture2->getContentSize().height / 2)));
    lowerLayer->addChild(pButton3);
    lowerLayer->addChild(pLabel3);
    
	return true;
}