欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Cocos2d實現(xiàn)刮刮卡效果

 更新時間:2018年12月20日 14:15:18   作者:Schrodinger123  
這篇文章主要為大家詳細(xì)介紹了Cocos2d實現(xiàn)刮刮卡效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Cocos2d實現(xiàn)刮刮卡效果展示的具體代碼,供大家參考,具體內(nèi)容如下

本文代碼適用于Cocos2d-x Quick-Community3.6

local TestScene = class("TestScene", function()
 return display.newScene("TestScene")
end)

function TestScene:ctor()
 
end

function TestScene:onEnter()
 self:initUI()
end

function TestScene:initUI()
 --刮刮卡底層容器
 local scratchLayer = display.newLayer()
 scratchLayer:setContentSize(self:getBoundingBox())
 self:addChild(scratchLayer)

 scratchLayer:setTouchEnabled(true)
 scratchLayer:setTouchMode(cc.TOUCH_MODE_ONE_BY_ONE)

 --創(chuàng)建RenderTexture
 local scratch = cc.RenderTexture:create(scratchLayer:getBoundingBox().width,scratchLayer:getBoundingBox().height)
 scratch:setPosition(scratchLayer:getBoundingBox().width/2,scratchLayer:getBoundingBox().height/2)
 scratch:retain()

 --需要被掛掉的精靈 本文以純白背景代替
 local bg = cc.Sprite:createWithTexture(nil, cc.rect(0,0 , scratchLayer:getBoundingBox().width,scratchLayer:getBoundingBox().height))
 bg:setColor(cc.c3b(255,255,255))
 bg:setPosition(scratchLayer:getBoundingBox().width/2,scratchLayer:getBoundingBox().height/2)

 --渲染
 scratch:begin()
 bg:visit()
 scratch:endToLua()

 scratchLayer:addChild(scratch)

 --利用DrawNode創(chuàng)建模擬的刮除媒介
 local eraser = cc.DrawNode:create()
 --刮除媒介是個圓 半徑為20 具體可自行定義
 local r = 20

 eraser:drawSolidCircle(cc.p(0,0),
 r,
 0,
 r,
 1,
 1,
 cc.c4f(0,0,0,0)
 )

 eraser:retain()

 --開始添加觸摸事件
 scratchLayer:addNodeEventListener(cc.NODE_TOUCH_EVENT, function (event)
 --首先把點擊區(qū)域刮除
 eraser:setPosition(event.x,event.y)

 eraser:setBlendFunc(gl.ONE,gl.ZERO)

 scratch:begin()
 eraser:visit()

 --[[
  重點:因為點擊事件回調(diào)次數(shù)限制,如果沒有下面處理,
  當(dāng)我們快速在屏幕上滑動的時候調(diào)用次數(shù)不夠,會產(chǎn)生一個一個刮除點
  而中間并沒有刮除。
  以下代碼為刮除兩次移動中間矩形區(qū)域
 ]]
 local isEnded = false
 if event.name ~= "began" then
  if eraser.lastPos then
  --矩形寬高
  local width = self:getP2PDis(event, eraser.lastPos)
  local height = 2*r
  --矩形中點
  local midPos = cc.p((event.x+eraser.lastPos.x)/2,(event.y+eraser.lastPos.y)/2)
  --旋轉(zhuǎn)角度
  local rotate = self:getP2PAngle(eraser.lastPos, event)

  --矩形刮除媒介
  local polygonEraser = cc.DrawNode:create()
  local points = {
   cc.p(-width/2,-height/2),
   cc.p(-width/2,height/2),
   cc.p(width/2,height/2),
   cc.p(width/2,-height/2)
  }
  polygonEraser:drawPolygon(points, {
   fillColor = cc.c4f(0, 0, 0, 0),
   borderWidth = 1,
   borderColor = cc.c4f(0, 0, 0, 0),
  })

  --刮除矩形區(qū)域
  polygonEraser:setRotation(-rotate)

  polygonEraser:setPosition(midPos)

  polygonEraser:setBlendFunc(gl.ONE,gl.ZERO)

  polygonEraser:visit()
  scratch:endToLua()
  isEnded = true
  end
 end

 if not isEnded then
  scratch:endToLua()
 end

 eraser.lastPos = cc.p(event.x,event.y)

 if event.name == "ended" then
  eraser.lastPos = nil
 end

 return true
 end)
