經過測試,利用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將 片顯示選擇的高亮...