COCOS抽選ターンテーブル実現

5988 ワード

ヘッダファイル:
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);
}

以上のターンテーブルの回転角度はランダムで、自分で変更できます^^;