• <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
            .精品久久久麻豆国产精品| 漂亮人妻被黑人久久精品| 伊人久久大香线焦综合四虎| 久久亚洲国产欧洲精品一| 成人精品一区二区久久久| 欧美亚洲国产精品久久| 久久久精品2019免费观看| 色综合色天天久久婷婷基地| 亚洲国产视频久久| 久久久精品国产sm调教网站| 国产精品九九久久精品女同亚洲欧美日韩综合区| 久久久久久久亚洲精品| 人妻无码αv中文字幕久久| 国产亚洲美女精品久久久| 久久久无码精品亚洲日韩蜜臀浪潮| 久久精品国产一区二区三区不卡 | 无码国内精品久久人妻| 久久免费线看线看| 久久精品国产亚洲AV香蕉| 香港aa三级久久三级老师2021国产三级精品三级在 | 久久人人爽人人人人爽AV| 国产精品日韩深夜福利久久| 亚洲伊人久久大香线蕉综合图片| 久久精品18| 99热精品久久只有精品| 99久久国产热无码精品免费| 久久久久久久久久久精品尤物| 国产成人无码精品久久久久免费 | 中文成人无码精品久久久不卡| 91久久精一区二区三区大全| 久久久久人妻一区二区三区 | 国产精品久久久久蜜芽| 久久午夜无码鲁丝片午夜精品| 国产午夜精品理论片久久| 97久久香蕉国产线看观看| 色综合久久综合中文综合网| 亚洲精品无码久久久影院相关影片| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区| 99久久精品这里只有精品| 狠狠色丁香婷婷综合久久来来去| 久久成人精品视频|