首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在3秒内调用spritekit中的自定义操作大约100次

在3秒内调用spritekit中的自定义操作大约100次
EN

Stack Overflow用户
提问于 2016-07-19 22:35:56
回答 3查看 902关注 0票数 1

我用过

SKAction.customActionWithDuration(1, actionBlock: { (node: SKNode!, elapsedTime: CGFloat) -> Void in print("Hello")})

而且它在1秒内只运行了5次。当我切换到0.5秒时,它只运行了3次。

我想在3-4秒内运行100-200次。

有什么解决方案吗?

EN

回答 3

Stack Overflow用户

发布于 2016-07-20 00:50:29

customActionWithDuration每帧更新一次,如果它在1秒内运行5次,这意味着您的更新发生在200ms,您有其他问题。理想情况下,您希望它每隔16.6ms或每秒60帧调用一次,因此请调查您的更新阶段,找出导致速度减慢的原因。如果您在模拟器上运行,请确保模拟器以60fps的速度运行。

如果你需要一些一致性的东西,那么customActionWithDuration不适合你。

您可能需要使用repeatAction(action:,count:)来实现您想要的功能。

票数 1
EN

Stack Overflow用户

发布于 2016-07-20 00:14:10

我不确定SKAction的速度限制是什么,但你可以试试这个:

代码语言:javascript
复制
let waitAction = SKAction.waitForDuration(0.03) //0.03 is 100 times in 3 seconds
let blockAction = SKAction.runBlock({(node: SKNode!, elapsedTime: CGFloat) -> Void in print("Hello")}) 

let actionSequence = SKAction.sequence([waitAction, blockAction])

self.runAction(actionsSequence)
票数 0
EN

Stack Overflow用户

发布于 2016-07-20 01:00:39

根据消息来源:

代码语言:javascript
复制
/** Creates an action that executes a block over a duration
     @param duration The duration of the animation
     @param actionBlock The block to run. The block takes the following parameters:
     node The node on which the action is running.
     elapsedTime The amount of time that has passed in the animation.
     */
    public class func customActionWithDuration(seconds: NSTimeInterval, actionBlock block: (SKNode, CGFloat) -> Void) -> SKAction

您可以尝试执行以下操作:

代码语言:javascript
复制
let duration:NSTimeInterval = 3.0
let action = SKAction.customActionWithDuration(duration, actionBlock: { (node: SKNode!, elapsedTime: CGFloat) -> Void in
    let t = Int((elapsedTime/CGFloat(duration))*100)
    print("\(t)hello")
})
self.runAction(action)

输出

继续计数器,直到达到100

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38461544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档