2016-11-10 10 views
1

私はXcode/Swiftを数週間使用しています。私は現在、初めての小さなiOSゲームに取り組んでいます。プログラムを学び、楽しいことをしようとするだけの厄介なことはありません。これは私の問題につながります...設定された時間に関数を繰り返します。間隔

...私は本質的に私のアプリでは、(配列の値のセットから)ランダムに変更するバックグラウンドイメージが欲しいです。たとえば、「2秒ごとに背景画像が変化します。」

これまでのところ、NSTimerについていくつかのことを見てきましたが、すでに持っているものを実装する方法はあまりよく分かりません。

@IBOutlet weak var backview: UIImageView! 

let BackNames = ["Back 1", "Back 2", "Back 3", "Back 4", "Back 5", "Back 6", "Back 7"] 

let BackValue = Int(arc4random_uniform(7)) 

backview.image = UIImage (named: BackNames [BackValue]) 

私が言ったように、私はバックグラウンドのランダムな値を選択する方法を知っていますが、ボタンをタップすると発生します。私のarc4randomに時間フィーチャーを組み込む方法が不思議です。

ありがとう!

答えて

1

画像のアニメーションのためにこれを試してください:

var imgListArray :NSMutableArray = ["Back 1", "Back 2", "Back 3", "Back 4", "Back 5", "Back 6", "Back 7"] 
for countValue in 1...7 
    { 

     var strImageName : String = "Back \(countValue).png" 
     var image = UIImage(named:strImageName) 
     imgListArray .addObject(image) 
    } 

    self.imageView.animationImages = imgListArray; 
    self.imageView.animationDuration = 1.0 // change as per your requirement 
    self.imageView.startAnimating() 

は参照:https://stackoverflow.com/a/24364736/3901620

+0

お返事ありがとうございます。 私はそれを行ったことがありますが、最後の3行についてはエラーが続きます "タイプ 'ViewController'の値に 'imageView'のメンバーがありません" –

+0

これはImageviewのバックビューオブジェクトですが、これの名前を変更するのを忘れてしまった。 UIviewcontrollerのメンバーではありませんが、定義が必要です。 – KKRocks

+0

すごい速い返信! 最後の3行の "imageView"をバックビューに変更しましたが、この問題は修正されたようですが、新しい問題が発生しました。 ; self.imageView.animationImages = imgListArray; エラーは「値型NSMutableArrayをタイプUIImageに割り当てることができません」と言います –

1

はカラー変更機能を記述し、遅延後のセレクタを実行する機能を使用します。

func ChangeColor() { 
    BackValue = Int(arc4random_uniform(7)) 

    backview.image = UIImage (named: BackNames [BackValue]) 

    self.perform(#selector(ChangeColor), with: nil, afterDelay: 2.0) 
} 

セレクタ使用

self.classForCoder.cancelPreviousPerformRequests(withTarget: self) 
+0

返信ありがとうございます!しかし、私はこれを読んだだけで、それぞれの行が何を言っているのか理解できたと思っていました... エラーメッセージ "#セレクタはローカル関数を参照できません。 –

0

Objective-Cで中止します。

[NSTimer scheduledTimerWithTimeInterval:2.0 
    target:self 
    selector:@selector(timerCalled:) 
    userInfo:nil 
    repeats:YES]; 

-(void)timerCalled 
{ 
    [UIView transitionWithView:textFieldimageView 
        duration:0.2f 
        options:UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 
        imageView.image = newImage; 
       } completion:nil]; 
} 
関連する問題