cocos2dx 触摸钢琴

cocos2dx 触摸钢琴,第1张

概述1.触摸钢琴项目描述 1.1触摸钢琴功能描述 实现手指点按琴键发出对应的音调,按下位置出现星云的粒子特效,滚动实现移动到别的琴键的位置,按下安卓返回键执行关闭。 1.2触摸钢琴所需技术 粒子特效,安卓按键监听。 2.触摸钢琴详细设计 2.1点击琴键发出对应的音调 首先创建好UI,底层为一个滚动层,在上面按照位置添加对应的琴键按钮,每个琴键按钮要设置Tag,和按照音调设置名字。注意:黑色琴键按钮的要 1.触摸钢琴项目描述 1.1触摸钢琴功能描述

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

1.2触摸钢琴所需技术

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

2.触摸钢琴详细设计 2.1点击琴键发出对应的音调

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

通过Tag值遍历得每一个按钮控件,如果存在对应的按钮对象,就绑定响应。

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:被点击的按钮对象		  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.触摸钢琴运行结果

源码下载

总结

以上是内存溢出为你收集整理的cocos2dx 触摸钢琴全部内容,希望文章能够帮你解决cocos2dx 触摸钢琴所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1069074.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存