在Cocos2D中在多边形中切割形孔

KWW

假设使用CCDrawNode创建的填充多边形:

CCDrawNode *polygon = [CCDrawNode node];

CGPoint points[4];
points[0] = ccp(-20.0, -20.0);
points[1] = ccp(20.0, -20.0);
points[2] = ccp(20.0, 20.0);
points[3] = ccp(-20.0, 20.0);

[polygon drawPolyWithVerts:points count:4 fillColor:[CCColor blackColor] borderWidth:0.0 borderColor:[CCColor clearColor]];
[self addChild:polygon];

如何在其中切出异型孔,以获得类似的效果?

http://i.imgur.com/45qetR1.png

孔将动态生成并以各种配置生成,因此无法选择准备一组预制纹理。

我没有运气尝试使用CCDrawNode并应用混合功能将其创建为多边形。

CCDrawNode *circle = [CCDrawNode node];
[circle drawDot:ccp(0.0, 0.0) radius:10.0 color:[CCColor whiteColor]];
[circle setBlendFunc:(ccBlendFunc){GL_ONE_MINUS_DST_ALPHA, GL_ONE_MINUS_SRC_ALPHA}];
[self addChild:circle];

或者

...
[polygon setBlendFunc:(ccBlendFunc){GL_ONE_MINUS_DST_ALPHA, GL_ONE_MINUS_SRC_ALPHA}];
[polygon drawDot:ccp(0.0, 0.0) radius:10.0 color:[CCColor whiteColor]];
[self addChild:polygon];

我相信我尝试了混合模式的每种组合,但没有找到正确的模式。

我显然做错了,因为这看起来可以使用混合模式来实现。还是我必须重写该draw方法并应用一些OpenGL ES代码?我尝试使用OpenGL,但最终却一事无成。另外,我不确定将OpenGL ES(2.0+)与Cocos2D混合的首选方法是什么,至于我知道我应该避免在“立即模式”下进行此操作。

但是,如果这不是正确的方法,我想知道您的建议。

顺便说一句-CCDrawNode似乎不支持该opacity属性。有办法启用它吗?无论该属性的值如何,它仅以100%不透明度呈现其内容。

我在iOS 7.1上使用Cocos2D 3.0。

米乔·乔德科

您应该查看CCClippingNode类。这是一个例子:

// Square-shaped hole
CCDrawNode *square = [CCDrawNode node];
CGPoint squarePoints[4] = {ccp(-20.0, -20.0), ccp(20.0, -20.0), ccp(20.0, 20.0), ccp(-20.0, 20.0)};
[square drawPolyWithVerts:squarePoints count:4 fillColor:[CCColor blackColor] borderWidth:0.0 borderColor:[CCColor clearColor]];
square.position = ccp(0.0, 0.0);

// Triangle-shaped hole
CCDrawNode *triangle = [CCDrawNode node];
CGPoint trianglePoints[3] = {ccp(-10.0, 25.0), ccp(10.0, 25.0), ccp(0.0, 25.0 + 10.0 * sqrt(3.0))};
[triangle drawPolyWithVerts:trianglePoints count:3 fillColor:[CCColor blackColor] borderWidth:0.0 borderColor:[CCColor clearColor]];
triangle.position = ccp(0.0, 0.0);

// Prepare your stencil
CCNode *stencil = [CCNode node];
[stencil addChild:square];
[stencil addChild:triangle];

// Create a clipping node with the prepared stencil
CCClippingNode *clippingNode = [CCClippingNode clippingNodeWithStencil:stencil];

// Setting the clipping mode to inverted will result in the clipping node drawing its contents everywhere BUT the stencil's non-transparent areas
clippingNode.inverted = YES;

// Create your polygon
CCDrawNode *polygon = [CCDrawNode node];
CGPoint polygonPoints[4] = {ccp(-50.0, -50.0), ccp(40.0, -40.0), ccp(50.0, 50.0), ccp(-40.0, 40.0)};
[polygon drawPolyWithVerts:polygonPoints count:4 fillColor:[CCColor blackColor] borderWidth:0.0 borderColor:[CCColor clearColor]];
polygon.position = ccp(0.0, 0.0);
[clippingNode addChild:polygon];

// Now the clipping node should contain your polygon with shaped-holes in it

