cocos2dx 中基础零碎知识

本文探讨了游戏开发中多媒体技术的应用,包括图像处理、音视频处理、AI音视频处理等关键技术,以及如何将这些技术整合到游戏开发中,提升游戏体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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, 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, 1));
    <span style="white-space:pre">	</span>label->setPosition(origin.x + 10, 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);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值