cocos2dx 3.x(多個按鈕button執行同一事件的區分)


 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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM