Добавление радарных бликов к радарному GIF - PullRequest
0 голосов
/ 30 января 2020

Это огромная проблема для меня, так как это мое первое приложение без учебника, но вот что я пытаюсь сделать:

Я создал приложение под названием Paranormal Radar с генератором случайных слов и GIF, который я сделал из экрана радара, который вращается вокруг и вокруг. Следующий шаг, который я хочу сделать, это добавить всплывающие подсказки, которые отображаются на экране радара.

I know it looks super dark, I am going to lighten it up later

Этот всплеск, видимый на изображении, является файлом png. У меня нет никакого кода для этого пока это просто stati c. Вот мои два варианта, насколько я могу судить:

Простой вариант: укажите способ отображения png случайным образом в любом месте экрана радара, задержитесь на несколько секунд, исчезните, а другой покажите несколько где еще.

Жесткая опция: создайте невидимую линию поверх GIF, которая каким-то образом следует за линией радара и добавляет блики прямо за линией - эта опция, вероятно, слишком сложна для меня на этапе, на котором я нахожусь .

На той стадии, на которой я сейчас нахожусь, я был бы рад найти способ сделать легкий вариант, так как это мое первое приложение! Потратил несколько часов, пытаясь сделать это, и попытался сделать его спрайтом, но не повезло. Буду признателен за любой совет !!

Вот мой код.

//
//  ViewController.swift
//  Paranormal Radar
//  This is a first app I made without following a straight forward tutorial.
//  This app is a novelty Apparition Communication Tool.
//  Created by Mateusz on 2020-01-08.
//  Copyright © 2020 Mateusz. All rights reserved.
//

import UIKit
import AVFoundation


class ViewController: UIViewController {
    //RADAR

    @IBOutlet var gifView: UIImageView!


    @IBOutlet weak var label: UILabel!
    var paraTimer: Timer?
    var paraTimer2: Timer?
    var paraTimer3: Timer?
    var paraTimer4: Timer?






    //Created the variables I named paraTimers.
    //Created the functions to START the three timers. Delays are not yet coded in.
    func restartTimer() {
        let randomNum = Int.random(in: 1..<10)
        paraTimer = Timer.scheduledTimer(withTimeInterval: TimeInterval(randomNum), repeats: false) { [weak self] _ in
            let array = ["Action", "Array", "Atticus", "Amber", "Adding", "Assembly", "Amityville"]
            self?.label.text = array.randomElement()
            self?.restartTimer()
        }
    }


    func restartTimer2() {
        let randomNum2 = Int.random(in: 1..<10)
        paraTimer2 = Timer.scheduledTimer(withTimeInterval: TimeInterval(randomNum2), repeats: false) { [weak self] _ in
            let array = ["Bob", "Bring", "Backyard", "Battle", "Boy", "Black", "Backstabber"]
            self?.label.text = array.randomElement()
            self?.restartTimer2()
        }
    }

    func restartTimer3() {
        let randomNum3 = Int.random(in: 1..<10)
        paraTimer3 = Timer.scheduledTimer(withTimeInterval: TimeInterval(randomNum3), repeats: false) { [weak self] _ in
            let array = ["Cornfield", "Crazy", "Criminal", "Coal", "Catacomb", "Corinthian", "Calibration"]
            self?.label.text = array.randomElement()
            self?.restartTimer3()
        }
    }

    func restartTimer4() {
        let randomNum4 = Int.random(in: 1..<10)
        paraTimer4 = Timer.scheduledTimer(withTimeInterval: TimeInterval(randomNum4), repeats: false) { [weak self] _ in
            let array = ["Dammed", "Dark", "Doreen", "Did", "Die", "Death", "Deceased", "Dim", "Dangerous", "Daniel"]
            self?.label.text = array.randomElement()
            self?.restartTimer4()
        }
    }


        // Do any additional setup after loading the view.

    //override func viewWillAppear  - learn more on these please!
    //this is the initial time the timer is being started in the UI.
    override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)



        //RADAR
        gifView.loadGif(name: "radar")




    restartTimer()

    DispatchQueue.main.asyncAfter(deadline: .now() + 30) {
        self.restartTimer2()
        //30 seconds in, the FIRST timer is killed.
        self.paraTimer?.invalidate()
        self.paraTimer = nil
    }

    DispatchQueue.main.asyncAfter(deadline: .now() + 60) {
        self.restartTimer3()
        //60 seconds in, the SECOND timer is killed.
        self.paraTimer2?.invalidate()
        self.paraTimer2 = nil
        }

    DispatchQueue.main.asyncAfter(deadline: .now() + 120) {
        self.restartTimer4()
        //120 seconds in, the THIRD timer is killed.
        self.paraTimer3?.invalidate()
        self.paraTimer3 = nil
        }






    }



    //this takes the timers away.
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        paraTimer?.invalidate()
        paraTimer = nil

        DispatchQueue.main.asyncAfter(deadline: .now() + 30) {
            self.paraTimer2?.invalidate()
            self.paraTimer2 = nil
        }

        DispatchQueue.main.asyncAfter(deadline: .now() + 60) {
            self.paraTimer3?.invalidate()
            self.paraTimer3 = nil
        }

        DispatchQueue.main.asyncAfter(deadline: .now() + 120) {
            self.paraTimer4?.invalidate()
            self.paraTimer4 = nil
        }


    }



}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...