问题标签 [skeffectnode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
413 浏览

ios - 如何正确打开和关闭 SKNode 的 SKEffectNode?

如果选择了一个节点,我想显示一个效果节点。如果没有,我想关闭/删除该效果。(我将一个节点设置为在 中选择的touchesBegan。)

我使用下面的代码。打开和关闭效果节点让我很困惑,因为我将主节点添加到效果节点中。我应该如何在不丢失主节点的情况下关闭它?我可以将效果的颜色更改为透明以隐藏它,但听起来不是正确的方式......将主节点从效果节点移动到效果节点的父节点可能有效,但我必须再次重新定位它所以它不会听起来也不对。。

这样做的正确方法之一是什么?(正确 = 有利于性能,同时不增加编码复杂性)

0 投票
1 回答
1101 浏览

ios - 如何对 SKSpriteNode 进行 alpha 掩码?

我知道有SKCropNode,但它只会根据 的 alpha 阈值完全输入或排除像素maskNode。我已经尝试过使用SKEffectNode过滤CIBlendWithAlphaMask器,但我得到的结果是不可见的,我也不确定如何移动面具。这是代码:

我已经找到了完美的解决方案,使用 aSKLightNode来点亮纹理,然后使用 将其混合到帧缓冲区中SKBlendModeAdd,但由于某种原因,它在 iPhone 5 上不起作用(这里有一个相关主题)。我也知道这个话题,这也没有帮助。

任何正确 alpha-mask a 的解决方案SKSpriteNode将不胜感激!运行 iOS 8。

0 投票
0 回答
84 浏览

sprite-kit - shouldEnableEffects 的问题

当我在 Xcode 6 iOS 8.1 中开始一个新项目并使用这行代码时

这发生了https://www.youtube.com/watch?v=GPUkEAnHW7s

如果我可以控制它,那将不是问题,但无论我尝试什么(更改混合模式或将 CIFilters 添加到场景中),结果总是如此。

我在网上搜索过,并试图复制我看过的例子,它基本上出现在发布的视频中。

0 投票
1 回答
829 浏览

ios - CIGaussianBlur 需要太多处理

我正在尝试在游戏暂停屏幕上应用 CIGaussianBlur 效果。这是我的代码:

这段代码运行良好,但它占用了太多的处理能力并大大降低了 FPS!我只想要游戏暂停时背景的静态模糊图像。

这个问题有解决方法吗?

0 投票
4 回答
971 浏览

ios - SKEffectNode - CIFilter 模糊大小限制 - 大黑盒

我正在尝试模糊多个SKNode对象。我通过让父母SKEffectNode设置CIFilter@"CIGaussianBlur". 像这样:

这适用于当前屏幕上的一堆节点。但是当我将这些音符彼此远离(大约 3000 像素)时,不再发生模糊,我得到一个大黑框。无论SKNodes我模糊的是SKShapeNodes还是,都会发生这种情况SKSpriteNodes。这是一个有此问题的示例项目:示例项目。(顺便说一句,感谢 BobMoff 在这里找到的初始版本):

这是快乐的模糊(当节点彼此之间的距离小于3000 像素时):

快乐的模糊!

悲伤模糊(当节点彼此相距超过 3000 像素时)

在此处输入图像描述

更新

SKEffectNode只要 an是父级,就会发生此行为。启用效果、模糊等都无所谓,如果父节点是SKNode就可以了。即即使父模糊节点像下面这样创建,你也会得到黑度:

0 投票
0 回答
279 浏览

sprite-kit - SpriteKit:确定命中测试的绘制顺序

我正在使用 Spritekit 并希望进行一次命中测试,这很直观。换句话说:我得到了一个位置 x,y 并想找出哪个是被击中的最顶部的节点。(而“最顶层”是指用户实际认为最顶层的那个。)

我没有找到任何 SpriteKit 的预定义功能,可以为我提供此功能。实际上,我发现 SpriteKit 本身使用了一些反直觉的命中测试,请参见此处

我自己实现这一点的想法是计算一些全局 z 排序,就像Dobroćudni Tapir在此处的答案中所描述的那样。

我认为这可能有效,让我感到困惑的是文档中的声明:

重要提示:SKCropNode 和 SKEffectNode 节点类会改变场景渲染行为。这些节点的子节点被独立渲染为单独的节点树,结果被渲染到包含裁剪或效果节点的树中。有关更多信息,请参阅使用其他节点类型。

要在“了解节点树的绘制顺序”下找到此处。

我没有找到提到的“使用其他节点类型”点,所以我不知道 SKCropNodes 或 SKEffectNodes 如何以及为什么应该更改绘图顺序......

因此,以下问题的答案可以帮助我:

  • SpriteKit 是否提供一些功能来检索绘图顺序?
  • 如果没有,您认为我的自定义实现有效吗?(作物或效果节点如何破坏它?)
  • 你能给我指出关于这个问题的信息吗?喜欢缺少的“与其他节点一起工作”文章吗?

更新:

我刚刚发现这里报告的行为不正确。

正如评论中提到的,我被指向 nodeAtPosition 或 nodesAtPosition。我在这里使用了代码并对其进行了测试。

结果并不令人满意。两个问题:

  1. 在 nodesAtPosition 中设置的 zPosition 被忽略。独立如果蓝色或红色方块在前面,我在nodesAtPosition中返回的数组中得到相同的顺序。
  2. 这些函数使用累积帧。但在一个完美的情况下,我想使用每个节点的确切大小而不是累积的帧。

一些图片到1。: 在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
526 浏览

ios - SKEffectNode,SpriteKit 在 Swift 中反转颜色

我想从SpriteHelloLable之外的部分反转颜色。box我知道使用 SKEffectNode 是可能的,但我不知道如何。

0 投票
1 回答
275 浏览

swift - iOS9 beta - SKEffectNode/CIFilter 错误?

我不确定这是一个错误还是我在某个地方出错了:

我有一个 A 类,它是 SKScene 的子类和一个 B 类,它是 SKEffectnode 的子类。然后,我将 B 类添加为 A 类的子类。 B 类具有 blurfilter 属性:

当用户触摸某个节点时,效果会启用:

设备要么呈现效果,然后应用程序终止,要么效果没有得到呈现,应用程序终止。XCode 抛出以下错误:

/BuildRoot/Library/Caches/com.apple.xbs/Sources/IOAcceleratorFamily/IOAcceleratorFamily-201.1/Framework/IOAccelResourceRef.c:45:断言“忙时释放资源”失败

我在 iOS 8.4 上的 XCode 6.4 中创建了相同的场景并且没有错误,一切正常。

我的代码有问题吗?否则我会将此报告为错误。

谢谢

0 投票
1 回答
161 浏览

swift - Swift-SKEffectNode 需要一段时间才能出现

所以我的游戏中有一个暂停按钮,当你按下它时,场景会暂停,除了一个 SKNode(暂停菜单)之外的所有内容都会变得模糊。我通过创建一个具有过滤器的 SKEffectNode 来做到这一点,并将除暂停菜单之外的所有内容添加到其中。它有效,但模糊出现在背景中需要整整 2 秒。按下按钮后场景立即暂停,但模糊和暂停菜单仅在几秒钟后出现。有任何想法吗?

这是代码:

0 投票
1 回答
129 浏览

ios - SKEffectNode shouldRasterize broken in iOS 9.2?

I remember since the origins of SpriteKit that it has never supported a SKCropNode inside another SKCropNode. For that reason I decided to use a SKEffectNode along with the shouldRasterize property in the child node, which seems to work fine.... until now.

Since iOS 9.2 the sprites inside the SKEffectNode using this property now are either not showing or showing a plain white texture. As SKCropNode inside SKCropNode still doesn't work I'm out of options.

Does anyone know a workaround for this? Or should I just file a radar to Apple?