cocos2dx 触摸钢琴
2024-10-12 09:38:54
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.触摸钢琴执行结果
源代码下载
最新文章
- Bellman-Ford 单源最短路径算法
- Bink Player
- Sql Server建立链接服务器访问Access的MDB数据库
- BZOJ 2982 combination
- Esfog_UnityShader教程_漫反射DiffuseReflection
- LINGO使用教程(一)
- ViewPager介绍和使用说明
- Stanford CoreNLP--常量定义
- C# Dll动态链接库
- RB1001: IE6 IE7 IE8(Q) 负边距 (margin) 导致元素溢出 hasLayout 容器时显示异常
- PLSQL 循环示例
- AutoPy首页、文档和下载 - 跨平台的Python GUI工具包 - 开源中国社区
- vmware卸载问题
- BZOJ 3097: Hash Killer I【构造题,思维题】
- 移植mysql到ARM(AM335x)
- 【2016年终大典】i春秋一年中不可错过的安全精华
- 如何使用git管理代码
- js实现60秒倒计时效果(使用了jQuery)
- linux查看当前文件夹的大小
- 搭建开发环境(React Native)