COCOS抽奖转盘实现

头文件中:

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

以上的转盘转的角度是随机的,可以自行更改^_^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值