COCOS抽選ターンテーブル実現
5988 ワード
ヘッダファイル:
cppコード:
以上のターンテーブルの回転角度はランダムで、自分で変更できます^^;
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);
}
以上のターンテーブルの回転角度はランダムで、自分で変更できます^^;