比较SKSpriteNode纹理属性

时间:2015-10-13 14:47:15

标签: swift sprite-kit

我目前正在使用SpriteKit框架,我需要比较两个更多纹理的节点,但==操作数不起作用,我测试print(mySprite.texure)控制台时出现

<SKSpriteNode> name:'mySprite' texture:[<SKTexture> 'logo' (400 x 400)] position:{409.60000610351562, 384} scale:{1.00, 1.00} size:{110, 110} anchor:{0.5, 0.5} rotation:0.00

我怎样才能获得纹理的字符串? (&#39;徽标&#39;在我的情况下) 它不是SKNode,我使用的是SKSpriteNode。

我在swift 2.0中开发<​​/ p>

1 个答案:

答案 0 :(得分:1)

使用相同图像的两个SKTexture不一定是相同的SKTexture; SKTexture“包装”图像数据并提供其他内容,如过滤模式,以便您可以以多种方式显示相同的图像纹理。这就是为什么简单地将它们与“==”进行比较并期望在使用相同图像时评估为真的原因将不起作用。

更好的方法是,如果您希望两个SKSpriteNodes在具有相同图像时以特定方式运行,则应创建跟踪该逻辑状态的SKSpriteNode子类,然后对其进行比较。让SKTexture也反映出这种状态。换句话说,比较您的模型空间而不是您的视图/实现空间。这样,如果你以后希望有两种不同的纹理能够以这种方式“匹配”,你可以处理它,或者如果你想让相同的纹理不能以这种方式“匹配”,因为其他一些考虑,你可以处理那个。