1. 程式人生 > >Cocos2d-x3.3Final(3) Button常用成員函式(C++)

Cocos2d-x3.3Final(3) Button常用成員函式(C++)

Button * button = Button::create("cocosui/animationbuttonnormal.png");//新建按鈕

 Button* button = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png"); //新建按鈕

button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest::touchEvent, this));//設定按鈕的觸控事件和作用目標(繼承自Widget)

button->setZoomScale(0.4f);

//3.3新增函式,按鈕點選後會變大為原來的係數1+這裡的係數0.4,

//可搭配Slider配合使用,slider->getPercent()

//float zoomScale = percent * 0.01;

//btn->setZoomScale(zoomScale);

button->setPressedActionEnabled(true); //設定按鈕是否啟用點選縮放的效果

button->setOpacity(100);//繼承自node,設定node透明度,0完全透明,100完全不透明

button->loadTextureNormal("cocosui/animationbuttonnormal.png");//載入正常情況下的填充圖

btn->loadTexturePressed("cocosui/animationbuttonpressed.png");//載入按下按鈕情況下的填充圖

button->setScale9Enabled(true);//是否啟用九宮格顯示模式

button->setContentSize(Size(150, 70));//設定按鈕的大小(繼承自Node)

button->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f));//設定按鈕的位置(繼承自Node)

button->runAction(Sequence::create(FadeIn::create(0.5),DelayTime::create(1.0),FadeOut::create(0.5), nullptr));//執行一個動作或動作序列(繼承自Node)

Touch事件處理函式的四種Touch狀態:

Widget::TouchEventType::ENDED:

Widget::TouchEventType::CANCELED:

Widget::TouchEventType::MOVED:

Widget::TouchEventType::BEGAN:

button2->setName("normal");//設定名字

button->setColor(Color3B::GREEN);//設定按鈕的顏色

button2->setPosition(button->getPosition() + Vec2(100,0));//(設定位置引數可以這樣使用相加)

btn2->setAnchorPoint(Vec2(0,0.5));//設定錨點

button->setTitleText("Title Button!");//設定按鈕的標題

button->setTitleColor(Color3B::YELLOW);//標題顏色

button->setFlippedX(true);//設定按鈕在X方向上翻轉

auto label = button->getTitleRenderer();  //按鈕的標題渲染器是一個label

 button->runAction(RepeatForever::create(Sequence::create(ScaleTo::create(1.0f, 1.2f),
                                                                 ScaleTo::create(1.0f, 1.0f),nullptr)));//按鈕一直重複膨脹1.2倍和回覆原狀的動作

{//點選刪除自己

Layout *layout = Layout::create();
        layout->setContentSize(widgetSize * 0.6f);
        layout->setBackGroundColor(Color3B::GREEN);
        layout->setBackGroundColorType(Layout::BackGroundColorType::SOLID);
        layout->setBackGroundColorOpacity(100);
        layout->setPosition(Size(widgetSize.width/2, widgetSize.height/2));
        layout->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
        layout->setTag(12);
        _uiLayer->addChild(layout);

Button* button = Button::create("cocosui/animationbuttonnormal.png",
                                        "cocosui/animationbuttonpressed.png");
        button->setPosition(Vec2(layout->getContentSize().width / 2.0f, layout->getContentSize().height / 2.0f));
        //        button->addTouchEventListener(this, toucheventselector(UIButtonTest::touchEvent));
        button->addTouchEventListener(CC_CALLBACK_2(UIButtonTestRemoveSelf::touchEvent, this));
        layout->addChild(button);

 auto layout = _uiLayer->getChildByTag(12);
         layout->removeFromParentAndCleanup(true);
//刪除自己刪除自己,注意按鈕是放在Layout中

}

button->ignoreContentAdaptWithSize(false); //繼承自Widget,設定引數為true,setContentSize失效,大小等於函式getVirtualRendererSize的返回值

{//設定按鈕標題的效果

Label *title = button->getTitleRenderer();
        title->enableShadow(Color4B::BLACK,Size(2,-2));
//陰影

title2->enableOutline(Color4B::GREEN, 3);//It only works on IOS and Android when you use System fonts

}

button2->setNormalizedPosition(Vec2(0.8f, 0.5f));//等價

 void setNormalizedPosition(Vec2 pos) {
       Size s = getParent()->getContentSize();
       _position = pos * s;
     }