• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            專職C++

            不能停止的腳步

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              163 Posts :: 7 Stories :: 135 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(28)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            (基于cocos2dx2.2.2)cocos2dx的按鈕類定義在extensions\GUI\CCControlExtension\CCControlButton.h
            在需要用的時候,包括就可以了。
            我們在相應的申明的地方,包含下面三個頭文件

            #include "GUI/CCControlExtension/CCControlButton.h"
            #include "GUI/CCControlExtension/CCScale9Sprite.h"
            #include "GUI/CCControlExtension/CCControl.h"
            然按鈕的事件有如下定義
            enum 
            {
                CCControlEventTouchDown           = 1 << 0,    // A touch-down event in the control.
                CCControlEventTouchDragInside     = 1 << 1,    // An event where a finger is dragged inside the bounds of the control.
                CCControlEventTouchDragOutside    = 1 << 2,    // An event where a finger is dragged just outside the bounds of the control. 
                CCControlEventTouchDragEnter      = 1 << 3,    // An event where a finger is dragged into the bounds of the control.
                CCControlEventTouchDragExit       = 1 << 4,    // An event where a finger is dragged from within a control to outside its bounds.
                CCControlEventTouchUpInside       = 1 << 5,    // A touch-up event in the control where the finger is inside the bounds of the control. 
                CCControlEventTouchUpOutside      = 1 << 6,    // A touch-up event in the control where the finger is outside the bounds of the control.
                CCControlEventTouchCancel         = 1 << 7,    // A system event canceling the current touches for the control.
                CCControlEventValueChanged        = 1 << 8      // A touch dragging or otherwise manipulating a control, causing it to emit a series of different values.
            };
            事件原型定義:typedef void (CCObject::*SEL_CCControlHandler)(CCObject*, CCControlEvent); 并用宏cccontrol_selector定義了 #define cccontrol_selector(_SELECTOR) (SEL_CCControlHandler)(&_SELECTOR) 事件的兩個參數分別的產生事件的對象,具體的事件,這是一個無符號32位整數,事件值就是CCControlEventTouchDown等定義的值。
            在這里,定義了事件函數    void OnTouchDown(CCObject* pSender, extension::CCControlEvent event);
                void OnTouchDragEnter(CCObject* pSender, extension::CCControlEvent event);
                void OnTouchDragExit(CCObject* pSender, extension::CCControlEvent event);
                void OnTouchDragInside(CCObject* pSender, extension::CCControlEvent event);
                void OnTouchDragOutside(CCObject* pSender, extension::CCControlEvent event);
                void OnTouchUpInside(CCObject* pSender, extension::CCControlEvent event);
                void OnTouchUpOutside(CCObject* pSender, extension::CCControlEvent event);
                void OnTouchCancel(CCObject* pSender, extension::CCControlEvent event);
            具體事件實現如下

            void HelloWorld::OnTouchDown(CCObject* pSender, extension::CCControlEvent event)
            {
                PrintLog("OnTouchDown:%u", event);
            }

            void HelloWorld::OnTouchDragEnter(CCObject* pSender, extension::CCControlEvent event)
            {
                PrintLog("OnTouchDragEnter:%u", event);

            }

            void HelloWorld::OnTouchDragExit(CCObject* pSender, extension::CCControlEvent event)
            {
                PrintLog("OnTouchDragExit:%u", event);

            }

            void HelloWorld::OnTouchDragInside(CCObject* pSender, extension::CCControlEvent event)
            {
                PrintLog("OnTouchDragInside:%u", event);
            }

            void HelloWorld::OnTouchDragOutside(CCObject* pSender, extension::CCControlEvent event)
            {
                PrintLog("OnTouchDragOutside:%u", event);
            }

            void HelloWorld::OnTouchUpInside(CCObject* pSender, extension::CCControlEvent event)
            {
                PrintLog("OnTouchUpInside:%u", event);
            }

            void HelloWorld::OnTouchUpOutside(CCObject* pSender, extension::CCControlEvent event)
            {
                PrintLog("OnTouchUpOutside:%u", event);
            }

            void HelloWorld::OnTouchCancel(CCObject* pSender, extension::CCControlEvent event)
            {
                PrintLog("OnTouchCancel:%u", event);
            }
            然后定義一個按鈕,在init中實現 

                        {
                            extension::CCScale9Sprite * pBtnNormal = extension::CCScale9Sprite::create("up.png");
                            extension::CCScale9Sprite * pBtnDown = extension::CCScale9Sprite::create("up.png");
                            CCLabelTTF * pBtnCaption = CCLabelTTF::create("", "宋體", 30);
                            extension::CCControlButton * pBtn = extension::CCControlButton::create(pBtnCaption, pBtnNormal);
                            pBtn->setBackgroundSpriteForState(pBtnDown, extension::CCControlStateSelected);
                            pBtn->setPosition(GetPosition(pPlayerLayer, "UpPoint"));
                            pBtn->setAnchorPoint(CCPointZero);
                            pBtn->setPreferredSize(CCSizeMake(32, 32));
                            pBtn->setTag(100);
                            this->addChild(pBtn);

                            pBtn->addTargetWithActionForControlEvents(this,    cccontrol_selector(HelloWorld::OnTouchDown), CCControlEventTouchDown);
                            pBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::OnTouchDragEnter), CCControlEventTouchDragEnter);
                            pBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::OnTouchDragExit), CCControlEventTouchDragExit);
                            pBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::OnTouchDragInside), CCControlEventTouchDragInside);
                            pBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::OnTouchDragOutside), CCControlEventTouchDragOutside);
                            pBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::OnTouchUpInside), CCControlEventTouchUpInside);
                            pBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::OnTouchUpOutside), CCControlEventTouchUpOutside);
                            pBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::OnTouchCancel), CCControlEventTouchCancel);


                            
                        }
            需要注意的事件,不要開啟touch事件,否則會找不到。 也就是這句//CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
            具體的按鈕事件實驗結果說明:
            CCControlEventTouchDown:鼠標該處于按下并曾經點中按鈕時,則觸發一次 
            CCControlEventTouchDragEnter:當鼠標處于按下并曾經點中按鈕的狀態下,鼠標進入按鈕范圍,則觸發一次 ,也就是處于按下狀態,回到該按鈕區域
            CCControlEventTouchDragExit:當鼠標處于按下并曾經點中按鈕的狀態下,鼠標離開按鈕范圍,則觸發一次 ,也就是處于按下狀態,離開該按鈕區域
            CCControlEventTouchDragInside:當鼠標處于按下并曾經點中按鈕的狀態下,鼠標進入按鈕范圍,則觸發,每產生移動,就會觸發 ,
            CCControlEventTouchDragOutside: 當鼠標處于按下并曾經點中按鈕的狀態下,鼠標離開按鈕范圍,則觸發,每產生移動,就會觸發 
            CCControlEventTouchUpInside:當鼠標處于按下并曾經點中按鈕的狀態下,鼠標松開且在按鈕范圍內,則觸發一次,也就是處于按下狀態,并在該按鈕區域放起
            CCControlEventTouchUpOutside:當鼠標處于按下并曾經點中按鈕的狀態下,鼠標松開且在按鈕范圍外,則觸發一次 也就是處于按下狀態,但是已經離開該按鈕區域,再放起
            CCControlEventTouchCancel:暫時沒有發現能用鼠標觸發這個事件的操作
            了解后,就可以根據實際要求實現了
            posted on 2014-05-05 23:49 冬瓜 閱讀(5084) 評論(0)  編輯 收藏 引用 所屬分類: 原創cocos2dx
            久久人搡人人玩人妻精品首页| 久久天天躁狠狠躁夜夜2020老熟妇| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 热99re久久国超精品首页| 久久精品国产亚洲欧美| 国产精品狼人久久久久影院 | 亚洲国产精品一区二区久久hs | 久久久久婷婷| 无码人妻久久一区二区三区免费 | 久久综合九色综合网站| 国产成人精品久久一区二区三区| 国产精品99久久不卡| 无码专区久久综合久中文字幕 | 国产精品美女久久久久AV福利| 久久婷婷是五月综合色狠狠| 国产一区二区三区久久精品| 国产精品久久久久久久app| 91精品国产高清久久久久久91| 久久综合给久久狠狠97色| 久久久精品国产Sm最大网站| 久久亚洲欧美国产精品| 久久一本综合| 国产香蕉97碰碰久久人人| 国产精品99久久99久久久| 久久婷婷五月综合色奶水99啪| 久久免费香蕉视频| 久久午夜综合久久| 久久本道久久综合伊人| 久久久久久a亚洲欧洲aⅴ| 2021久久精品国产99国产精品| 亚洲日本va中文字幕久久| 日本亚洲色大成网站WWW久久 | 久久久久久亚洲精品不卡| 精品久久久久久久久午夜福利| 97精品国产97久久久久久免费 | 久久久久亚洲AV无码麻豆| 久久亚洲中文字幕精品一区| 久久人人爽人人爽人人片AV东京热| 国产精品欧美久久久久天天影视 | 久久亚洲AV无码精品色午夜 | 青青青国产精品国产精品久久久久|