• <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
            久久精品国产亚洲AV不卡| 青草影院天堂男人久久| 国产精品热久久无码av| 久久天天躁夜夜躁狠狠| 看全色黄大色大片免费久久久| 久久成人精品| 人人狠狠综合久久亚洲| 久久婷婷是五月综合色狠狠| 亚洲国产成人久久综合区| 久久午夜无码鲁丝片午夜精品| 久久免费视频网站| 狠狠色婷婷综合天天久久丁香| 精品免费久久久久久久| 国产精品伊人久久伊人电影| 人妻精品久久久久中文字幕| 一本一本久久aa综合精品| 久久综合九色综合网站| 亚洲精品国产成人99久久| 亚洲国产成人精品91久久久 | 99国产欧美久久久精品蜜芽| www.久久热.com| 久久亚洲中文字幕精品一区四| 亚洲精品乱码久久久久久按摩| 久久精品国产久精国产| 午夜人妻久久久久久久久| 99热精品久久只有精品| 久久中文字幕人妻丝袜| 国产成人综合久久综合| 国产亚洲精品久久久久秋霞 | 思思久久99热只有频精品66| www.久久热.com| 久久99国产精品尤物| 18岁日韩内射颜射午夜久久成人| 久久精品国产亚洲一区二区三区| 久久AV高清无码| 97久久精品无码一区二区天美| 亚洲人成网亚洲欧洲无码久久| 欧美久久久久久精选9999| 久久久久久毛片免费看| 精品国产综合区久久久久久| 99久久伊人精品综合观看|