2015-04-13 4 views
0

Итак, у меня есть 4 изображения, и они названы в последовательности «colour1.jpg», colour2.jpg, 'colour3.jpg', 'colour4.jpg'. Каждое из этих изображений будет действовать как фоновое изображение кнопки.Создайте новое изображение при нажатии кнопки в Swift AppleWatch

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

Я использую arc4random_uniform для рандомизации изображений. Но на данный момент это не работает, если пользователь нажимает одну из кнопок, выбирается случайное изображение, но оно одинаково для всех 4 кнопок. и тогда он никогда не изменится с этого образа. то есть. если вы нажмете ту же или другую кнопку, ничего не произойдет. Он просто остается на предыдущем изображении.

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

class InterfaceController: WKInterfaceController { 

    @IBOutlet var blueColour: WKInterfaceButton! 
    @IBOutlet var pinkColour: WKInterfaceButton! 
    @IBOutlet var greenColour: WKInterfaceButton! 
    @IBOutlet var yellowColour: WKInterfaceButton! 


    var randomImageA1 = arc4random_uniform(4) 
    var randomImageA2 = arc4random_uniform(4) 
    var randomImageA3 = arc4random_uniform(4) 
    var randomImageA4 = arc4random_uniform(4) 

    var randomImageB1 = arc4random_uniform(4) 
    var randomImageB2 = arc4random_uniform(4) 
    var randomImageB3 = arc4random_uniform(4) 
    var randomImageB4 = arc4random_uniform(4) 

    var randomImageC1 = arc4random_uniform(4) 
    var randomImageC2 = arc4random_uniform(4) 
    var randomImageC3 = arc4random_uniform(4) 
    var randomImageC4 = arc4random_uniform(4) 

    var randomImageD1 = arc4random_uniform(4) 
    var randomImageD2 = arc4random_uniform(4) 
    var randomImageD3 = arc4random_uniform(4) 
    var randomImageD4 = arc4random_uniform(4) 

    @IBAction func onePressed() { 

     blueColour.setBackgroundImageNamed("colour\(randomImageA1).jpg") 
     pinkColour.setBackgroundImageNamed("colour\(randomImageA2).jpg") 
     greenColour.setBackgroundImageNamed("colour\(randomImageA3).jpg") 
     yellowColour.setBackgroundImageNamed("colour\(randomImageA4).jpg") 

    } 

    @IBAction func twoPressed() { 

     blueColour.setBackgroundImageNamed("colour\(randomImageB1).jpg") 
     pinkColour.setBackgroundImageNamed("colour\(randomImageB2).jpg") 
     greenColour.setBackgroundImageNamed("colour\(randomImageB3).jpg") 
     yellowColour.setBackgroundImageNamed("colour\(randomImageB4).jpg") 

    } 

    @IBAction func threePressed() { 

     blueColour.setBackgroundImageNamed("colour\(randomImageC1).jpg") 
     pinkColour.setBackgroundImageNamed("colour\(randomImageC2).jpg") 
     greenColour.setBackgroundImageNamed("colour\(randomImageC3).jpg") 
     yellowColour.setBackgroundImageNamed("colour\(randomImageC4).jpg") 

    } 

    @IBAction func fourPressed() { 

     blueColour.setBackgroundImageNamed("colour\(randomImageD1).jpg") 
     pinkColour.setBackgroundImageNamed("colour\(randomImageD2).jpg") 
     greenColour.setBackgroundImageNamed("colour\(randomImageD3).jpg") 
     yellowColour.setBackgroundImageNamed("colour\(randomImageD4).jpg") 

    } 

ответ

0

Вы только звоните randomImage = arc4random_uniform(5) один раз. Если эта функция случайно выбирает для вас изображение, вам необходимо позвонить ему до каждого звонка до setBackgroundImage()

Ваш успех случайности также будет зависеть от того, как вы производите свое изображение в пределах randomImage = arc4random_uniform(5). Трудно сказать, будет ли это всегда возвращать то же изображение или нет, не видя вашей реализации случайности.

Пример:

@IBOutlet var blueColour: WKInterfaceButton! 
@IBOutlet var pinkColour: WKInterfaceButton! 
@IBOutlet var greenColour: WKInterfaceButton! 
@IBOutlet var yellowColour: WKInterfaceButton! 


var randomImage 

@IBAction func onePressed() { 
    randomImage = arc4random_uniform(4) 
    blueColour.setBackgroundImageNamed("colour\(randomImage).jpg") 
    randomImage = arc4random_uniform(4) 
    pinkColour.setBackgroundImageNamed("colour\(randomImage).jpg") 
    randomImage = arc4random_uniform(4) 
    greenColour.setBackgroundImageNamed("colour\(randomImage).jpg") 
    randomImage = arc4random_uniform(4) 
    yellowColour.setBackgroundImageNamed("colour\(randomImage).jpg") 

} 
+0

Спасибо @ Mike - Так я обновил свой код, указанный выше. Я добавил генераторы arc4random_uniform для каждого изображения. Теперь они создают фон изображения для каждой кнопки на экране. Является ли код выше правильно, что я сделал? Мне просто кажется, что мне нужно много времени. Есть ли другой/более легкий/лучший способ, которым я мог бы написать это? Кроме того, с ним все еще есть странное поведение. Если я нажмю кнопку blueColour, чтобы сгенерировать все случайные изображения, если я затем снова нажму на нее, изображения не будут меняться ни для одной кнопки, я должен нажать другую кнопку. Вы знаете, почему это так? спасибо – Nick89

+0

Я обновил, чтобы привести пример. Вы сталкиваетесь с проблемой с переменным охватом. В общем случае присваивания, которые вы создаете вне функции, будут выполняться только один раз. Вы хотите генерировать случайность при каждом нажатии кнопки, поэтому вызов функции должен выполняться внутри функции. – Mike

+0

Спасибо @Mike, я попробую изменить это позже и дам вам знать, как я нахожусь. Это имеет смысл в области обзора, поэтому спасибо за объяснение. – Nick89

 Смежные вопросы

  • Нет связанных вопросов^_^