quick x 新手引導

2022-09-11 16:33:40 字數 3277 閱讀 6746

大部分遊戲都有新手引導,而新手引導很多表現都是 其他地方壓黑,新手引導的按鈕等高亮可點。針對這種情況,用clippingnode寫了乙個簡單方便的遮罩層。

1

--[[

2touchrect:

31. ccrect 高亮區域

42.

9cantouch: 高亮區域是否可點選

10callback: 點選遮罩後的**(比如點選後進行下乙個引導)

11]]

12function

g_createguidelayer(touchrect, cantouch, callback)

13local highlightnode = nil

14if

type(touchrect) == "

table

"then

--15 highlightnode =display.newsprite(touchrect.imagepath)

16highlightnode:setposition(touchrect.imagepos)

17 highlightnode:setscale(touchrect.scale or1)

18 highlightnode:setrotation(touchrect.rotation or0)

19else

--ccrect 目前是矩形,可相應換成橢圓或固定

20local midx =touchrect:getmidx()

21local midy =touchrect:getmidy()

22 highlightnode = ccsprite:createwithtexture(nil

, touchrect)

23highlightnode:setposition(midx, midy)

24end

2526

local layer =display.newlayer()

2728

--壓黑

29local layercolor = cclayercolor:create(ccc4(0, 0, 0, 200

), display.width, display.height)

3031

--高亮

32local clipnode =ccclippingnode:create()

33 clipnode:setinverted(true)34

clipnode:addchild(layercolor)

35local stencilnode =ccnode:create()

36stencilnode:addchild(node)

37stencilnode:addchild(highlightnode)

38clipnode:setstencil(stencilnode)

39 clipnode:setalphathreshold(0)40

41layer:addchild(clipnode)

4243 layer:settouchenabled(true

)44 layer:registerscripttouchhandler(function

( eventtype,x,y )

45local point =highlightnode:getparent():converttonodespace(ccp(x, y))

46if eventtype == "

began

"then

47if layer:isvisible() == false

then

48return

false

49end

50if cantouch == false

then

51return

true

52--

可點並且在高亮區域時不吞噬觸控,這樣高亮區域的按鈕就可以響應

53elseif highlightnode:getboundingbox():containspoint(point) then

54return

false

55else

56return

true

57end

58elseif eventtype == "

ended

"then

59if cantouch == false

then

60if callback then

61callback()

62end

63end

64end

65end, false, -10000, true)66

67return

layer

68end

有幾種常用的用法:

local button =display.newsprite(imagepath)

:addto(self)

button:settouchenable(

true

)button:registerscripttouchhandler( .... )

1.  按鈕區域矩形高亮,點選螢幕任何一處移除遮罩,點選高亮區域按鈕不響應

local rect =button:boundingbox()

local layer = g_createguidelayer(rect, false, function

() layer:removefromparentandcleanup(

true

)end)

2. 按鈕高亮(高亮區域跟按鈕一模一樣),點選螢幕任何一處移除遮罩,點選高亮區域按鈕不響應

local tab =

local layer = g_createguidelayer(rect, false, function()

layer:removefromparentandcleanup(true)

end)

3. 按鈕高亮(高亮區域跟按鈕一模一樣),點選高亮區域按鈕響應,非高亮區域沒反應

local tab =

local layer = g_createguidelayer(rect, true, function

() layer:removefromparentandcleanup(

true

)end)

融雲新手引導

獲取 token 通過 api 除錯,您可以得到乙個 token 返回值。您就可以直接使用這個 token 為這位使用者進行傳送和接受訊息。名詞功能介紹 支援的 cpu 架構 imkit 融雲 im 介面元件 imlib 融雲 im 通訊能力庫 armeabi,armeabi v7a,arm64 v...

DataWorks新手引導 持續更新

a dataworks還未採用這種授權方式哈!dataworks給子賬號使用的流程是 主賬號建立專案 主賬號新建子賬號 將子賬號加入專案並賦予角色 子賬號登入及更新個人資訊 注 主賬號新建子賬號時,建立ak這一步的時候,ak一定要儲存好,不然子賬號在更新個人資訊的時候,還需要主賬號重新去建立一次ak...

Unity Shader實現新手引導遮罩鏤空效果

這兩天實現了下新手引導需要的遮罩鏤空shader效果,記錄一下。1 圓形鏤空shader 計算片元世界座標和目標中心位置的距離 float dis distance in.worldposition.xy,center.xy 過濾掉距離小於 半徑 過渡範圍 的片元 clip dis radius t...