《Cocos2d-x游戏开发之旅》学习笔记(一)

第4章

4.1.在场景中播放声音
#include "SimpleAudioEngine.h"//添加头文件
bool HelloWorld::init()
{
	if (!Layer::init())
	{
		return false;
	}
	CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic("MyMusic.mp3", true);//播放音乐
	CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("MyEffect.wav");//播放音效
	return true;
}

4.2.可以拉伸的精灵Scale9Sprite
#include "cocos-ext.h"
using namespace cocos2d::extension;
bool HelloWorld::init()
{
	//
	// 1. super init first
	if (!Layer::init())
	{
		return false;
	}

	Scale9Sprite *scalesp = Scale9Sprite::create("MyPicture.png");
	scalesp->setContentSize(Size(200, 200));
	scalesp->setPosition(Point(0, 0, ));

	return true;
}

另外,由于Scale9Sprite不在cocos2d包里,它属于扩展库,所以要进行下面三个操作才能使用:
(1)在工程的解决方案上右击,【添加】【现有项目】,打开libExtensions.vexproj文件,目录为cocos2d\extensions\proj.win32。
(2)在项目上右击,【属性】【通用属性】【添加新引用】,把libExtensions选中点确定。
(3)在项目上右击,【属性】【配置】【C/C++】【常规】【附加包含目录】,进行编辑,在最后加上:$(EngineRoot)。

4.3.利用Scale9Sprite创建ControlButton
bool HelloWorld()
{
    Scale9Sprite *spNor = Scale9Sprite::create("button.png");
    Scale9Sprite *spSel = Scale9Sprite::create("buttonHighlighted.png");

    Label *label = Label::create("Touch me!", "Marker Felt", 30);

    ControlButton *ctrlBtn = ControlButton::create(label, spNor);
    ctrlBtn->setBackgroundSpriteForState(spSel, Control::State::HIGH_LIGHTED);

    ctrlBtn->setPosition(Point(50, 200));
	this->addChild(ctrlBtn);
    
    return true;
}

注意:ControlButton的大小是有Label决定的。官方已经不再维护ControlButton。


4.4.利用cocostudio ui编辑器创建人型血量条

(1)使用cocostudio ui编辑器编辑导出文件

利用一个图片创建一个精灵,再在精灵上创建一个进度条,精灵和进度条是父子关系,进度条使用和精灵相同的图片,精灵混合设置为红,将精灵和进度条叠加,然后导出文件,将三个文件(.ExportJson、.plist、.png)放到项目的resources文件夹中。

(2)导入cocostudio、UI库,过程与前面导入extensions库相似,路径分别为:

cocos2d\cocos\editor-support\cocostudio\proj.win32\libCocosStudio.vcxproj

cocos2d\cocos\ui\proj.win32\libGUI.vcxproj

在【附加包含目录】中添加:$(EngineRoot)cocos\editor-support

    $(EngineRoot)cocos

(3)添加代码

在头文件中:

#include "editor-support/cocostudio/CCSGUIReader.h"
#include "ui/CocosGUI.h"
using namespace cocos2d::ui;
using namespace cocostudio;

class HelloWorld : public cocos2d::Layer
{
public:
    ...
	void onTouch(Ref *,TouchEventType type);
	
	LoadingBar *m_hpBar;
	...
};
在源文件中:

bool HelloWorld::init()
{
    if ( !Layer::init() )
    {
        return false;
    }
    
	auto UI = cocostudio::GUIReader::getInstance()->widgetFromJsonFile("Test_1.ExportJson");//利用cocostudio导出的三个文件之一
	UI->setPosition(Point(100, 100));
	this->addChild(UI);

	m_hpBar =(LoadingBar*)Helper::seekWidgetByName(UI,"hpBar");//"hpBar"是进度条的名字,利用cocostudio修改的
	m_hpBar->setTouchEnabled(true);
	m_hpBar->addTouchEventListener(this, toucheventselector(HelloWorld::onTouch));
    return true;
}



void HelloWorld::onTouch(Ref * ref, TouchEventType type)
{
	switch (type)
	{
	case TouchEventType::TOUCH_EVENT_BEGAN:
		m_hpBar->setPercent(m_hpBar->getPercent() - 1);
		break;
	}
	
}

效果:



点击一下红色部分就会变多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值