• CCControlExtension/CCControlButton



    #ifndef __CCCONTROL_BUTTON_H__

    #define __CCCONTROL_BUTTON_H__


    #include "CCControl.h"

    #include "CCInvocation.h"

    #include "CCScale9Sprite.h"


    NS_CC_EXT_BEGIN


    /* Define the button margin for Left/Right edge */

    #define CCControlButtonMarginLR 8 // px

    /* Define the button margin for Top/Bottom edge */

    #define CCControlButtonMarginTB 2 // px



    /**

     * @addtogroup GUI

     * @{

     * @addtogroup control_extension

     * @{

     */


    /** @class CCControlButton Button control for Cocos2D. */

    class CCControlButton : public CCControl

    {        

    public:

        CCControlButton();

        virtual ~CCControlButton();

        virtual void needsLayout(void);


        virtual void setEnabled(bool enabled);

        virtual void setSelected(bool enabled);

        virtual void setHighlighted(bool enabled);

    protected:

        // CCRGBAProtocol

        //bool m_bIsOpacityModifyRGB;


        /** The current title that is displayed on the button. */

        CC_SYNTHESIZE_READONLY(CCString*, m_currentTitle, CurrentTitle);


        /** The current color used to display the title. */

        CC_SYNTHESIZE_READONLY_PASS_BY_REF(ccColor3B, m_currentTitleColor, CurrentTitleColor);


        /** Adjust the background image. YES by default. If the property is set to NO, the 

        background will use the prefered size of the background image. */

        bool doesAdjustBackgroundImage();

        void setAdjustBackgroundImage(bool adjustBackgroundImage);

        bool m_doesAdjustBackgroundImage;


        /** The current title label. */

        CC_SYNTHESIZE_RETAIN(CCNode*, m_titleLabel, TitleLabel);


        /** The current background sprite. */

        CC_SYNTHESIZE_RETAIN(CCScale9Sprite*, m_backgroundSprite, BackgroundSprite);


        /** The prefered size of the button, if label is larger it will be expanded. */

        CC_PROPERTY(CCSize, m_preferredSize, PreferredSize);


        /** Adjust the button zooming on touchdown. Default value is YES. */

        CC_PROPERTY(bool, m_zoomOnTouchDown, ZoomOnTouchDown);


        CC_PROPERTY(CCPoint, m_labelAnchorPoint, LabelAnchorPoint);


        /* Override setter to affect a background sprite too */

        virtual GLubyte getOpacity(void);

        virtual void setOpacity(GLubyte var);

    virtual const ccColor3B& getColor(void);

    virtual void setColor(const ccColor3B&);

        

        /** Flag to know if the button is currently pushed.  */

    protected:

        bool m_isPushed;

        bool m_bParentInited;

    public:

        bool isPushed() { return m_isPushed; }


        // <CCControlState, CCString*>

        CC_SYNTHESIZE_RETAIN(CCDictionary*, m_titleDispatchTable, TitleDispatchTable);

        // <CCControlState, CCColor3bObject*>

        CC_SYNTHESIZE_RETAIN(CCDictionary*, m_titleColorDispatchTable, TitleColorDispatchTable);

        // <CCControlState, CCNode*>

        CC_SYNTHESIZE_RETAIN(CCDictionary*, m_titleLabelDispatchTable, TitleLabelDispatchTable);

        // <CCControlState, CCScale9Sprite*>

        CC_SYNTHESIZE_RETAIN(CCDictionary*, m_backgroundSpriteDispatchTable, BackgroundSpriteDispatchTable);


        /* Define the button margin for Top/Bottom edge */

        CC_SYNTHESIZE_READONLY(int, m_marginV, VerticalMargin);

        /* Define the button margin for Left/Right edge */

        CC_SYNTHESIZE_READONLY(int, m_marginH, HorizontalOrigin);

        //set the margins at once (so we only have to do one call of needsLayout)

        virtual void setMargins(int marginH, int marginV);



    public:

        virtual bool init();

        virtual bool initWithLabelAndBackgroundSprite(CCNode* label, CCScale9Sprite* backgroundSprite);

        

        static CCControlButton* create(CCNode* label, CCScale9Sprite* backgroundSprite);

        

        virtual bool initWithTitleAndFontNameAndFontSize(std::string title, const char * fontName, float fontSize);


        static CCControlButton* create(std::string title, const char * fontName, float fontSize);

        

        virtual bool initWithBackgroundSprite(CCScale9Sprite* sprite);


        static CCControlButton* create(CCScale9Sprite* sprite);

        

        //events

        virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);

        virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);

        virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);

        virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);


        /**

        * Returns the title used for a state.

        *

        * @param state The state that uses the title. Possible values are described in

        * "CCControlState".

        *

        * @return The title for the specified state.

        */

        virtual CCString* getTitleForState(CCControlState state);


        /**

        * Sets the title string to use for the specified state.

        * If a property is not specified for a state, the default is to use

        * the CCButtonStateNormal value.

        *

        * @param title The title string to use for the specified state.

        * @param state The state that uses the specified title. The values are described

        * in "CCControlState".

        */

        virtual void setTitleForState(CCString* title, CCControlState state);


        /**

        * Returns the title color used for a state.

        *

        * @param state The state that uses the specified color. The values are described

        * in "CCControlState".

        *

        * @return The color of the title for the specified state.

        */


        virtual const ccColor3B getTitleColorForState(CCControlState state);


        /**

        * Sets the color of the title to use for the specified state.

        *

        * @param color The color of the title to use for the specified state.

        * @param state The state that uses the specified color. The values are described

        * in "CCControlState".

        */

        virtual void setTitleColorForState(ccColor3B color, CCControlState state);


        /**

        * Returns the title label used for a state.

        *

        * @param state The state that uses the title label. Possible values are described

        * in "CCControlState".

        */

        virtual CCNode* getTitleLabelForState(CCControlState state);


        /**

        * Sets the title label to use for the specified state.

        * If a property is not specified for a state, the default is to use

        * the CCButtonStateNormal value.

        *

        * @param title The title label to use for the specified state.

        * @param state The state that uses the specified title. The values are described

        * in "CCControlState".

        */

        virtual void setTitleLabelForState(CCNode* label, CCControlState state);


        virtual void setTitleTTFForState(const char * fntFile, CCControlState state);

        virtual const char * getTitleTTFForState(CCControlState state);


        virtual void setTitleTTFSizeForState(float size, CCControlState state);

        virtual float getTitleTTFSizeForState(CCControlState state);


        /**

         * Sets the font of the label, changes the label to a CCLabelBMFont if neccessary.

         * @param fntFile The name of the font to change to

         * @param state The state that uses the specified fntFile. The values are described

         * in "CCControlState".

         */

        virtual void setTitleBMFontForState(const char * fntFile, CCControlState state);

        virtual const char * getTitleBMFontForState(CCControlState state);


        /**

        * Returns the background sprite used for a state.

        *

        * @param state The state that uses the background sprite. Possible values are

        * described in "CCControlState".

        */

        virtual CCScale9Sprite* getBackgroundSpriteForState(CCControlState state);


        /**

        * Sets the background sprite to use for the specified button state.

        *

        * @param sprite The background sprite to use for the specified state.

        * @param state The state that uses the specified image. The values are described

        * in "CCControlState".

        */

        virtual void setBackgroundSpriteForState(CCScale9Sprite* sprite, CCControlState state);


        /**

         * Sets the background spriteFrame to use for the specified button state.

         *

         * @param spriteFrame The background spriteFrame to use for the specified state.

         * @param state The state that uses the specified image. The values are described

         * in "CCControlState".

         */

        virtual void setBackgroundSpriteFrameForState(CCSpriteFrame * spriteFrame, CCControlState state);


        static CCControlButton* create();

    };


    // end of GUI group

    /// @}

    /// @}


    NS_CC_EXT_END


    #endif

  • 相关阅读:
    如何分析redis中的慢查询
    redis订阅关闭异常解决
    异常解决:Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
    linux下postgres的安装
    springboot tomcat配置参数列表
    如何把web.xml中的context-param、Servlet、Listener和Filter定义添加到SpringBoot中
    electron-builder 由于网络原因无法下载问题解决
    Handshake failed due to invalid Upgrade header: null 解决方案
    Linux-006-执行Shell脚本报错 $' ':command not found
    VUE-013-为elementUI 设置 tootip 宽度
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6753479.html
Copyright © 2020-2023  润新知