• <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 冬瓜 閱讀(5078) 評論(0)  編輯 收藏 引用 所屬分類: 原創cocos2dx
            热re99久久精品国产99热| 亚洲欧美国产精品专区久久| 人妻少妇久久中文字幕一区二区| 亚洲国产视频久久| 麻豆av久久av盛宴av| 久久亚洲AV成人无码国产| 久久午夜无码鲁丝片| 国产精品久久波多野结衣| 久久精品国产一区二区三区不卡| 亚洲Av无码国产情品久久| 蜜臀av性久久久久蜜臀aⅴ麻豆| 99久久99久久精品免费看蜜桃| 久久九九全国免费| 久久精品国产亚洲AV忘忧草18| 久久精品国产亚洲AV香蕉| 久久线看观看精品香蕉国产| 99久久免费国产精品特黄| 精品久久久久久久久午夜福利| 国产精品无码久久综合网| 久久久精品国产免大香伊| 97精品国产97久久久久久免费| 亚洲精品国产综合久久一线| 热久久国产精品| 亚洲国产欧洲综合997久久| 久久久精品日本一区二区三区| 亚洲国产精品一区二区久久hs| 超级碰久久免费公开视频| 色综合久久久久久久久五月| 久久国产精品国语对白| 国产美女久久久| 国产亚洲美女精品久久久2020| 久久免费国产精品| 色综合久久久久| 久久国产成人精品麻豆| 欧美伊人久久大香线蕉综合 | 无夜精品久久久久久| 国产精品久久波多野结衣| 亚洲AV乱码久久精品蜜桃| 国产精品成人久久久久三级午夜电影 | 久久精品国产亚洲AV久| 中文字幕无码久久久|