2015-04-02 78 views
-1

我正在制作一个点燃的游戏,并且我需要从右向左运行随机列。 即时通讯使用开关条件(开关/大小写/大小写...),在每种情况下,我正在添加一个不同的子节点,但它不工作,我不知道为什么。也即时做一个虽然cicle运行的条件永远如何在Swiftkit中的Switch语句中添加子节点(sknode)

我有所有g1(sknode),g2(sknode)和moveremover(skaction)代码写在第一行然后我有这个工作不正常,请帮助和对我的英语抱歉..

...这里所有的G1,G2和moveremover码...然后

var y = true 

do{ 

var x = arc4random_uniform(5) 

switch x 
    { 
case 1: addChild(g1); g1.runAction(moveremover) 
case 2: addChild(g2); g2.runAction(moveremover) 
default: SKAction.waitForDuration(2) 
    } 

} 
while y 

也许这是不是让我尝试什么,但最好的方式是唯一我的想象力的方式

+0

do {...} while(true)是无限循环,直到你以某种方式改变了y的值。我想你不想那样。从你发布的代码看起来你正试图产生节点并移动它们?你需要定期产卵吗?阅读本教程中有关shurikens的部分内容:http://www.raywenderlich.com/80917/sprite-kit-inverse-kinematics-swift这将是定期产生节点的一种方法。你仍然可以使用开关来选择产生哪个节点,但是我认为,无限循环做/无尽循环对于任何情况都是非常糟糕的选择。 – Whirlwind 2015-04-02 23:08:53

+0

我想产卵无限节点并移动它们(这就是为什么我把无尽循环),我需要每2秒产卵它们。 – 2015-04-03 00:59:42

+0

而不是while循环更好的func? – 2015-04-03 01:00:03

回答

0

而不是无尽的do while loop ,您可以使用SKAction.repeatForever一次又一次地重复某个功能并延迟。

func spawnColumn() { 
    // This has your column spawning code. 
} 

func spawnColumnEveryTwoSeconds() { 

    let spawnAction = SKAction.runBlock {() -> Void in 
     self.spawnColumn() 
    } 

    let waitTwoSeconds = SKAction.waitForDuration(2.0) 
    let spawnAndWait = SKAction.sequence([spawnAction,waitTwoSeconds]) 
    let spawnAndWaitForever = SKAction.repeatActionForever(spawnAndWait) 

    self.runAction(spawnAndWaitForever) 
} 
+0

谢谢你兄弟..要产卵随机列我需要为每列做一个f​​unc?我怎么能这样做,如果我不使用swich条件 – 2015-04-04 21:34:59

+0

我不能runBlock与类型的参数()当我把spawnColumn或游戏场景没有一个名为spawnColumn() – 2015-04-04 22:04:47

+0

成员我把spawnColumn函数内的gamescene和它跑但它不会产生任何东西 – 2015-04-04 22:27:54