end

--兩點間距
function TestScene:getP2PDis(p1,p2)
 local x = p1.x - p2.x
  local y = p1.y - p2.y
  return math.abs(math.sqrt(math.pow(x,2)+math.pow(y,2)))
end

--兩點連接線傾斜角度
function TestScene:getP2PAngle(p1,p2)
  local x = p1.x - p2.x
  local y = p1.y - p2.y
  return 180 * (math.atan2(y, x) / math.pi)
end

return TestScene

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 用JS實現(xiàn)圖片輪播效果代碼(一)

    用JS實現(xiàn)圖片輪播效果代碼(一)

    這篇文章主要介紹了用JS實現(xiàn)圖片輪播效果代碼(一)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • Js中的FileReader相關(guān)操作方法總結(jié)

    Js中的FileReader相關(guān)操作方法總結(jié)

    FileReader是前端進(jìn)行文件處理的一個重要的API,特別是在對圖片的處理上,這篇文章主要給大家介紹了關(guān)于Js中FileReader相關(guān)操作方法的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • 微信小程序?qū)崿F(xiàn)預(yù)覽圖片功能

    微信小程序?qū)崿F(xiàn)預(yù)覽圖片功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)預(yù)覽圖片功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 完美解決IE不支持Data.parse()的問題

    完美解決IE不支持Data.parse()的問題

    下面小編就為大家?guī)硪黄昝澜鉀QIE不支持Data.parse()的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起 小編過來看看吧
    2016-11-11
  • Javascript 實現(xiàn)廣告后加載 可加載百度谷歌聯(lián)盟廣告

    Javascript 實現(xiàn)廣告后加載 可加載百度谷歌聯(lián)盟廣告

    本文主要介紹一種新的廣告后加載的方式,支持自定義HTML廣告、百度聯(lián)盟廣告和谷歌聯(lián)盟廣告。這種方式在頁面加載完成后執(zhí)行,不影響內(nèi)容的顯示,對用戶更加友好。
    2016-05-05
  • js實現(xiàn)簡單的倒計時

    js實現(xiàn)簡單的倒計時

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)簡單的倒計時,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • 用ASP將SQL搜索出來的內(nèi)容導(dǎo)出為TXT的代碼

    用ASP將SQL搜索出來的內(nèi)容導(dǎo)出為TXT的代碼

    用ASP將SQL搜索出來的內(nèi)容導(dǎo)出為TXT的代碼...
    2007-07-07
  • JavaScript中九種常用排序算法

    JavaScript中九種常用排序算法

    不同的排序算法,執(zhí)行效率有著天壤之別,本腳本用JavaScript演示了各種常見的排序算法,包括:冒泡排序、選擇排序、插入排序、謝爾排序、快速排序(遞歸)、快速排序(堆棧)、歸并排序、堆排序
    2014-09-09
  • 舉例講解JavaScript substring()的使用方法

    舉例講解JavaScript substring()的使用方法

    這篇文章主要通過舉例的方法講解了javaScript substring()的用法,substring() 方法用于提取字符串中介于兩個指定下標(biāo)之間的字符,感興趣的小伙伴們可以參考一下
    2015-11-11
  • JavaScript中數(shù)字轉(zhuǎn)字符串的6種方式以及性能比較

    JavaScript中數(shù)字轉(zhuǎn)字符串的6種方式以及性能比較

    在JavaScript中將字符串轉(zhuǎn)換為數(shù)字有多種方法,下面這篇文章主要給大家介紹了關(guān)于JavaScript中數(shù)字轉(zhuǎn)字符串的6種方式以及性能比較的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04

最新評論