本文介绍了Cocos2d iPhone - 精灵剪辑/蒙版/框架的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在 Cocos2D 中剪辑/裁剪/遮罩或仅设置 CCSprite 的框架?

how can i clip/crop/mask or just set the frame of a CCSprite in Cocos2D?

类似于:设置 UIView 的框架,裁剪子视图 = TRUE

Something similar to:setting the frame for UIView, with clipping subviews = TRUE

我的 CCSprite Main Sprite 添加了多个 Child Sprite.我只希望 Main Sprite SpriteMask 部分可见.有没有办法为 CCSprite 剪辑或使用蒙版?

My CCSprite Main Sprite have multiple Child Sprite added to it.I only want Mask part of that Main Sprite Sprite visible.Is there a way to clip or use a mask for CCSprite?

我可以剪掉背景和上面的图层,只留下可见区域,但这是唯一的方法吗?!

I could cut the background and layer that on top, leaving only that visible area, but is that the only way?!

这是一个示例图片,展示了我想要实现的目标:

here's a sample image demonstrating what I'm trying to achieve:

推荐答案

我最终使用了 GL_SCISSOR.

I ended up using GL_SCISSOR.

在我实现的 MainSprite 中:

in MainSprite I impemented:

- (void) visit
{
    if (!self.visible) {
        return;
    }
    glEnable(GL_SCISSOR_TEST);
    glScissor(x, y, width, height);
    [super visit];
    glDisable(GL_SCISSOR_TEST);
}

这将剪切或遮盖指定区域.

This will clip or mask the specified area.

唯一棘手的一点是,在横向模式下,Cocos2D 在屏幕的左下角有 0,0,而 OpenGL 在右下角有它,因为它不考虑屏幕的方向.

The only tricky bit is that in Landscape mode Cocos2D has 0,0 at the bottom-left side of the screen, while OpenGL has it at the bottom-right corner as it doesn't consider the orientation of the screen.

换句话说,对于 OpenGL,假设您有一个旋转的纵向屏幕.

In other words, for OpenGL consider you have a rotated portrait Screen.

这篇关于Cocos2d iPhone - 精灵剪辑/蒙版/框架的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-17 22:10
查看更多