cocos2dx實現(xiàn)刮獎效果
本文實例為大家分享了cocos2dx刮獎效果實現(xiàn)代碼,供大家參考,具體內(nèi)容如下
刮獎效果其實挺簡單的,需要用到RenderTexture來進行渲染,通過你所要渲染的圖層,把該層的顏色進行設(shè)置混合就可以達到效果,具體看代碼,我用的lua實現(xiàn)的。
local winsize = cc.Director:sharedDirector():getWinSize();
local dataSprite = cc.Sprite:create("Star.png")--要把這個圖片刮出來
dataSprite:setAnchorPoint(cc.p(0.5, 0.5));
dataSprite:move(winsize.width / 2.0, winsize.height / 2.0);
self:addChild(dataSprite)
pEarse = cc.DrawNode:create()
pEarse:drawDot(cc.p(0, 0), 5, cc.c4f(1, 0, 0, 1));
pEarse:retain()
pRTex = cc.RenderTexture:create(winsize.width, winsize.height);
pRTex:setPosition(cc.p(winsize.width / 2, winsize.height / 2));
--this:addChild(pRTex);
pRTex:retain()
local pBg = cc.Sprite:create("d1.png");--這個作為當“油漆層”
pBg:setAnchorPoint(cc.p(0.5, 0.5));
pBg:move(winsize.width / 2.0, winsize.height / 2.0);
pRTex:begin();
dataSprite:visit();
pBg:visit();
pRTex:endToLua();
local layer=cc.Layer:create()
self:addChild(layer, 1000)
layer:addChild(pRTex);
layer:setNodeTouch(handler(self, self.onTouchStart))
鼠標移動代碼:
function shop.erasure(event)
-- body
print("erasure: ", event.name)
--todo
print("moved")
local touchPoint = event.pos
pEarse:setPosition(event.pos.x, event.pos.y);
-- 設(shè)置混合模式
local blendFunc = { GL_ONE, GL_ZERO };
pEarse:setBlendFunc(blendFunc);
-- 將橡皮擦的像素渲染到畫布上,與原來的像素進行混合
pRTex:begin();
pEarse:visit();
pRTex:endToLua();
end
C++代碼:
void function()
{
//test code
auto aPanelSprite = Sprite::create("potentiometerTrack.png");
aPanelSprite->setPosition(Vec2(s.width / 2, s.height / 2));
this->addChild(aPanelSprite);
pEase = DrawNode::create();
pEase->retain();
pEase->drawDot(Point(0, 0), 4.0f, Color4F(255, 0, 0, 255));
pRender = RenderTexture::create(s.width, s.height);
pRender->retain();
pRender->setPosition(Vec2(s.width / 2, s.height / 2));
this->addChild(pRender); //渲染紋理層需加入該父節(jié)點層
auto pBg = Sprite::create("potentiometerProgress.png"); //這個作為當“油漆層”
pBg->setAnchorPoint(Point(0.5, 0.5));
pBg->setPosition(Vec2(s.width / 2, s.height / 2));
pRender->begin();
aPanelSprite->visit();
pBg->visit();
pRender->end();
auto listener = EventListenerTouchOneByOne::create();
listener->setSwallowTouches(true);
listener->onTouchBegan = CC_CALLBACK_2(SpriteEaseBezier::onTouchBegan, this);
listener->onTouchMoved = CC_CALLBACK_2(SpriteEaseBezier::onTouchMoved, this);
auto _eventDispatcher = CCDirector::getInstance()->getEventDispatcher();
_eventDispatcher->addEventListenerWithFixedPriority(listener, -10);
}
bool SpriteEaseBezier::onTouchBegan(Touch *touch, Event *unused_event)
{
CCLOG("SpriteEaseBezier::onTouchBegan");
return true;
}
void SpriteEaseBezier::onTouchMoved(Touch *touch, Event *unused_event)
{
auto touchPoint = touch->getLocation();
pEase->setPosition(touchPoint.x, touchPoint.y);
BlendFunc blendFunc = { GL_ONE, GL_ZERO };
pEase->setBlendFunc(blendFunc);
pRender->begin();
pEase->visit();
pRender->end();
CCLOG("SpriteEaseBezier::onTouchMoved");
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:C++關(guān)于Makefile的詳解含通用模板
欄 目:C語言
下一篇:關(guān)于C++內(nèi)部類的介紹與使用示例
本文標題:cocos2dx實現(xiàn)刮獎效果
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/587.html
您可能感興趣的文章
- 01-10數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-用棧實現(xiàn)表達式求值的方法詳解
- 01-10使用OpenGL實現(xiàn)3D立體顯示的程序代碼
- 01-10求斐波那契(Fibonacci)數(shù)列通項的七種實現(xiàn)方法
- 01-10C語言 解決不用+、-、×、÷數(shù)字運算符做加法
- 01-10使用C++實現(xiàn)全排列算法的方法詳解
- 01-10用C++實現(xiàn)DBSCAN聚類算法
- 01-10深入全排列算法及其實現(xiàn)方法
- 01-10全排列算法的非遞歸實現(xiàn)與遞歸實現(xiàn)的方法(C++)
- 01-10用C語言實現(xiàn)單鏈表的各種操作(一)
- 01-10用C語言實現(xiàn)單鏈表的各種操作(二)


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10C#中split用法實例總結(jié)


