another question: call function generates sprites per time. when interrupt game, example picking call or double-click home button , go task-manager, scene doesn't stop , continue calling function (oh, in function recall per random time, cause in didmovetoview calls once). how stop scene when game interrupted? thank you!
func spawnrocks(){ if gameover == 0{ score++ scorelabel.text = "\(score)" let rockposition = arc4random() % uint32(self.frame.height/1.5) var rockamount = cgfloat(rockposition) - self.frame.size.height/4 var rocktexture = sktexture(imagenamed: randomrock()) rock = skspritenode(texture: rocktexture) rock.setscale(randomrockscale()) rock.position = cgpointmake(cgrectgetmidx(self.frame) + self.frame.size.width, cgrectgetmidy(self.frame) + rockamount) var moverock = skaction.movebyx(-self.frame.size.width*2, y: 0, duration: nstimeinterval(randomrockmove())) var removerock = skaction.removefromparent() var moveremoverock = skaction.sequence([moverock, removerock]) rock.runaction(moveremoverock) rockobject.addchild(rock) nstimer.scheduledtimerwithtimeinterval(nstimeinterval(randomrockspeed()), target: self, selector: selector("spawnrocks"), userinfo: nil, repeats: false) } }
you can try idea:
first of when app enter background applicationdidenterbackground call appdelegate can set 1 bool there nsuserdefaults can access anywhere project , set way:
func applicationdidenterbackground(application: uiapplication) { nsuserdefaults.standarduserdefaults().setbool(true, forkey: "background") } now in gameviewcontroller.swift make if false when load game again this:
override func viewdidload() { super.viewdidload() nsuserdefaults.standarduserdefaults().setbool(false, forkey: "background") } and can read nsuserdefaults in function , can stop if bool true way:
func spawnrocks(){ let background = nsuserdefaults().boolforkey("background") if !background { if gameover == 0{ score++ scorelabel.text = "\(score)" let rockposition = arc4random() % uint32(self.frame.height/1.5) var rockamount = cgfloat(rockposition) - self.frame.size.height/4 var rocktexture = sktexture(imagenamed: randomrock()) rock = skspritenode(texture: rocktexture) rock.setscale(randomrockscale()) rock.position = cgpointmake(cgrectgetmidx(self.frame) + self.frame.size.width, cgrectgetmidy(self.frame) + rockamount) var moverock = skaction.movebyx(-self.frame.size.width*2, y: 0, duration: nstimeinterval(randomrockmove())) var removerock = skaction.removefromparent() var moveremoverock = skaction.sequence([moverock, removerock]) rock.runaction(moveremoverock) rockobject.addchild(rock) nstimer.scheduledtimerwithtimeinterval(nstimeinterval(randomrockspeed()), target: self, selector: selector("spawnrocks"), userinfo: nil, repeats: false) } } } after when user open app again background can set bool false again appdelegate way:
func applicationwillenterforeground(application: uiapplication) { nsuserdefaults.standarduserdefaults().setbool(false, forkey: "background") } hope you.
Comments
Post a Comment