Swift SKAction.runBlock按顺序运行时出现故障
我有几个运行块需要按顺序运行,但发现它们即使在使用SKAction.sequence([action1,action2,action3])时仍然同时运行。任何帮助都将不胜感激 下面是我的代码示例:Swift SKAction.runBlock按顺序运行时出现故障,swift,skaction,Swift,Skaction,我有几个运行块需要按顺序运行,但发现它们即使在使用SKAction.sequence([action1,action2,action3])时仍然同时运行。任何帮助都将不胜感激 下面是我的代码示例: func SetupText() { let wait = SKAction.waitForDuration(2.0) var Label1 = SKLabelNode() Label1.fontColor = UIColor.whiteColor() Label1
func SetupText() {
let wait = SKAction.waitForDuration(2.0)
var Label1 = SKLabelNode()
Label1.fontColor = UIColor.whiteColor()
Label1.position = CGPointMake(self.size.width / 2.3, self.size.height / 1.4)
Label1.text = "blah1"
self.addChild(Label1)
scrollLabel1 = SKAction.runBlock({
self.runSomeCode(Label1)
})
var Label2 = SKLabelNode()
Label2.fontColor = UIColor.whiteColor()
Label2.position = CGPointMake(self.size.width / 2.5, self.size.height * 0.6)
Label2.text = "blah2"
self.addChild(Label2)
scrollLabel2 = SKAction.runBlock({
self.runSomeCode(Label2)
})
var Label3 = SKLabelNode()
Label3.fontColor = UIColor.whiteColor()
Label3.position = CGPointMake(self.size.width / 2.5, self.size.height * 0.5)
Label3.text = "blah3"
self.addChild(Label3)
scrollLabel3 = SKAction.runBlock({
self.runSomeCode(Label3)
})
var Label4 = SKLabelNode()
Label4.fontColor = UIColor.whiteColor()
Label4.position = CGPointMake(self.size.width / 2.5, self.size.height * 0.4)
Label4.text = "blah4"
self.addChild(Label4)
scrollLabel4 = SKAction.runBlock({
self.runSomeCode(Label4)
})
var Label5 = SKLabelNode()
Label5.fontSize = 20
Label5.fontName = "LiquidCrystal-Regular"
Label5.fontColor = UIColor.whiteColor()
Label5.position = CGPointMake(self.size.width / 2.5, self.size.height * 0.3)
Label5.text = "blah5"
self.addChild(Label5)
scrollLabel5 = SKAction.runBlock({
self.runSomeCode(Label5)
})
var actions = Array<SKAction>()
actions.append(wait)
actions.append(scrollLabel1)
actions.append(scrollLabel2)
actions.append(scrollLabel3)
actions.append(scrollLabel4)
actions.append(scrollLabel5)
let sequence = SKAction.sequence(actions)
self.runAction(sequence)
}
func SetupText(){
let wait=SKAction.waitForDuration(2.0)
var Label1=SKLabelNode()
Label1.fontColor=UIColor.whiteColor()
Label1.position=CGPointMake(self.size.width/2.3,self.size.height/1.4)
Label1.text=“blah1”
self.addChild(标签1)
scrollLabel1=SKAction.runBlock({
self.runSomeCode(Label1)
})
var Label2=SKLabelNode()
Label2.fontColor=UIColor.whiteColor()
Label2.position=CGPointMake(self.size.width/2.5,self.size.height*0.6)
Label2.text=“blah2”
self.addChild(标签2)
scrollLabel2=SKAction.runBlock({
self.runSomeCode(Label2)
})
var Label3=SKLabelNode()
Label3.fontColor=UIColor.whiteColor()
Label3.position=CGPointMake(self.size.width/2.5,self.size.height*0.5)
Label3.text=“blah3”
self.addChild(标签3)
scrollLabel3=SKAction.runBlock({
self.runSomeCode(Label3)
})
var Label4=SKLabelNode()
Label4.fontColor=UIColor.whiteColor()
Label4.position=CGPointMake(self.size.width/2.5,self.size.height*0.4)
Label4.text=“blah4”
self.addChild(标签4)
scrollLabel4=SKAction.runBlock({
self.runSomeCode(Label4)
})
var Label5=SKLabelNode()
Label5.fontSize=20
Label5.fontName=“液晶常规”
Label5.fontColor=UIColor.whiteColor()
Label5.position=CGPointMake(self.size.width/2.5,self.size.height*0.3)
Label5.text=“blah5”
self.addChild(标签5)
scrollLabel5=SKAction.runBlock({
self.runSomeCode(Label5)
})
var actions=Array()
actions.append(等待)
actions.append(scrollLabel1)
actions.append(scrollLabel2)
actions.append(scrollLabel3)
actions.append(scrollLabel4)
actions.append(scrollLabel5)
让序列=SKAction.sequence(动作)
self.runAction(序列)
}
实际上似乎与操作无关,但与运行块有关。运行块的操作可能比序列花费更长的时间,这意味着您的序列看起来是并发的。使用常规操作而不是操作块需要解决您的问题。实际上,似乎与操作无关,但与运行块有关。运行块的操作可能比序列花费更长的时间,这意味着您的序列看起来是并发的。使用常规动作而不是动作块需要解决您的问题。我认为常规动作无法完成我的自定义标签动画。有没有同步运行这些块的方法?您可以对命名操作使用performSelector,并使用完成处理程序调用下一个操作。这会产生相同的结果,除非我做错了什么。我创建了一个名为scrollText()的函数来设置操作,并在选择器self.runAction(scrollLabel1,completion:{self.runAction(self.scrollLabel2)}的完成处理程序中调用后续操作,然后在我的performSelector中调用它,就像这个performSelector(self.scrollText()),withObject:self,afterDelay:2.0)我不认为常规操作将完成我的自定义标签动画。有没有同步运行这些块的方法?您可以对命名操作使用performSelector,并使用完成处理程序调用下一个操作。这会产生相同的结果,除非我做错了什么。我创建了一个名为scrollText()的函数来设置操作,并在选择器self.runAction(scrollLabel1,completion:{self.runAction(self.scrollLabel2)}的完成处理程序中调用后续操作,然后在我的performSelector中调用它,就像这个performSelector(self.scrollText()),withObject:self,afterDelay:2.0)