您的位置:首页 > Web前端 > Node.js

Spritekit游戏开发之SKSpriteNode(精灵)二

2015-10-27 08:31 501 查看
上一节我们讲了如何用图片创建加入精灵,我们创建了2个精灵,都是用同一张图片

我们加入一段代码,把第二个加入的精灵颜色改变下,改成红色,这个方法我不说,以后讲动作时再讲。

override func didMoveToView(view: SKView) {
//用一张图片初始化一个精灵
let ship = SKSpriteNode(imageNamed: "Spaceship")
//设置精灵坐标
ship.position = CGPoint(x: 500, y: 400)
//添加精灵到当前视图中
self.addChild(ship)

//用一个纹理(也是一张图片)初始化一个精灵
let texture = SKTexture(imageNamed: "Spaceship")
let secondShip = SKSpriteNode(texture: texture)
secondShip.position = CGPoint(x: 500, y: 500)
self.addChild(secondShip)
//改变红色
secondShip.runAction(SKAction.colorizeWithColor(UIColor.redColor(), colorBlendFactor: 1, duration: 0.1))

}


模拟器截图



我们可以清楚看到,第二个飞船覆盖了第一个,为什么?因为第二个飞船是是在第一个飞船之后addChild当前视图里面的,第一个飞船渲染后,第二个飞船再渲染的,所以第二个能覆盖第一个。我们改变下addChild加入视图的顺序

self.addChild(secondShip)
self.addChild(ship)
模拟器截图



这样,第一个精灵就覆盖了第二个精灵,但是每个精灵的顺序这样调节太累了,如何用简单的方式设置精灵的渲染次序,有的,就是精灵的zPosition属性

,值越大,越后渲染,太复杂了,这样想吧,值大的精灵就能覆盖值小的精灵

默认精灵zPosition为0.就要通过addChild手动调节加入次序,设置了zPosition,就不需要关心addChild次序了。

当前是第一个覆盖了第二个精灵。我们来改成第二个覆盖第一个,只要第二个zPosition值比第一个大就行。

在原代码底部加入2行

ship.zPosition = 0
secondShip.zPosition = 1
模拟器



你看这样,第二个红色的精灵就覆盖了第一个了吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: