ios - 获取 GameScene 的所有 child

标签 ios swift

我正在尝试获取 GameScene 的所有子项(通过名称标识)以便与设备同步旋转一些 SKSpriteNode。

目前我有这段代码:

override func update(currentTime: CFTimeInterval) {  
    if manager.deviceMotionAvailable {
        manager.deviceMotionUpdateInterval = 0.01
        manager.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue()) {  
            [weak self] (data: CMDeviceMotion!, error: NSError!) in
            let rotation = atan2(data.gravity.x, data.gravity.y) - M_PI  

            for (var i = 1 ; i < self?.children.count ; i++){  
                var child = ???   // How can I get the child i
                if (child.name == 'Monster'){
                    let action = SKAction.rotateByAngle(CGFloat(DegreesToRadians(rotation)), duration:0)
                    child.runAction(action)
                }
            }
        }
    }
}  

我怎样才能得到 child 我?这是做这件事的好方法吗?否则,我可以处理一个数组列表,并将我所有的 child 都添加到 GameScene 中...

最佳答案

在 swift 中,您可以使用以下方法枚举具有特定名称的所有子节点:

enumerateChildNodesWithName("Monster", usingBlock: {
     let action = SKAction.rotateByAngle(CGFloat(DegreesToRadians(rotation)), duration:0)
                child.runAction(action)
}

文档: https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKNode_Ref/index.html#//apple_ref/occ/instm/SKNode/enumerateChildNodesWithName:usingBlock :

关于ios - 获取 GameScene 的所有 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29402192/

相关文章:

swift - iOS VPN 按需规则

ios - 在后台更新位置不会在后台运行后保持应用程序运行

iphone - dismissModalViewControllerAnimated 将原始 View 中的 View 向上移动 20 像素

ios - 如何提高CGLayer的绘图质量

ios - 当我尝试在 iOS SWIFT 中调用 api 时,为什么涉及另一种语言的特殊字符会导致崩溃?

inheritance - 覆盖 Swift 中的存储属性

ios - OS Sierra 10.12 上从终端重新签名 IPA 分段故障 11 错误

ios - 当存在 NSConstraintConflict 时显示 UIAlertController

ios - Xcode 嵌入式二进制文件发布与调试

swift - RealityKit 应用程序和较低的 iOS 部署目标