cocos2dx 3 x 蒙板 遮罩 點選圓功能

2021-08-20 11:22:26 字數 1945 閱讀 4920

//註冊觸控

eventlistenertouchonebyone *listener = eventlistenertouchonebyone::create();

listener->ontouchbegan = cc_callback_2(helloworld::ontouchbegan,this);

listener->ontouchmoved = cc_callback_2(helloworld::ontouchmoved,this);

listener->ontouchended = cc_callback_2(helloworld::ontouchended,this);

listener->setswallowtouches(true);

_eventdispatcher->addeventlistenerwithscenegraphpriority(listener, this);

//建立乙個遮罩

layercolor *m_plyaercolor = layercolor::create(ccc4(0, 0, 0, 110));

//建立剪裁節點

clippingnode *pclip = clippingnode::create();

pclip->setinverted(true);//是否反向,true 圓是透明,其他是黑, false 圓是黑,其他透明

addchild(pclip);

//將遮罩新增到裁剪節點上

pclip->addchild(m_plyaercolor);

//繪製圓區域

//設定引數

cccolor4f red = ccc4f(1, 0, 0, 1);

float radius = 55.0f;//圓的半徑

const int pcount = 200;//頂點數,將圓看成是200邊型

float angel = 2.0f * (float)m_pi / pcount;//兩個頂點與中心的夾角(弧度)

point m_vpoint[pcount];

for (int i = 0; i < pcount; i++)

//繪製多邊形

//注意不要將pstencil addchild

drawnode *pstencil = drawnode::create();

pstencil->drawpolygon(m_vpoint, pcount, red, 0, red);//繪製這個多邊型

pstencil->setposition(vec2(visiblesize.width /2 , visiblesize.height /2));

//將這個圓形從裁剪節點上面摳出來, stencil是模版的意思

pclip->setstencil(pstencil);

bool helloworld::ontouchbegan(touch *touch, event *event)

log("meiyou");

return false;

}

local stencil= cc.sprite:create('res/mark.png')

local c_node = cc.clippingnode:create()

c_node:setstencil(stencil)

c_node:setinverted(false)

c_node:setalphathreshold(0)

local sp = cc.sprite:create('res/di.png')

c_node:addchild(sp)

layer:addchild(c_node)

c_node:setposition(origin.x+visiblesize.width/2,origin.y+visiblesize.height/2)

cocos2d x 3 x 觸控響應

3.x需要自己註冊監聽事件。有兩種方式,乙個是用c 的bind繫結自定義函式,cocos2d x封裝了一下,提供了介面 cc callback 數字,數字代表引數個數。eventlistener需要兩個引數 touch 和 event 所以這裡使用的是cc callback 2 auto dispa...

cocos2d x 3 x記憶體管理

記憶體管理有ref提供的4個方法 void retain 將該物件的引用計數器 1 void release 將該物件的引用計數器 1 ref autorelease 不改變物件的引用計數器值,將物件新增到自動釋放池,返回物件本身 unsigned int getreferencecount con...

Cocos2dx 3 x多點觸控問題

首先,這並不是什麼教程。只是今天折騰了一天的乙個比較傻的問題。3.x的eventlistener想必各位已經都會了。toucheventallatonce是多點觸控,但幾乎沒什麼人用過。用法不難,但是很多人和我一樣卡在了無論怎麼搞touches的數量都只有一,換句話說,就是死活單點觸控。搜了很多論壇...