我刚开始使用SpriteKit并尝试构建一个非常简单的数字自动收报机 - 就像一台内置0,1,2 .... 9图像的老虎机必须打勾。它就像一个记分牌,当得分需要像滚轮一样改变时,下面的数字会推动上面的数字(很像iOS上的日期选择器,但只是自动化)
我的第一次尝试:
我尝试创建一个SpriteNode。然后我创建了2个其他精灵节点,并将图像0和1放在其中。我将精灵节点的数字放在其父精灵节点中。
但是发生的事情是位于数字0下方的数字1显示在父Sprite节点下方。我不希望数字1显示,直到我必须推过数字0并显示数字1.父精灵节点的大小为100x100,每个数字图像的大小约为80x80。因此,当数字0位于100x100精灵内部并且我将数字1定位在y轴上的位置-100(相对于父精灵)时,它正在泄漏并显示在父精灵之外。
如何防止这种情况发生?我是做正确的事还是有更简单的方法来做到这一点。
关于如何使这个数字代码与SpriteKit一起使用的任何指针?非常感谢
答案 0 :(得分:0)
包含帮助您解释的代码实际上会很有帮助。
正如dragoneye所提到的,您将要将SKCropNode与隐藏属性结合使用。
您可以使用以下代码执行此操作。我为你的100x100机箱硬编码了100,但你应该调整它,所以如果你想改变面具的大小,你就有灵活性。
CGSize size = CGSizeMake(100, 100);
SKCropNode *cropNode = (SKCropNode *)self.node;
cropNode.maskNode = [[SKSpriteNode alloc] initWithColor:[SKColor blackColor] size:size];
然后您将通过以下方式添加节点0和1:
[cropNode addChild:node0];
[cropNode addChild:node1];
在这种情况下,node0是你的0节点,node1是你的node1节点。
您还应该使用hidden来关闭不需要的节点(即不再需要它时)。要更改数字,我可能只是更改这些节点上的纹理。这意味着您可能希望预加载数字的所有纹理。