- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试创建许多相互重叠和隐藏的 Sprite 。
class BubbleNode: SKSpriteNode {
init() {
let texture = SKTexture(imageNamed: "body")
super.init(texture: texture, color: .clear, size: texture.size())
let eye = SKSpriteNode(imageNamed: "eye")
eye.zPosition = 1
eye.position = CGPoint(x: -20, y: 0)
let eye_right = eye.copy() as! SKSpriteNode
eye_right.position = CGPoint(x: 20, y: 0)
let mouth_smiling = SKSpriteNode(imageNamed: "mouth_smiling")
mouth_smiling.zPosition = 1
mouth_smiling.position = CGPoint(x: 0, y: -20)
addChild(eye)
addChild(eye_right)
addChild(mouth_smiling)
}
}
在我看来,子元素的 zPosition 是有道理的。
我像这样添加气泡:
func touchDown(atPoint pos : CGPoint) {
let n = BubbleNode()
n.position = pos
self.addChild(n)
}
所以我希望 sprite 重叠并隐藏不可见的部分。
相反,我首先渲染 body ,然后将眼睛和嘴巴渲染为 sibling :
我试图翻转 view.ignoresSiblingOrder
但它没有帮助。
最佳答案
管理 z 顺序可能很棘手。
它的工作方式是 zPosition 是相对于父 zPosition 的,并且在 zPositioning 处只有 1 次传递。
因此,如果您在 zPosition 0 有一张脸,在 zPosition 1 有眼睛,在 zPosition 2 有虹膜,
然后当你去渲染2张脸时,这是绘制的顺序
face 1 --- z0
face 2 ----z0
eye 1 --- z1
eye 2 --- z1
iris 1 ---z3 (because 2 + 1 + 0 is 3)
iris 2 --- z3
最好将面部的所有部分都保留为 0,而只需更改面部本身的 zPosition
face 1 --- z0
eye 1 --- z0
iris 1 ---z0
face 2 ----z1
eye 2 --- z1 (because 1 + 0 is 1)
iris 2 --- z1
现在,如果出于某种原因,您需要添加到面部一部分的 zposition,然后跟踪它以确定 zvalue 范围。然后确保你的脸 zPosition 在 z 深度上相距那么远
face 1 --- z0
eye 1 --- z0
iris 1 ---z1 (depth of 2 z layers)
face 2 ----z2 (make sure we are at 2)
eye 2 --- z2 (because 2 + 0 is 1)
iris 2 --- z2
关于ios - SKSpriteNode zPosition绘图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47204201/
假设我有节点 A、B 和 C。我如何将节点 A 设置为比节点 B 更高的 zPosition,将节点 B 设置为比 C 更高的 zPosition,但将节点 A 设置为比节点 C 更低的 zPosit
我不明白如何更改 View 的 zPosition,我尝试这样做,但没有任何反应: - (void)viewDidLoad { [super viewDidLoad]; UIView
我在控制节点的 zPosition 时遇到问题。如果在场景编辑器上创建,我没有问题,但稍后当我想用代码添加新节点时,zPosition 不受尊重。 //GameScene override func
我想在GameScene.sks中为场景制作背景。我在那里有Tile Map Node,但是当我在GameScene.swift中设置背景时,图片位于我的纹理上。我希望它出现在场景的后面。 这是Gam
我有两个 SKLabelNode,一个显示分数,另一个充当分数后面的阴影。每次我的球员通过一个目标时,我都会通过调用下面的 updateScoreLabels() 方法更新得分标签以增加 1 分。 但
三层被赋予相同的父级,但要添加的第一层上的 zPosition 值没有影响 - 它保留在后面。为什么是这样?我正在阅读的书说子层数组中的位置可以用 zPosition 值覆盖。 import UIKi
我一直认为 SKNode 的 zPosition 是相对于其父节点的,但现在我遇到了相反的效果。 我的场景中有两个父 SKNode,它们的 zPosition 分别为 1 (node1) 和 2 (n
addChild 和 zPosition 对场景有什么影响? 我的意思是:假设我这样做 sprite1.zPosition = 50; sprite2.zPosition = 10; sprite3.
我有一个相当复杂的 UIImageView 层次结构。最初,当一个 UIImageView 移动到另一个 UIImageView 前面时,我小心地交换了同级顺序。然后我发现了 myUIImageVie
我有以下问题:我想要常量,在 parentView.subviews 数组中定义 subview 的顺序。此常量不一定是 subview 数组的索引,但它们可以。 像这样: #define VIEW1
我想将图像放置在导航栏上,但部分放置在导航栏上,部分放置在内容 View 上。所以我将 UINavigationBar.layer.zPostion 设置为 -1,它工作得非常好,尤其是在 iPhon
我有一个 UISearchBar正在努力动态显示列表中的匹配结果,但在试图停止 searchResultsTableView 时遇到了噩梦从模糊结果UIView ,当结果被点击时,它从右边开始动画。
我正在尝试制作一个抽屉,当它被点击时,它会从该行下方滑出。除了无法设置 zposition 之外,我已经完成了所有工作。我尝试了几种不同的方法,但它对我不起作用。我可以将 View 与行的底部对齐,但
我想更改我的瓦片 map 中某些瓦片的 zPosition。我使用以下函数来实现这一点: static func setZPosition(to tileMap: SKTileMapNode, an
我正试图暂停我游戏中的许多 Sprite 。有没有一种方法可以暂停具有给定 zPosition 的 Sprite 或低于给定 zPosition 的所有 Sprite ?这些 Sprite 也可能在更
我在 SpriteKit 场景中遇到了节点 zPosition 的问题。 我正在构建一个管理器节点,它支持对节点 zPosition 进行“类似层”的管理,本质上使您能够摆脱 zPosition 属性
我遇到了一个问题,当值变大时,Core Animation 似乎忽略了我的 zPosition 值。 例子 这很容易复制。 CGFloat largeZPosition = 1000000000; C
我是 Swift 编程新手。我正在尝试创建一个游戏,其中有一堆在屏幕上随机移动的 Sprite 。假设我有一堆简单的 2D 图像 Sprite 。当 Sprite 向上移动时(如 y 位置增加),我希
我有一些 UIViews 位于不同的 zPositions。这个想法是在呈现观点的那一刻有一种深度的感觉。所有 View 的图层都是 MainView.layer 的子图层。我想做的是在我的 View
在 Swift 中,我将尝试在顶部设置引脚位置 (zPosition),我在 map 上添加 10 个引脚,当前引脚(任何一个引脚)显示在顶部并且这些当前引脚图像发生变化,但它没有显示在顶部,请帮助我
我是一名优秀的程序员,十分优秀!