cocos2d-x 3.3 之卡牌设计 NO.2 卡牌翻转

cocos2d-x 3.3 之卡牌设计 NO.2 卡牌翻转,第1张

概述    上一篇文章讲了如何选取卡牌,这次说说怎么实现卡牌翻转的效果。     假设我们已经点击了一张卡牌,并用指针Open_sel指向了这张卡牌,那么现在我们需要将这张卡牌翻转过来变成正面,效果如下(图片素材均来自网络,自己经过了处理):     这个翻转效果借鉴了网上大神的代码,首先看看类的内容: class OpenCard : public Sprite{public: Open

上一篇文章讲了如何选取卡牌,这次说说怎么实现卡牌翻转的效果。

假设我们已经点击了一张卡牌,并用指针Open_sel指向了这张卡牌,那么现在我们需要将这张卡牌翻转过来变成正面,效果如下(图片素材均来自网络,自己经过了处理):


这个翻转效果借鉴了网上大神的代码,首先看看类的内容:

class OpenCard : public Sprite{public:    OpenCard();    ~OpenCard();    static OpenCard* create(int loc_num,int num);    virtual bool init(int loc_num,int num);	voID card_init_pic(int num);//加载资源	voID card_init_action();//加载动画	voID card_set_openCard();//打开卡牌	voID card_set_closeCard();//关闭卡牌//数据    ActionInterval* m_openAnimIn;//打开牌的背面    ActionInterval* m_openAnimOut;//打开牌的正面    ActionInterval* m_closeAnimIn;//关闭牌的背面    ActionInterval* m_closeAnimOut;//关闭牌的正面};
这是类中卡牌翻转需要的内容,ActionInterval是cocos2dx中的一种延时性动作,与 ActionInstant(瞬时动作)相对

一、创建

首先我们需要创建卡牌精灵,有两个传入参数,一个是位置编号,一个是卡牌编号,这里不做讨论。

创建的时候调用card_init_pic和card_init_action两个加载函数,我们来看看两个加载函数:

</pre></p><p><span ></span><pre name="code" ><pre name="code" >voID OpenCard::card_init_pic(int num){    Point point;    point=card_set_locate();    //创建正面卡牌    Sprite* inCard = Sprite::create("card_face.png");    inCard->setposition(point);    inCard->setVisible(false);//刚创建的时候正面卡牌不可见,只显示背面卡牌    inCard->setTag(card_num_second);    addChild(inCard);	//创建背面卡牌    Sprite* outCard = Sprite::create("card_back.png");    outCard->setposition(point);    outCard->setTag(card_num);    addChild(outCard);}
 
voID OpenCard::card_init_action(){    //打开牌    m_openAnimIn = (ActionInterval*)Sequence::create(DelayTime::create(kRoundTime),//kRoudTime是翻转时间,正面卡牌得等背面卡牌翻转90度之后才能显示                                                         Show::create(),//显示                                                         OrbitCamera::create(kRoundTime,1,kInAngleZ,kInDeltaZ,0),//翻转                                                         NulL);    m_openAnimIn->retain();//引用计数加一,必须加这句话,不然当你需要调用动画的时候它早就被系统释放了    m_openAnimOut = (ActionInterval *)Sequence::create(OrbitCamera::create(kRoundTime,kOutAngleZ,kOutDeltaZ,//翻转                                                           HIDe::create(),DelayTime::create(kRoundTime),NulL);    m_openAnimOut->retain();	//关闭牌	m_closeAnimIn = (ActionInterval*)Sequence::create(DelayTime::create(kRoundTime),Show::create(),OrbitCamera::create(kRoundTime,NulL);    m_closeAnimIn->retain();         m_closeAnimOut = (ActionInterval *)Sequence::create(OrbitCamera::create(kRoundTime,HIDe::create(),NulL);    m_closeAnimOut->retain();}
好了,以上就是加载函数了,接下来我们就需要写一个播放动画的函数:

voID OpenCard::card_set_openCard(){    Sprite* inCard = (Sprite*)getChildByTag(card_num_second);    Sprite* outCard = (Sprite*)getChildByTag(card_num);    inCard->runAction(m_openAnimIn);    outCard->runAction(m_openAnimOut);}
在成功选取卡牌后,只需Open_sel->card_set_openCard();一句就能翻转卡牌了 总结

以上是内存溢出为你收集整理的cocos2d-x 3.3 之卡牌设计 NO.2 卡牌翻转全部内容,希望文章能够帮你解决cocos2d-x 3.3 之卡牌设计 NO.2 卡牌翻转所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1058189.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存