卡牌翻牌效果

2022-03-11 22:19:19 字數 3778 閱讀 8247

經過測試,利用cocos2dx引擎自帶的setscalex和setflippedx即可實現,效果比較好。

詳細**如下:

//

// ccardnode.h

// slotsbase

//// created by xujw on 16/5/27.

//// 卡牌類,實現類似撲克翻牌效果,預設翻牌時間為0.5s,建議時間為0.3-1.0f

#ifndef ccardnode_h

#define ccardnode_h

#include

#include "cocos2d.h"

using_ns_cc;

#define skew_degree 10

class ccardnode:public node

ecardstate;

typedef

struct cdata

;cdata(){}

}carddata;

public:

ccardnode();

~ccardnode();

/*** 建立一張卡牌

** @param frontspfile 正面資源

* @param backspfile 反面資源

* @param state 顯示牌面 預設顯示背面

** @return 卡牌

*/static ccardnode* createcard(const

std::string &frontspfile,const

std::string &backspfile,ecardstate state=kcardback);

static ccardnode* createcard(const

std::string &frontspfile,const

std::string &backspfile,ecardstate state,carddata data);

bool init(const

std::string &frontspfile,const

std::string &backspfile,ecardstate state);

/*** 翻轉卡牌

*/void turncard();

void turncard(float t);

void turncard(std::function callback,float turntime=1.0f);

inline

void settruncallback(std::function callback);

inline

void setturntime(float t);

inline

void setcarddata(carddata data);

inline carddata getcarddata() const;

inline ecardstate getcardstata() const ;

private:

sprite *_frontsp;

sprite *_backsp;

float _turntime;

ecardstate _cardstate;

std::function _callback;

bool _isact;

carddata _carddata;

};#endif /* ccardnode_h */

//// ccardnode.cpp

// slotsbase

//// created by xujw on 16/5/27.

////

#include "ccardnode.h"

ccardnode::ccardnode()

:_frontsp(nullptr)

,_backsp(nullptr)

,_turntime(0.5f)

,_callback(nullptr)

,_isact(false)

,_cardstate(kcardback)

,_carddata("",-1,-1.0f)

{}ccardnode::~ccardnode()

ccardnode* ccardnode::createcard(const

std::string &frontspfile, const

std::string &backspfile, ecardstate state, carddata data)

ccardnode* ccardnode::createcard(const

std::string &frontspfile, const

std::string &backspfile,ecardstate state)

cc_safe_delete(card);

return

nullptr;

}bool ccardnode::init(const

std::string &frontspfile, const

std::string &backspfile,ecardstate state)

_cardstate = state;

_frontsp = sprite::create(frontspfile);

this->addchild(_frontsp);

_backsp = sprite::create(backspfile);

this->addchild(_backsp);

bool disfront = _cardstate==kcardfront?true:false;

_frontsp->setvisible(disfront);

_backsp->setvisible(!disfront);

//mark:設定node大小和錨點,方便計算是否點選到牌面

this->setcontentsize(_backsp->getcontentsize());

this->setanchorpoint(vec2::anchor_middle);

_frontsp->setposition(this->getcontentsize()/2);

_backsp->setposition(_frontsp->getposition());

return

true;

}void ccardnode::turncard()

void ccardnode::turncard(float t)

void ccardnode::turncard(std::function callback,float t)

_isact = true;

setturntime(t);

//mark:為了每次翻牌都從右向左翻牌

if (-1 == _frontsp->getscalex())

if (-1 == _backsp->getscalex())

if (_cardstate == kcardfront)

}), null);

_backsp->runaction(secondseq);

}), null);

_frontsp->runaction(firstseq);

}else

}), null);

_frontsp->runaction(secondseq);

}), null);

_backsp->runaction(firstseq);

}}

css卡牌翻轉效果

卡牌翻轉的步驟 1.最外層wrap設定檢視距離perspective 800px 相對定位position relative 2.父級 box設定轉換為3d效果transform style preserve 3d 3.旋轉元素設定 背景不透視 backface visibility hidden ...

UGUI卡牌翻轉效果

之前看到網上有個ngui的卡牌翻轉效果,試了一下還可以,但是沒有ugui的,所以就做了ugui的。這是那個前輩的部落格位址,想看的可以看一下 介面設定 兩個放在一起 重疊 乙個正面乙個反面。再建立乙個按鈕。下面只是基本功能,如果有特殊的要求,就自己融匯變通一下。下面步入正題看 private qua...

untiy實現翻牌效果

untiy實現翻牌效果 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識 全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣式,markdown將 片顯示選擇的高亮...