如果我没记错的话,用创建的实心圆CCDrawNode不能在模具中正常工作,因此您可能需要创建自己的圆图绘制类或使用纹理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

绘制多边形并将其用作 cocos2d js 中的精灵

来自分类Dev

用小册子geoman在多边形中切孔

来自分类Dev

在Shapely中用两条线切割多边形

来自分类Dev

ggplot中具有孔的多边形的Choropleth贴图

来自分类Dev

ggplot中具有孔的多边形的Choropleth贴图

来自分类Dev

react-google-maps 中带孔的多边形

来自分类Dev

VTK:使用vtkDelaunay2D创建多边形和孔不起作用

来自分类Dev

r:在ggplot2中绘制带孔的多边形时撕裂

来自分类Dev

在多边形中绘制多个孔-诺基亚Maps API v2

来自分类Dev

如何制作带孔的多边形

来自分类Dev

在Slick2D中多边形的定位

来自分类Dev

在Slick2D中多边形的定位

来自分类Dev

在openGL中绘制2D多边形

来自分类Dev

如何在cocos2dx中创建多边形以显示运行编号

来自分类Dev

指向具有多边形孔的多边形区域内部

来自分类Dev

从d3.js中的GeoJson多边形获取每个多边形的质心

来自分类Dev

多边形剪裁中的多边形

来自分类Dev

多边形中的点,多个多边形

来自分类Dev

带孔的世界地图的多边形(谷歌地图)

来自分类Dev

使用FillPath创建带孔的多边形

来自分类Dev

带有孔的Google-SDK-iOS多边形

来自分类Dev

如何创建带孔的多边形GEOS库

来自分类Dev

如何在SpatialPolygonsDataFrame内的多边形上添加孔?

来自分类Dev

绘制带孔的“甜甜圈”多边形

来自分类Dev

如何在SpatialPolygonsDataFrame内的多边形上添加孔?

来自分类Dev

MapBox 内部多边形无法显示某些区域的孔

来自分类Dev

检查点是否在由多个多边形/孔组成的空间对象中

来自分类Dev

从嵌套的SpatialPolygonsDataFrame提取父多边形或从父ploygon中“溶解”孔

来自分类Dev

如何在用geopandas分解地理数据框时填充在创建的多边形中的孔?

Related 相关文章

  1. 1

    绘制多边形并将其用作 cocos2d js 中的精灵

  2. 2

    用小册子geoman在多边形中切孔

  3. 3

    在Shapely中用两条线切割多边形

  4. 4

    ggplot中具有孔的多边形的Choropleth贴图

  5. 5

    ggplot中具有孔的多边形的Choropleth贴图

  6. 6

    react-google-maps 中带孔的多边形

  7. 7

    VTK:使用vtkDelaunay2D创建多边形和孔不起作用

  8. 8

    r:在ggplot2中绘制带孔的多边形时撕裂

  9. 9

    在多边形中绘制多个孔-诺基亚Maps API v2

  10. 10

    如何制作带孔的多边形

  11. 11

    在Slick2D中多边形的定位

  12. 12

    在Slick2D中多边形的定位

  13. 13

    在openGL中绘制2D多边形

  14. 14

    如何在cocos2dx中创建多边形以显示运行编号

  15. 15

    指向具有多边形孔的多边形区域内部

  16. 16

    从d3.js中的GeoJson多边形获取每个多边形的质心

  17. 17

    多边形剪裁中的多边形

  18. 18

    多边形中的点,多个多边形

  19. 19

    带孔的世界地图的多边形(谷歌地图)

  20. 20

    使用FillPath创建带孔的多边形

  21. 21

    带有孔的Google-SDK-iOS多边形

  22. 22

    如何创建带孔的多边形GEOS库

  23. 23

    如何在SpatialPolygonsDataFrame内的多边形上添加孔?

  24. 24

    绘制带孔的“甜甜圈”多边形

  25. 25

    如何在SpatialPolygonsDataFrame内的多边形上添加孔?

  26. 26

    MapBox 内部多边形无法显示某些区域的孔

  27. 27

    检查点是否在由多个多边形/孔组成的空间对象中

  28. 28

    从嵌套的SpatialPolygonsDataFrame提取父多边形或从父ploygon中“溶解”孔

  29. 29

    如何在用geopandas分解地理数据框时填充在创建的多边形中的孔?

热门标签

归档