我在使用SKSpriteNode时遇到了一些问题。如果我这样做:
var node1=SKSpriteNode(imageNamed:"image1");
var node2=SKSpriteNode(imageNamed:"image2");
self.addChild(node1);
self.addChild(node2);
然后image2
将显示在image1
前面(这很好)。
但如果我这样做:
var node1=SKSpriteNode(imageNamed:"image1");
var node2=SKSpriteNode(color:UIColor.redColor(),size: CGSizeMake(0,0,300,300)));
self.addChild(node1);
self.addChild(node2);
然后image1
将显示在node2-rectangle
前面。为什么这样做?
答案 0 :(得分:2)
我很惊讶甚至编译 - CGSizeMake
应该只采用2个参数(宽度,高度),而不是CGRectMake
,它需要4(x,y,宽度,高度)。换句话说,您似乎正在创建大小为node2
的{{1}}。请尝试... (0,0)
。
答案 1 :(得分:2)
来自Apple的文档......
默认值(SKView的ignoreSiblingOrder属性)为NO,表示何时 多个节点共享相同的z位置,这些节点被排序和 以确定的顺序呈现。父母在他们面前呈现 孩子们和兄弟姐妹都是从最年长到最年轻的。当这个 property设置为YES,树中节点的位置为 确定渲染顺序时忽略。 的渲染顺序 同一z位置的节点是任意的,并且每次都可以改变 渲染新框架 [强调添加]。