2016-11-15 5 views
0

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

Ниже приведена моя функция внутри штрихов, когда при выборе SKSpriteNode она задает текстуру выбранному изображению «1-выбранный». Скажем, символ 1 был нажат. Мне нужно указать Character 2,3,4, x, чтобы установить изображение на «1-not-selected».

 if Character1.contains(location) { 

      Character1.texture = SKTexture(imageNamed: "1-selected") 
      run(ButtonPressed) 

     } 

     if Character2.contains(location) { 

      Character2.texture = SKTexture(imageNamed: "2-selected") 
      run(ButtonPressed) 

     }` 
+0

Вам понадобится какая-то коллекция всех ваших спрайтов (т.е. массив), которые вы пройдете, и установите изображение равным ни одному для каждого спрайта. –

ответ

0

Один из способов сделать это было бы, чтобы все спрайты в наборе или массива, как только кто-то нажал на эту кнопку, перебирать этот массив и выполнить действие, которое требуется для каждого спрайта, отфильтровывая тот, который был просто тронут. Это также означает, что вы должны позаботиться о добавлении и удалении этих спрайтов из массива, как только ваша игра будет завершена, чтобы не сохранить эту память.

var mySpriteArray = [Sprite1, Sprite2, Sprite3] 

if Character1.contains(location) { 

     Character1.texture = SKTexture(imageNamed: "1-selected") 
     for loopSprite in mySpirteArray{ 
     if (loopSprite != Character1){ 
loopSprite.texture = "1-not-selected.png" 
} 

     }} 

Вы могли бы даже расширить это так, что вы делаете для цикла для каждого персонажа и посмотреть, если он содержит ваше местоположение, так что вы не должны делать, если заявление для каждого символа (т.е. если character1.contains (местоположение), если char2, если char3 и т. д.).

+0

Спасибо, я попробую посмотреть, что получится –

+0

Thats great and works how у каждого персонажа нет другого выбранного изображения. Итак, у 1 будет 1-не-выбранный, а 2 - 2-не-выбранный. Любые идеи по этому поводу? –

+0

Каждый SKSpriteNode имеет переменную имени, задает переменные имени на каждом из них, когда вы сначала их инициализируете, а затем передаете это как строку при настройке текстуры. Так что это будет что-то вроде ... loopSprite.texture = "\ (loopSprite.name) -not-selected.png". Вы должны попробовать распечатать это на консоли, если вы получаете неожиданные результаты – DreamerNo56