我有一些对象SKSprite,当触摸它时我运行SKAction(比例和颜色)当我们触摸所有好的精灵(集团)我想要运行另一个动作“取消选择所有集团” 为此,我在每个sksprite上运行一个动作比例和颜色(转到原始颜色),但我看到奇怪的效果,动作没有排队 一些集团不会回到原来的大小,这意味着规模没有完成。 我无法理解为什么,我可以同时运行所有动作,因为触摸精灵时会产生初始比例和颜色,并且在选择最后一个精灵后取消选择所有精灵 不确定我有好的解释吗?
在GameBloc类(又名SKSprite)上运行的代码
class GameBloc : SKSpriteNode
GameBloc类中的动画函数
func animateBloc()
{
let withDuration:Double = Constants.UI.C_0101100_GAMEPLAY_ANIMATION_DURATION
let initialBlocScale:CGFloat = self.xScale
let initialFontScale:CGFloat = self.label!.xScale
let scaleBlocLessAction = SKAction.scale(to: (initialBlocScale * 0.85) , duration: (withDuration/2.0))
let scaleBlocNormalAction = SKAction.scale(to: initialBlocScale , duration: (withDuration/2.0))
let scaleLabelLessAction = SKAction.scale(to: (initialFontScale * 0.85) , duration: (withDuration/2.0))
let scaleLabelNormalAction = SKAction.scale(to: initialFontScale , duration: (withDuration/2.0))
var blocColor:Int = Constants.UI.C_0101100_COLOR_BLOC_SELECTED
var labelColor:Int = Constants.UI.C_0101100_COLOR_BLOC_SELECTED_LABEL
// coloration en fonction du select ou unselect, le reste est identique
if(self.selected==false)
{
blocColor = Constants.UI.C_0101100_COLOR_MEDIUMGRAY
labelColor = Constants.UI.C_0101100_COLOR_BLOC_LABEL
}
let colorBlocAction = SKAction.colorize(with: Constants.UI.colorsArray[self.appDelegate.theme][blocColor], colorBlendFactor: 1, duration: withDuration)
let colorLabelAction = self.changeColorForLabelNode(toColor: Constants.UI.colorsArray[self.appDelegate.theme][labelColor],withDuration: withDuration)
// animation de coloration
self.run(SKAction.group([SKAction.sequence([scaleBlocLessAction, scaleBlocNormalAction]), colorBlocAction]))
self.label?.run(SKAction.group([SKAction.sequence([scaleLabelLessAction, scaleLabelNormalAction]), colorLabelAction]))
}
以及如何取消选择所有集团 这是在GameScene中调用
func unSelectAllBlocs()
{
// on va deselectionner tous les blocs actuellement selectionne
for index:Int in stride(from: 0, to: blocSelectedArray.count, by: 1)
{
// on deselectionne les blocs
print("** Unselect bloc at index=\(blocSelectedArray[index])")
blocArray[blocSelectedArray[index]].selected = false
// on va creer le tableau de SKAction
blocArray[blocSelectedArray[index]].animateBloc()
}
// vider le tableau des blocs selectionne
blocSelectedArray.removeAll()
// on reinitialise le nombre calculé
numberComputed = 0
}
我的意思是追加是在最后一次SKAction运行未完成后的未选择开始 我的问题是我必须要做的是等待所有GameBloc的所有操作都完成后再运行其他新的SKAction。
此致 对不起,第一封不完整的帖子。