头文件中:
class LuckyDraw :public Layer
{
public:
bool init();
void initLayer();
CREATE_FUNC(LuckyDraw);
private:
EventListenerTouchOneByOne* m_listener;
void c_Pointer1(Ref* pSender);
void onclose(Ref* pSender);
Button* Pointer1;
Sprite* TurnTable;
void Prize();
};
cpp代码:
bool LuckyDraw::init()
{
if (!Layer::init())return false;
initLayer();
return true;
}
void LuckyDraw::initLayer()
{
Size size = Director::sharedDirector()->getWinSize();
//抽奖背景
auto bg = Sprite::create("choujian/BG.png");
bg->setPosition(Vec2(size.width/2 ,size.height/2 + 50));
addChild(bg);
//抽奖转盘
TurnTable = Sprite::create("choujian/TurnTable.png");
TurnTable->setPosition(Vec2(size.width / 2, size.height / 2));
TurnTable->setScale(0.8f);
addChild(TurnTable,1);
//抽奖指针
Pointer1 = Button::create("choujian/Pointer1.png", "choujian/Pointer1.png");
Pointer1->setPosition(Vec2(size.width / 2, size.height / 2));
Pointer1->addClickEventListener(CC_CALLBACK_1(LuckyDraw::c_Pointer1, this));
Pointer1->setScale(0.8f);
this->addChild(Pointer1,1);
//关闭按钮
auto onclose = Button::create("choujian/close.png", "choujian/close.png");
onclose->addClickEventListener(CC_CALLBACK_1(LuckyDraw::onclose, this));
onclose->setPosition(Vec2(size.width / 2 + 400, size.height / 2 + 270));
this->addChild(onclose,1);
}
void LuckyDraw::c_Pointer1(Ref* pSender)
{
Pointer1->setEnabled(false);
srand(unsigned(time(NULL)));
float angleZ = rand() % 720 + 720;//旋转角度
auto pAction = EaseExponentialOut::create(RotateBy::create(5, Vec3(0, 0, angleZ)));
//抽奖转盘转动,转动结束后运行奖品页面
TurnTable->runAction(Sequence::create(pAction, CallFunc::create(CC_CALLBACK_0(LuckyDraw::Prize, this)),NULL));
}
//奖品页面
void LuckyDraw::Prize()
{
log("Prize is running");
}
void LuckyDraw::onclose(Ref* pSender)
{
removeAllChildren();
_eventDispatcher->removeEventListener(m_listener);
}
以上的转盘转的角度是随机的,可以自行更改^_^