gpt4 book ai didi

swift - 问题是按顺序触发特定的 SKAction

转载 作者:行者123 更新时间:2023-11-28 08:44:10 25 4
gpt4 key购买 nike

我确定这是一个线程问题,但我无法弄清楚。我想让 Sprite 淡出并重新出现在其他地方。我可以让它以一种方式工作,但不能以另一种方式工作(见下文)我想要的顺序是:

fade, x, y, z  (all are SKActions)

我的一个类提供了动画中 warp 的实现细节(遵循我创建的 Warpable 协议(protocol))

protocol Warpable
{
func warpOutAnimation() -> SKAction
}

//and then elsewhere, in my actual class:
func warpOutAnimation() -> SKAction
{
return SKAction.fadeInWithDuration(1.0)
}

所以这是我在游戏中的顺序:

 myNode.runAction(SKAction.sequence([SKAction.fadeInWithDuration(1.0), x, y, z]))

这运行得很好。一切都很好。

现在,如果我想从类中获取 warp 实现(因为这是我拥有的工厂类的动态实现):

 myNode.runAction(SKAction.sequence([
(self.currentMonster as! Warpable).warpOutAnimation(), x, y, z]))

此序列执行 warpOutAnimation(尽管它返回 SKAction)但它仍然触发 x、y、z。

currentMonster 是根据我游戏中的某些上下文从工厂实例化的。我在那里有一个断点,它确实触发了协议(protocol)的功能,但 SKAction 没有运行。

知道为什么会发生这种情况吗?即使我将 warp 函数放在我进行排序的正上方,它也不会做任何事情。非常感谢。

最佳答案

根据文档,fadeInWithDuration操作将节点的 alpha 属性从其当前值更改为 1.0。

如果节点的 alpha 值已经是 1.0,则此操作无效,这可能是您的问题。

您可能想要的是使用 fadeOutWithDuration , 使节点消失,然后再尝试使用 fadeInWithDuration 方法使其重新出现。

因此,如果要应用淡入操作,请确保 myNode 的 alpha < 1.0。

关于swift - 问题是按顺序触发特定的 SKAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35736168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com