cocos2dx 3.1 实现简单的翻牌效果

		//OrbitCamera 翻转(翻转时间,起始半径,半径差,起始z角,旋转z角差,起始x角,旋转x角差)
		float flipTime = 0.5f;

		//翻牌动画,显示背面,翻转90度,添加正面内容同时显示正面,翻转正面
		auto showBack = CallFuncN::create(this, callfuncN_selector(CardGame::showBack));
		auto flipBack = OrbitCamera::create(flipTime, 1, 0, 180, 105, 0, 0);//设成转90度却不是转成直角?!
		auto addFrontContent = CallFuncN::create(this, callfuncN_selector(CardGame::addContent));
		auto showFront = CallFuncN::create(this, callfuncN_selector(CardGame::showFront));
		auto flipFront = OrbitCamera::create(flipTime, 1, 0, 285, 75, 0, 0);

		//序列化这一系统action然后运行
		auto sequence = Sequence::create(showBack, flipBack, addFrontContent, showFront, flipFront, nullptr);
		sequence->setTag(kTagActionFlip);
		
		//停止所有翻转动作(可能存在)再重新开始
		option->stopActionByTag(kTagActionFlip);
		option->runAction(sequence);




//显示为背面
void CardGame::showBack(Node* pSender)
{
	auto sprite = (Sprite*)pSender;
	auto back = SpriteFrame::create("cardgame/card_back.png", Rect(0, 0, 238, 260));
	sprite->setDisplayFrame(back);
}

//显示为正面
void CardGame::showFront(Node* pSender)
{
	auto sprite = (Sprite*)pSender;
	auto front = SpriteFrame::create(String::createWithFormat("cardgame/card_front_%d.png", 
		(pSender->getTag()))->getCString(), Rect(0, 0, 238, 260));
	sprite->setDisplayFrame(front);
}

//添加正面的内容
void CardGame::addContent(Node* pSender)
{
	int i = pSender->getTag();
	auto content = Sprite::create(letterPath[cardType][cardIndex[i]]);
	content->setPosition(Vec2( pSender->getContentSize().width*0.5,pSender->getContentSize().height*0.5 ));
	pSender->addChild(content, 1, kTagCardContent + i );
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值