cocos2dx 中基础零碎知识

前端之家收集整理的这篇文章主要介绍了cocos2dx 中基础零碎知识前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


1.设置屏幕尺寸

bool AppDelegate::applicationDidFinishLaunching() {
    // initialize director
    auto director = Director::getInstance();
    auto glview = director->getOpenGLView();
    if(!glview) 
	{
		Configuration *pConf = Configuration::getInstance();
		pConf->loadConfigFile("strings.plist");
		glview = GLView::create(pConf->getValue("string1").asString());

        director->setOpenGLView(glview);
    }

	director->setProjection(Director::Projection::_2D);//设置图片抗锯齿

	glview->setDesignResolutionSize(360,640,ResolutionPolicy::EXACT_FIT);

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC)
    glview->setFrameSize(360,640);
#endif

    // turn on display FPS
    director->setDisplayStats(false);

    // set FPS. the default value is 1.0/60 if you don't call this
    director->setAnimationInterval(1.0 / 60);

    // create a scene. it's an autorelease object
    auto scene = HomePage::createScene();

    // run
    director->runWithScene(scene);

    return true;
}

2.一个scene上放两个layer,其中一个半透明
cocos2d::Scene * FengJing::createScene()
{
	auto scene = Scene::create();

	//auto layer = FengJing::create();
	auto layer = GalleryLayer::create();

	auto layer2 = Poetry::create();
	layer2->setOpacity(5); 

	scene->addChild(layer);

	scene->addChild(layer2);

	return scene;
}


3.设置背景颜色

if (!LayerColor::initWithColor(Color4B(255,255,255)))
{
<span style="white-space:pre">	</span>return false;
}

4.定时器
//scheduleUpdate();

scheduleOnce(schedule_selector(HomePage::update),1.0f);

void HomePage::update(float delta)
{
	auto director = Director::getInstance();

	auto scene = FengJing::createScene();	

	director->replaceScene(scene);
}

5.获取系统当前时间
<span style="white-space:pre">	</span>struct tm *tm;  
	time_t timep;

	time(&timep);

	tm = localtime(&timep);

	char time[64] = { 0 };
	sprintf(time,"%02d月%02d日",tm->tm_mon + 1,tm->tm_mday);
	
	std::string  stime = time;

6.用系统字体显示文字
   <span style="white-space:pre">	</span>auto label = Label::createWithSystemFont(CMyUtils::getInstance()->Gb2312ToUtf8(stime.c_str()),"Arial",20);
    <span style="white-space:pre">	</span>label->setColor(Color3B::WHITE);
    <span style="white-space:pre">	</span>label->setAnchorPoint(Vec2(0,1));
    <span style="white-space:pre">	</span>label->setPosition(origin.x + 10,origin.y + visibleSize.height - 10 );
    <span style="white-space:pre">	</span>addChild(label);

7.用.ttf文件显示自定义字体文字
<span style="white-space:pre">	</span>label = Label::createWithTTF(CMyUtils::getInstance()->Gb2312ToUtf8("少小离家老大回"),"fonts/test2.ttf",26);
    <span style="white-space:pre">	</span>label->setColor(Color3B::WHITE);
	label->setAnchorPoint(Vec2(0,origin.y + visibleSize.height - 40 );
    <span style="white-space:pre">	</span>addChild(label);


8.菜单按钮
<span style="white-space:pre">	</span>auto menuitem1 = MenuItemImage::create("bt_main_shicitiaozhan.png","bt_main_shicitiaozhan.png",CC_CALLBACK_1(Poetry::ShiciTiaozhanCallback,this));
	menuitem1->setScale(0.3f);
	menuitem1->setAnchorPoint(Vec2(0,0));
	menuitem1->setPosition(Vec2(origin.x + 10,origin.y + 20));
	menuitem1->setOpacity(200);
	
	auto menuitem2 = MenuItemImage::create("bt_main_jingcaijiemu.png","bt_main_jingcaijiemu.png");
	menuitem2->setScale(0.3f);
	menuitem2->setAnchorPoint(Vec2(0,0));
	menuitem2->setPosition(Vec2(origin.x + 120,origin.y + 20));
	menuitem2->setOpacity(200);
	
	auto menuitem3 = MenuItemImage::create("bt_main_baomingcansai.png","bt_main_baomingcansai.png");
	menuitem3->setScale(0.3f);
	menuitem3->setAnchorPoint(Vec2(0,0));
	menuitem3->setPosition(Vec2(origin.x + 235,origin.y + 20));
	menuitem3->setOpacity(200);

	auto menu2 = Menu::create(menuitem1,menuitem2,menuitem3,NULL);
	menu2->setPosition(Vec2::ZERO);
    <span style="white-space:pre">	</span>this->addChild(menu2,1);


菜单按钮回调
void Poetry::ShiciTiaozhanCallback(Ref* pSender)
{
	auto director = Director::getInstance();

	auto scene = ShiciTiaozhan::createScene();

	director->replaceScene(scene);
}


9.另一种利用监听回调的按钮
<span style="white-space:pre">	</span>auto sprite4 = Sprite::create("title_back_red.png");
	sprite4->setScaleX(0.5f);
	sprite4->setScaleY(0.5f);
	sprite4->setAnchorPoint(Vec2(0,1));
	sprite4->setPosition(Vec2(origin.x  + 15,visibleSize.height + origin.y - sprite3->boundingBox().size.height - 15));
	this->addChild(sprite4,0);

	auto touchListener = EventListenerTouchOneByOne::create();
    <span style="white-space:pre">	</span>touchListener->onTouchBegan = [sprite4](Touch* t,Event * e)
	{        
        <span style="white-space:pre">	</span>if (sprite4->getBoundingBox().containsPoint(t->getLocation())) 
		{
            <span style="white-space:pre">		</span>auto director = Director::getInstance();

			auto scene = FengJing::createScene();

			director->replaceScene(scene);
        <span style="white-space:pre">	</span>}

		return false;
      };
      Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraPHPriority(touchListener,this);

猜你在找的Cocos2d-x相关文章