ios游戏制作了遮罩层效果

时间:2012-02-29 06:46:32

标签: iphone ios opengl-es cocos2d-iphone

enter image description here我需要一个覆盖整个屏幕的“遮罩”图层,中间部分(圆圈)是透明的。然后我可以使用触摸移动遮罩层。用户只能看到中间的透明部分。

我认为png文件不能提供帮助,因为文件需要非常大才能覆盖整个屏幕。

通过编码可以做到吗?

我在网上找到了这个,但对openGL了解不多。 http://www.cocos2d-iphone.org/forum/topic/7921

如果我可以使用CCMaskLayer并输入半径,那将会很棒。我可以自己处理触摸事件。

附加的png文件是预期的结果,中心部分是透明的。我需要这个来覆盖我的屏幕,只显示中间部分。红色部分被覆盖。

2 个答案:

答案 0 :(得分:3)

您可以通过两种方式使用裁剪的圆形纹理来解决此任务:

1)在屏幕中心绘制带有圆形纹理的精灵,并在周围(顶部,底部,左侧和右侧)绘制另外4个精灵,红色纹理较小,但缩放以覆盖所有屏幕。

2)(更优雅,但更难实现)使您的遮罩层全屏,但调整纹理坐标。详情:

  • 将环绕模式设置为GL_CLAMP_TO_EDGE到您的圆形纹理
  • 调整图层顶点的纹理坐标(为此,您需要将基类CCLayer子类化):

    enter image description here

此处v表示顶点位置和t - 纹理坐标。您需要为图层的四个角顶点设置正确的纹理坐标。对于将来,如果您想要拖动圆,则需要为纹理坐标添加一些偏移值。

答案 1 :(得分:3)

我写一个CCMaskLayer来完成同样的事情。

https://github.com/smilingpoplar/CCMaskLayer