SKCropNode 将裁剪部分作为 SKSpriteNode

Posted

技术标签:

【中文标题】SKCropNode 将裁剪部分作为 SKSpriteNode【英文标题】:SKCropNode Get Cropped Part As SKSpriteNode 【发布时间】:2013-12-24 09:12:23 【问题描述】:

我对 SKCropNode 应用了一个蒙版,我看到了我现在需要的东西,但是 裁剪节点具有完整图像的大小我只想访问裁剪部分而不是完整图像我可以将它放入 SKSpriteNode 吗??

这是我的代码

SKSpriteNode *pic = [SKSpriteNode spriteNodeWithImageNamed:@"test.png"];
pic.name = @"PictureNode";
SKSpriteNode *mask = [SKSpriteNode spriteNodeWithImageNamed:@"2.png"];
mask.size=CGSizeMake(50, 50);
mask.position=CGPointMake(0, 50);
SKCropNode *cropNode = [SKCropNode node];
cropNode.position=CGPointMake(160, 70);
[cropNode addChild:pic];
[cropNode setMaskNode:mask];
[self addChild:cropNode];

这是图片和结果:

提前致谢

【问题讨论】:

你能把结果和源图像显示出来吗? 结果似乎还不错……你想达到什么目的? 我只想检测裁剪区域上的压力...如果我按下隐藏图像区域中的任何点,它表示我按下了cropNode 这个问题和你上面问的很不一样。请添加用于处理手势的代码 【参考方案1】:

据我了解,您正在尝试将裁剪部分作为 SKSpriteNode,如果是这种情况,您可以按如下方式进行管理:

    SKTexture *oldWholeTexture = [self.scene.view textureFromNode:cropNode];
    SKTexture *newTexture = [SKTexture textureWithRect:CGRectMake(140.f/364.f,56.f/365.f,80.f/364.f,125.f/365.f) inTexture: oldWholeTexture];
    SKSpriteNode *newNode = [SKSpriteNode spriteNodeWithTexture:newTexture];

textureWithRect 的 CGRect 参数采用单位值,因此我根据纹理大小对值进行了归一化。左下角是 (0,0)。

【讨论】:

感谢 Neslisah 的回复,顺便说一句,这是一次不错的尝试,但它的宽度和高度仍然与完整图像相同

以上是关于SKCropNode 将裁剪部分作为 SKSpriteNode的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 SKCropNode 添加Child - 错误

裁剪不规则形状的图像

当我在层次结构中添加额外的 SKNode 子级时,SKCropNode 失败

裁剪算法——多边形裁剪/文字裁剪

多边形裁剪与文字裁剪

将图像裁剪成单独的部分