1 // 2 // ATTGamePoker.hpp 3 // MalaGame 4 // 5 // Created by work on 2016/10/18. 6 // 7 // 8 9 #ifndef ATTGamePoker_hpp 10 #define ATTGamePoker_hpp 11 12 #include <stdio.h> 13 #include <cocos2d.h> 14 15 16 class ATTGamePoker : public cocos2d::Layer 17 { 18 19 private: 20 21 cocos2d::ui::Button * m_btnHold[5];//五個按鈕 22 cocos2d::Sprite * m_holdGlitter[5];//發光特效/*按鈕點下時出現,松開時消失*/ 23 24 public: 25 26 virtual bool init(); 27 28 void holdCB(Ref *pSender, cocos2d::ui::Widget::TouchEventType type);//聲明點擊事件 29 30 CREATE_FUNC(ATTGamePoker); 31 32 }; 33 34 #endif /* ATTGamePoker_hpp */
1 // 2 // ATTGamePoker.cpp 3 // MalaGame39 4 // 5 // Created by work on 2016/10/18. 6 // 7 // 8 9 #include "ATTGamePoker.hpp" 10 #include <SimpleAudioEngine.h> 11 12 using namespace cocos2d; 13 using namespace cocos2d::ui; 14 15 bool ATTGamePoker::init() 16 { 17 if (!Layer::init()) 18 { 19 return false; 20 } 21 22 for (int i=0; i<5; i++) { 23 auto soundbg=cocos2d::ui::Scale9Sprite::createWithSpriteFrameName("gobang_option_sound_off.png"); 24 m_btnHold[i]=ControlButton::create(soundbg); 25 m_btnHold[i] ->setPosition(50*i, 60); 26 m_btnHold[i] -> setEnabled(false); 27 m_btnHold[i]->setTag(i+100);//設置tag值便於區分 28 m_btnHold[i]->addTouchEventListener(CC_CALLBACK_2(ATTMyGameScene::holdCB, this)); 29 m_holdGlitter[i] = static_cast<Sprite *>(m_rootNode->getChildByName(StringUtils::format("att_8_glitter_%d",i))); 30 m_holdGlitter[i] ->setPosition(50*i, 60); 31 32 m_holdGlitter[i]->setVisible(false);//設置發光體全部隱藏 33 m_holdGlitter[i]->setTag(i+200); 34 } 35 ; 36 37 38 39 40 41 return true; 42 } 43 44 45 //觸摸事件的實現方法 46 void ATTMyGameScene::holdCB(Ref *pSender, cocos2d::ui::Widget::TouchEventType type)//保牌 47 { 48 49 if (type == Widget::TouchEventType::BEGAN)//判斷點擊類型,按鈕按下生效 50 { 51 int tag = ((Button*)pSender)->getTag();//通過點擊事件來獲取當前按鈕的tag值,就是這一句話來區分當前哪個button響應來此次事件 52 53 for (int i=0; i<5; i++) { 54 m_holdGlitter[i]->setVisible(false); 55 if (200+i==tag+100) {//判斷通過tag值拿到發光體精靈 56 m_holdGlitter[i]->setVisible(true);//讓其顯示 57 } 58 } 59 } 60 else if (type == Widget::TouchEventType::ENDED)//按鈕松開時生效 61 { 62 63 for (int i=0; i<5; i++) { 64 65 m_holdGlitter[i]->setVisible(false);//送開時全部隱藏 66 67 } 68 } 69 70 71 72 }