ios - Swift error: Cannot call value of non-function type "SKSpriteNode" -


i tried translate this github code in swift 1 swift 2. makes rope in this video.

my translated rope.swift finished looking this:

// //  rope.swift //  skswiftropedemo // //  created jeremy higgins on 6/10/14. //  copyright (c) 2014 digital buckeye. rights reserved. //  import spritekit  class rope : sknode {      var ropetexture : string     var node1 : sknode     var node2 : sknode     var parentscene : skscene      init(parentscene scene : skscene, node node1 : sknode, node node2 : sknode, texture tex : string) {          self.ropetexture = tex         self.node1 = node1         self.node2 = node2         self.parentscene = scene          super.init()         self.name = "rope"          self.createrope()     }      required init(coder adecoder: nscoder) {         fatalerror("init(coder:) has not been implemented")     }      func createrope() {         // calculate distance & angle          let deltax = node2.position.x - node1.position.x         let deltay = node2.position.y - (node1.position.y  + (node1.frame.size.height / 2))         let total = deltax * deltax + deltay * deltay         let distance = float(sqrtf(float(total)))         let height = float(skspritenode(imagenamed: "rope").size.height - 1.0)         let p = (distance / height)          var points = int(p)         points -= 1;          let vx = cgfloat(deltax) / cgfloat(points)         let vy = cgfloat(deltay) / cgfloat(points)          let vector = cgpoint(x: vx, y: vy)         var previousnode : skspritenode?         let angle = atan2f(float(deltay), float(deltax))          in 0...points {             var x = self.node1.position.x             var y = self.node1.position.y + (self.node1.frame.size.height / 2)              y += vector.y * cgfloat(i)             x += vector.x * cgfloat(i)              let ropepiece = skspritenode(imagenamed: self.ropetexture)             ropepiece.name = "rope"             ropepiece.position = cgpoint(x: x, y: y)             ropepiece.zrotation = cgfloat(angle + 1.57)             ropepiece.zposition = -1              ropepiece.physicsbody = skphysicsbody(rectangleofsize: ropepiece.size)              ropepiece.physicsbody?.collisionbitmask = 2             ropepiece.physicsbody?.categorybitmask = 2             ropepiece.physicsbody?.contacttestbitmask = 2              self.parentscene.addchild(ropepiece)              if let pnode = previousnode {                 let pin = skphysicsjointpin.jointwithbodya(pnode.physicsbody!, bodyb: ropepiece.physicsbody!, anchor: cgpoint(x: cgrectgetmidx(ropepiece.frame), y: cgrectgetmidy(ropepiece.frame)))                 self.parentscene.physicsworld.addjoint(pin)             } else {                 if == 0 {                     let pin = skphysicsjointpin.jointwithbodya(self.node1.physicsbody!, bodyb: ropepiece.physicsbody!, anchor: cgpoint(x: cgrectgetmidx(self.node1.frame), y: cgrectgetmaxy(self.node1.frame)))                     self.parentscene.physicsworld.addjoint(pin)                 }             }              previousnode = ropepiece         }          if let pnode = previousnode {             let pin = skphysicsjointpin.jointwithbodya(self.node2.physicsbody!, bodyb: pnode.physicsbody!, anchor: cgpoint(x: cgrectgetmidx(pnode.frame), y: cgrectgetmidy(pnode.frame)))             self.parentscene.physicsworld.addjoint(pin)         }     }      func destroyrope() {         self.parentscene.enumeratechildnodeswithname("rope", usingblock: { node, stop in             node.removefromparent()         })     } } 

and gamescene.swift part became this:

// //  gamescene.swift //  hop hope // //  created sergio on 5/2/16. //  copyright (c) 2016. rights reserved. //  import spritekit  struct physicscategory {     static let player : uint32 = 0x1 << 1     static let ground : uint32 = 0x1 << 2     static let rope : uint32 = 0x1 << 3 }  class gamescene: skscene {      var ground = skspritenode()      var rope = skspritenode()      var player = skspritenode()     let szplayer = 60      var anchor = skspritenode()     var aplayer = skspritenode()       override func didmovetoview(view: skview) {         // physics border around screen         self.physicsbody = skphysicsbody(edgeloopfromrect: self.frame)          // static body         self.anchor = skspritenode(color: uicolor.redcolor(), size: cgsize(width: 50, height: 50))         self.anchor.position = cgpoint(x: self.frame.size.width / 2, y: self.frame.size.height - anchor.size.height)         self.anchor.physicsbody = skphysicsbody(rectangleofsize: anchor.frame.size)         self.anchor.physicsbody?.dynamic = false         self.anchor.physicsbody?.collisionbitmask = 1         self.anchor.physicsbody?.categorybitmask = 1         self.anchor.physicsbody?.contacttestbitmask = 1         self.addchild(self.anchor)          // dynamic body         self.aplayer = skspritenode(color: uicolor.greencolor(), size: cgsize(width: 50, height: 50))         self.aplayer.position = cgpoint(x: aplayer.size.width * 2, y: self.frame.size.height / 2)         self.aplayer.physicsbody = skphysicsbody(rectangleofsize: aplayer.frame.size)         self.aplayer.physicsbody?.collisionbitmask = 1         self.aplayer.physicsbody?.categorybitmask = 1         self.aplayer.physicsbody?.contacttestbitmask = 1         self.addchild(self.aplayer)          // create rope         var rope = rope(parentscene: self, node: self.aplayer, node: self.anchor, texture: "rope")           var label = sklabelnode(text: "tap on screen move block")         label.fontcolor = uicolor.blackcolor()         label.position = cgpoint(x: self.frame.size.width / 2, y: 200)         self.addchild(label)          ////////////////////////////////// rest of code 

the problem var rope = rope(parentscene: self, node: self.aplayer, node: self.anchor, texture: "rope") giving error cannot call value of non-function type "skspritenode"annoying error

and error giving, rest of code , files fine, , have no ideia how fix this. tried changing sknodes in rope.swift skspritenode, gave more errors.

you've declared variable called rope having class called rope:

var rope = skspritenode() 

so, when create rope later:

var rope = rope(parentscene: self, node: self.aplayer, node: self.anchor, texture: "rope") 

swift thinks trying use variable rope function pointer can't skspritenode.

note: should use names start lowercase letter variables , names start uppercase letter classes , structs. if had observed convention, wouldn't have had problem.


Comments

Popular posts from this blog

routing - AngularJS State management ->load multiple states in one page -

python - GRASS parser() error -

Swift game error message -