Ios 如何用定时器显示图像
我想显示图像3.0秒,并将在3秒后关闭 我写的代码可以做到这一点,但它不适合我,我想知道为什么,我的问题是否有解决方案 主场景:Ios 如何用定时器显示图像,ios,swift,Ios,Swift,我想显示图像3.0秒,并将在3秒后关闭 我写的代码可以做到这一点,但它不适合我,我想知道为什么,我的问题是否有解决方案 主场景: var myTimer: NSTimer? var imageView: UIImageView? var IsShowing = false override func didMoveToView(view: SKView) { let defaults = NSUserDefaults.standardUse
var myTimer: NSTimer?
var imageView: UIImageView?
var IsShowing = false
override func didMoveToView(view: SKView) {
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.stringForKey("isAppAlreadyLaunchedOnce") != nil{
print("App already launched")
//Do Somthing
} else {
defaults.setBool(true, forKey: "isAppAlreadyLaunchedOnce")
myTimer = NSTimer.scheduledTimerWithTimeInterval(
3.0, target: self, selector: #selector(MainScene.SetImage), userInfo: nil, repeats: false)
backgroundImage.hidden = false
print("App First launched")
}
backgroundImage = SKSpriteNode(imageNamed: "Image")
backgroundImage.position = CGPointMake(self.size.width/2, self.size.height/2)
backgroundImage.size = CGSizeMake(self.size.width, 580)
addChild(backgroundImage)
}
func SetImage() {
backgroundImage = SKSpriteNode(imageNamed: "Image")
backgroundImage.position = CGPointMake(self.size.width/2, self.size.height/2)
backgroundImage.size = CGSizeMake(self.size.width, 580)
addChild(backgroundImage)
if IsShowing == true {
backgroundImage.hidden = false
}else {
backgroundImage.hidden = true
}
}
要启动计时器,您需要
myTimer.fire()
,但也需要self.performSelectorAfterDelay
override func didMoveToView(view: SKView) {
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.stringForKey("isAppAlreadyLaunchedOnce") != nil{
print("App already launched")
}
else {
backgroundImage = SKSpriteNode(imageNamed: "Image")
backgroundImage.position = CGPointMake(self.size.width/2, self.size.height/2)
backgroundImage.size = CGSizeMake(self.size.width, 580)
addChild(backgroundImage)
defaults.setBool(true, forKey: "isAppAlreadyLaunchedOnce")
self.performSelector(#selector(MainScene.hideImage), withObject: nil, afterDelay: 3.0)
print("App First launched")
}
}
func hideImage() {
backgroundImage.hidden = true
}
或者使用当前版本
override func didMoveToView(view: SKView) {
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.stringForKey("isAppAlreadyLaunchedOnce") != nil{
print("App already launched")
//Do Somthing
} else {
defaults.setBool(true, forKey: "isAppAlreadyLaunchedOnce")
myTimer = NSTimer.scheduledTimerWithTimeInterval(
3.0, target: self, selector: #selector(MainScene.SetImage), userInfo: nil, repeats: false)
myTimer.fire() // <----- Add this
backgroundImage.hidden = false // this probably does nothing
print("App First launched")
}
backgroundImage = SKSpriteNode(imageNamed: "Image")
backgroundImage.position = CGPointMake(self.size.width/2, self.size.height/2)
backgroundImage.size = CGSizeMake(self.size.width, 580)
addChild(backgroundImage)
backgroundImage.hidden = true // seems to hide the image as soon as it's created
}
覆盖func didMoveToView(视图:SKView){
让defaults=NSUserDefaults.standardUserDefaults()
如果默认值为.stringForKey(“IsAppalReadyLancedonce”)!=nil{
打印(“应用程序已启动”)
//干坏事
}否则{
defaults.setBool(true,forKey:“IsAppalReadyLancedonce”)
myTimer=NSTimer.scheduledTimerWithTimeInterval(
3.0,目标:self,选择器:#选择器(mainsecene.SetImage),userInfo:nil,repeats:false)
myTimer.fire()//要启动计时器,您需要myTimer.fire()
但也需要self.performSelectorAfterDelay
在这种情况下可以工作
override func didMoveToView(view: SKView) {
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.stringForKey("isAppAlreadyLaunchedOnce") != nil{
print("App already launched")
}
else {
backgroundImage = SKSpriteNode(imageNamed: "Image")
backgroundImage.position = CGPointMake(self.size.width/2, self.size.height/2)
backgroundImage.size = CGSizeMake(self.size.width, 580)
addChild(backgroundImage)
defaults.setBool(true, forKey: "isAppAlreadyLaunchedOnce")
self.performSelector(#selector(MainScene.hideImage), withObject: nil, afterDelay: 3.0)
print("App First launched")
}
}
func hideImage() {
backgroundImage.hidden = true
}
或者使用当前版本
override func didMoveToView(view: SKView) {
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.stringForKey("isAppAlreadyLaunchedOnce") != nil{
print("App already launched")
//Do Somthing
} else {
defaults.setBool(true, forKey: "isAppAlreadyLaunchedOnce")
myTimer = NSTimer.scheduledTimerWithTimeInterval(
3.0, target: self, selector: #selector(MainScene.SetImage), userInfo: nil, repeats: false)
myTimer.fire() // <----- Add this
backgroundImage.hidden = false // this probably does nothing
print("App First launched")
}
backgroundImage = SKSpriteNode(imageNamed: "Image")
backgroundImage.position = CGPointMake(self.size.width/2, self.size.height/2)
backgroundImage.size = CGSizeMake(self.size.width, 580)
addChild(backgroundImage)
backgroundImage.hidden = true // seems to hide the image as soon as it's created
}
覆盖func didMoveToView(视图:SKView){
让defaults=NSUserDefaults.standardUserDefaults()
如果默认值为.stringForKey(“IsAppalReadyLancedonce”)!=nil{
打印(“应用程序已启动”)
//干坏事
}否则{
defaults.setBool(true,forKey:“IsAppalReadyLancedonce”)
myTimer=NSTimer.scheduledTimerWithTimeInterval(
3.0,目标:self,选择器:#选择器(mainsecene.SetImage),userInfo:nil,repeats:false)
myTimer.fire()//您不需要定时器,这可以通过简单的GCD调用实现
override func didMoveToView(view: SKView) {
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.stringForKey("isAppAlreadyLaunchedOnce") == nil {
defaults.setBool(true, forKey: "isAppAlreadyLaunchedOnce")
displayBackgroundImageForSeconds(3)
print("App First launched")
}
}
func displayBackgroundImageForSeconds(seconds: Int) {
backgroundImage = SKSpriteNode(imageNamed: "Image")
backgroundImage.position = CGPointMake(self.size.width/2, self.size.height/2)
backgroundImage.size = CGSizeMake(self.size.width, 580)
addChild(backgroundImage)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(seconds) * Int64(NSEC_PER_SEC))
dispatch_after(time, dispatch_get_main_queue(), { backgroundImage.hidden = true })
}
你不需要定时器,这可以通过简单的GCD调用来实现
override func didMoveToView(view: SKView) {
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.stringForKey("isAppAlreadyLaunchedOnce") == nil {
defaults.setBool(true, forKey: "isAppAlreadyLaunchedOnce")
displayBackgroundImageForSeconds(3)
print("App First launched")
}
}
func displayBackgroundImageForSeconds(seconds: Int) {
backgroundImage = SKSpriteNode(imageNamed: "Image")
backgroundImage.position = CGPointMake(self.size.width/2, self.size.height/2)
backgroundImage.size = CGSizeMake(self.size.width, 580)
addChild(backgroundImage)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(seconds) * Int64(NSEC_PER_SEC))
dispatch_after(time, dispatch_get_main_queue(), { backgroundImage.hidden = true })
}
图像没有显示你到底想实现什么?你是否总是显示图像,但如果不是第一次自动隐藏它?或者你的逻辑是什么?@ogres我尝试在应用程序第一次打开3秒钟时查看图像,然后图像会自动消失。如果不是,图像会出现吗第一次?图像没有显示你到底想实现什么?你总是显示图像,但如果不是第一次自动隐藏它?或者你的逻辑是什么?@ogres我尝试在应用程序第一次打开3秒钟后查看图像,然后图像会自动消失。图像会出现吗ar如果这不是第一次?你是什么意思?我的代码现在不工作。我无法显示我的图像。在这种情况下,你可能会遇到与计时器无关的另一个问题。请参阅代码中的注释。你的意思是什么?我的代码现在不工作。我无法显示我的图像。在这种情况下,你可能会遇到与计时器无关的另一个问题。请参阅代码中的注释E