博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2dx 触摸钢琴
阅读量:6888 次
发布时间:2019-06-27

本文共 1451 字,大约阅读时间需要 4 分钟。

1.触摸钢琴项目描写叙述

1.1触摸钢琴功能描写叙述

实现手指点按琴键发出相应的音调,按下位置出现星云的粒子特效,滚动实现移动到别的琴键的位置,按下安卓返回键运行关闭。

1.2触摸钢琴所需技术

粒子特效,安卓按键监听。

2.触摸钢琴具体设计

2.1点击琴键发出相应的音调

首先创建好UI,底层为一个滚动层。在上面依照位置加入相应的琴键button。每一个琴键button要设置Tag。和依照音调设置名字。注意:黑色琴键button的要通过cocostudio的对象结构树调整到白键的以下。这样点击黑键时才会优先响应黑键。

通过Tag值遍历得每个button控件。假设存在相应的button对象,就绑定响应。

or (int i = 0; i < 70; i++)	{		auto btn = (Button*)Helper::seekWidgetByTag(UI, i);		if (btn)		{			btn->addTouchEventListener(this, toucheventselector(CPaino::onBtnTouch));		}	}

在响应函数onBtnTouch中,被点击的对象最为Ref传入到函数中。对传入的对象进行类型转换,就能够得到名字,然后拼出一个声音文件路径名,播放该声音文件就可演奏发声。

/******************************************************函数功能:触摸按键响应传入參数:Ref* target:被点击的button对象		  TouchEventType type:点击的类型*******************************************************/void CPaino::onBtnTouch(Ref* target, TouchEventType type){	auto btn = (Button*)target;	if (btn && type == TouchEventType::TOUCH_EVENT_BEGAN)	{		std::string sBtnName = btn->getName();		std::string sSoundName = StringUtils::format("sound/%s.wav", sBtnName.c_str());			CocosDenshion::SimpleAudioEngine::getInstance()->playEffect(sSoundName.c_str());	}}

2.2触摸位置产生星云粒子特效

採用cocos2dx中的粒子特效。注意要在琴键当前层上在挂载一个触控层。在触摸的点处播放粒子特效。

2.3监听安卓按键

初始化中添加同意接收按键事件的函数。

auto listenerKeyPad = EventListenerKeyboard::create();	listenerKeyPad->onKeyReleased = CC_CALLBACK_2(CPaino::onKeyPadReleased,this);	_eventDispatcher->addEventListenerWithSceneGraphPriority(listenerKeyPad,this);

之后写onKeyPadReleased。识别到返回键退出游戏。

4.触摸钢琴执行结果

源代码下载

你可能感兴趣的文章
(转)工作之路---记录LZ如何在两年半的时间内升为PM
查看>>
CoreAnimation
查看>>
JS基础属性跟运算
查看>>
HDU 1816 Get Luffy Out *
查看>>
Robot Framework + Selenium library + IEDriver环境搭建
查看>>
第220天:Angular---路由
查看>>
Android中XML解析-PULL解析
查看>>
mysql小记--基础知识
查看>>
Java验证码
查看>>
vue 编辑
查看>>
【状压DP】【NOIP提高组】愤怒的小鸟
查看>>
MVC, MVP, MVVM总结——MVC篇
查看>>
汤炒栗子
查看>>
四川大学师生莅临现场
查看>>
跨域ajax原理(jsonp方式)
查看>>
Discover a powerful and suitable Javascript Automatic Testing Toolkit
查看>>
Evosuite使用方法入门
查看>>
VC++ CStatic控件背景透明且改变其文本时,文字重叠解决方法
查看>>
ASP.NET MVC中的嵌套布局页
查看>>
如何在XCode上禁用indexing
查看>>