大部分遊戲都有新手引導,而新手引導很多表現都是 其他地方壓黑,新手引導的按鈕等高亮可點。針對這種情況,用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...