Ios 防止用户更改标签-spriteKit
我有一个标签,每5秒取一个不同的值(字符串值:“蓝色”、“粉色”、“绿色”、“橙色”) 我想警告用户,标签将在1秒前更改。 例如,标签的背景色应在标签获取另一个值前1秒为红色 每5秒调用颜色更改函数的代码Ios 防止用户更改标签-spriteKit,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我有一个标签,每5秒取一个不同的值(字符串值:“蓝色”、“粉色”、“绿色”、“橙色”) 我想警告用户,标签将在1秒前更改。 例如,标签的背景色应在标签获取另一个值前1秒为红色 每5秒调用颜色更改函数的代码 let timerFunc: NSTimer = NSTimer.scheduledTimerWithTimeInterval(5.0, target: self, selector: Selector("colorChange"), userInfo: nil, repeats: true)
let timerFunc: NSTimer = NSTimer.scheduledTimerWithTimeInterval(5.0, target: self, selector: Selector("colorChange"), userInfo: nil, repeats: true)
随机更改标签值的代码
func colorChange() {
let minRandomValue: UInt = 0
let maxRandomValue: UInt = 4
var numberRandom: UInt = UInt()
numberRandom = UInt(arc4random()) % (maxRandomValue - minRandomValue)
switch numberRandom {
case 0: couleur.text = "Blue";
case 1: couleur.text = "Green";
case 2: couleur.text = "Orange";
case 3: couleur.text = "Pink";
default: println("value problem")
}
}
稍后,我将随机设置5秒计时器延迟。非常感谢。Xcode 6.4,SDK 8.0将计时器间隔更改为1.0,以便每秒调用一次
couleurChange
方法。在couleurChange
方法中,使用计数器跟踪时间。当计数器达到4时,更改标签的背景色。当计数器达到5时
- 更改标签的文本
- 将背景颜色恢复为正常值
- 将计数器设置回0
let changeColorWaitChangeBackground = SKAction.sequence([
SKAction.runBlock(self.changeColor),
SKAction.waitForDuration(4, withRange:2),
SKAction.runBlock(self.changeAlpha),
SKAction.waitForDuration(1),
])
在changeColor()中,设置颜色字符串并将红色SKSpriteNode的alpha设置为0.0
在changeAlpha()中,将红色SKSpriteNode的alpha设置为1.0。您有什么问题?此代码有效,我想问如何在标签更改其值前1秒将标签背景设置为红色。我不知道如何开始编码这个设置另一个延迟4.0秒的计时器,或者如果它是随机的,randomValue-1你解决了这个问题吗?是的,我用两个计时器解决了它,请重复false。感谢您的帮助为什么在没有完成实际工作的情况下调用函数3次?两个独立的计时器,一个4秒和一个5秒更干净…没有工作完成意味着没有处理器周期浪费。对于两个计时器,计时器必须是不重复的,这意味着不断地重新安排它们,而且imo比仅仅几个额外的计时器回调调用更糟糕。谢谢你们,我会尝试的。顺便问一下,是否有任何属性可以更改SKLabelNode的背景色?或者我需要创建另一个精灵?@user3722523我想你需要在标签后面放一个SKShapeNode来给它一个背景。足够公平了@user3386109。。。不过,在进行小型性能优化之前,我几乎总是更喜欢可读性。但无论什么能让你的船漂浮。用户3722523,我们的两种解决方案都适用于您。我的解决方案提供更精确的计时,以防您需要1.32秒的警告。