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.触摸钢琴执行结果

源代码下载

最新文章

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

热门文章

  1. dfs序题集
  2. reac实现控制输入框字符长度
  3. IE6 浏览器常见兼容问题 共23个
  4. PHP读取XML数据中CDATA内数值
  5. eclipse引入svn插件,并将项目同步到svn
  6. MyBatis学习总结(2)——使用MyBatis对表执行CRUD操作
  7. Mybatis动态代理实现函数调用
  8. COJS 1752. [BOI2007]摩基亚Mokia
  9. angular-代码段
  10. ZOJ 3329