cocos2dx 3.x 蒙板 遮罩 点击圆功能
生活随笔
收集整理的這篇文章主要介紹了
cocos2dx 3.x 蒙板 遮罩 点击圆功能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//注冊觸摸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++){float radian = i * angel;//弧度m_vPoint[i].x = radius * cosf(radian);//頂點X坐標m_vPoint[i].y = radius * sinf(radian);//頂點Y坐標
}//繪制多邊形//注意不要將pStencil addChildDrawNode *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){Size size = Director::getInstance()->getWinSize();Vec2 location = touch->getLocation();//獲取點擊的坐標float b = abs(location.x - size.width / 2);//獲取絕對值float c = abs(location.y - size.height / 2);//坐標x.y - 圓心x,y size/2是圓心.if (b <= 55.0f && c <= 55.0f){log("dianjidaole");//小于55 點擊到了圓return true; }log("meiyou");return false; }?
轉載于:https://www.cnblogs.com/H-K-Home/p/6491708.html
總結
以上是生活随笔為你收集整理的cocos2dx 3.x 蒙板 遮罩 点击圆功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 动态增加定时任务
- 下一篇: TCP、UDP套接字的数据传输