cocos2dx 触摸钢琴
发布时间:2020-12-14 16:26:06 所属栏目:百科 来源:网络整理
导读:1. 触摸钢琴项目描述 1.1 触摸钢琴功能描述 实现手指点按琴键发出对应的音调,按下位置出现星云的粒子特效,滚动实现移动到别的琴键的位置,按下安卓返回键执行关闭。 1.2 触摸钢琴所需技术 粒子特效,安卓按键监听。 2. 触摸钢琴详细设计 2.1 点击琴键发出
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.触摸钢琴运行结果源码下载 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |