Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 创建一个SKShapeNodes数组_Ios_Swift_Sprite Kit - Fatal编程技术网

Ios 创建一个SKShapeNodes数组

Ios 创建一个SKShapeNodes数组,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我是快速发展的新手,我正在尝试创建一个简单的赛车游戏。游戏中的道路有车道标记,从屏幕顶部到底部设置动画,然后循环到顶部。我正在使用SKShapeNodes作为车道线标记 我已经能够让一个车道标记工作,现在我只需要创建一个车道标记数组(我想?),这样我就可以有两列车道,足够给游戏一个真实道路的错觉 我可以创建数组,但当我尝试向其中添加SKShapeNode时,会出现运行时错误。我得到的错误是: 线程1:EXC\u BAD\u指令(code=EXC\u I386\u INVOP,子代码=0x0) 以

我是快速发展的新手,我正在尝试创建一个简单的赛车游戏。游戏中的道路有车道标记,从屏幕顶部到底部设置动画,然后循环到顶部。我正在使用SKShapeNodes作为车道线标记

我已经能够让一个车道标记工作,现在我只需要创建一个车道标记数组(我想?),这样我就可以有两列车道,足够给游戏一个真实道路的错觉

我可以创建数组,但当我尝试向其中添加SKShapeNode时,会出现运行时错误。我得到的错误是:

线程1:
EXC\u BAD\u指令(code=EXC\u I386\u INVOP,子代码=0x0)

以下是相关的源代码:

class PlayScene: SKScene {
    let road = SKSpriteNode(imageNamed: "road8")
    let car = SKSpriteNode(imageNamed: "car")

    let laneLineNode = SKShapeNode()
    var laneLineNodeArray = [[SKShapeNode]]()
    var groundSpeed = 25
    }

    override func didMoveToView(view: SKView) {
        //draw a lane line
        var path = CGPathCreateMutable();
        var laneLineWidth = self.size.width / 85
        var laneLineHeight = self.size.height / 11
        var laneLine = CGRect(x: ((self.frame.size.width / 5) * 2), y:            
           (self.frame.size.height + laneLineHeight), 
           width: laneLineWidth, height: laneLineHeight)

        laneLineNode.lineWidth = 0
        laneLineNode.path = CGPathCreateWithRect(laneLine, nil)
        laneLineNode.fillColor = SKColor.yellowColor()
        laneLineNode.zPosition = 2

        //THIS IS THE LINE I GET THE ERROR ON
        laneLineNodeArray[0][0] = laneLineNode

        self.addChild(self.road)
        self.addChild(self.laneLineNode)
        self.addChild(self.car)
    }

    override func update(currentTime: CFTimeInterval) {        
        //move the lane lines
        scrollLaneLines(self.scene!)
    }
}

谢谢你能给我的任何帮助。

到目前为止,你已经创建了一个空数组。在按索引访问元素之前,请使用“append”将数据添加到数组中

首先。。。您使用以下代码过早关闭您的类:

  var groundSpeed = 25
} // <--

谢谢大家!!我能让它在课堂游戏场景中发挥作用:

var laneLineNodeArray:[[SKShapeNode]] = []
在func didMoveToView中:

    //draw a lane line
    var path = CGPathCreateMutable();
    var laneLineWidth = self.size.width / 85
    var laneLineHeight = self.size.height / 11
    var laneLine = CGRect(x: 0, y: (self.frame.size.height + laneLineHeight),
        width: laneLineWidth, height: laneLineHeight)

    var laneLineRowNumber: Int
    var laneLineY: CGFloat
    for r in 0...6 {
        var laneLineRow:[LaneLine] = []
        laneLineRowNumber = r
        for c in 0...1 {
            let laneLineNode = LaneLine()
            laneLineNode.lineWidth = 0
            laneLineNode.path = CGPathCreateWithRect(laneLine, nil)
            laneLineNode.fillColor = SKColor.yellowColor()
            laneLineNode.zPosition = 2
            //lanelineY determines the Y placement of the lane.
            laneLineY = self.frame.size.height - (CGFloat((laneLineHeight) * 2)
                * CGFloat(r))

            if c == 0 {
                laneLineNode.position = CGPointMake(laneWidth * 2, laneLineY)
            }
            else if c == 1 {
                laneLineNode.position = CGPointMake(laneWidth * 3, laneLineY)
            }
            self.addChild(laneLineNode)
            laneLineRow.append(laneLineNode)
        }
    laneLineNodeArray.append(laneLineRow)
    }
var laneLineNodeArray:[[SKShapeNode]] = []
    //draw a lane line
    var path = CGPathCreateMutable();
    var laneLineWidth = self.size.width / 85
    var laneLineHeight = self.size.height / 11
    var laneLine = CGRect(x: 0, y: (self.frame.size.height + laneLineHeight),
        width: laneLineWidth, height: laneLineHeight)

    var laneLineRowNumber: Int
    var laneLineY: CGFloat
    for r in 0...6 {
        var laneLineRow:[LaneLine] = []
        laneLineRowNumber = r
        for c in 0...1 {
            let laneLineNode = LaneLine()
            laneLineNode.lineWidth = 0
            laneLineNode.path = CGPathCreateWithRect(laneLine, nil)
            laneLineNode.fillColor = SKColor.yellowColor()
            laneLineNode.zPosition = 2
            //lanelineY determines the Y placement of the lane.
            laneLineY = self.frame.size.height - (CGFloat((laneLineHeight) * 2)
                * CGFloat(r))

            if c == 0 {
                laneLineNode.position = CGPointMake(laneWidth * 2, laneLineY)
            }
            else if c == 1 {
                laneLineNode.position = CGPointMake(laneWidth * 3, laneLineY)
            }
            self.addChild(laneLineNode)
            laneLineRow.append(laneLineNode)
        }
    laneLineNodeArray.append(laneLineRow)
    }