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;
}