Быстрый синтаксис удаление изображения с помощью UITouch
Это в основном код, который я пытаюсь порождать изображениями или врагами, и я хочу удалить их, но не все сразу, касаясь только одного из тех же изображений, которые были затронуты. Изображение тоже движется в случае, если кому-то нужно знать.
import SpriteKit
import UIKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
let myLabel = SKLabelNode(fontNamed:"chalkduster ")
myLabel.text = "HELLO WORLD"
myLabel.fontsize = 45
myLabel.position = CGPoint(x:CGRectGetMidx(self.frame), y:CGRectGetMidy(self.frame))
self.addChild(myLabel)
}
func SpawnEnemies(){
let Enemy = SKSpriteNode(imageNamed: "Enemy.png")
let MinValue = self.size.width /8
let MaxValue = self.size.width -158
let spawnPoint = UInt32(MaxValue- MinValue)
Enemy.runAction(SKAction.sequence([action, actionDone]))
self.addChild(Enemy)
}
func touchesEnded(touches: NSSet, withEvent event: UIEvent?) {
for touch in touches {
_ = touch.locationInNode(self)
let touch = touches.anyobject() as! UITouch?
if let location = touch?.locationInNode(self)
{
for _ in self.nodeAtPoint(location)
{
if let Enemy.name == (name., "SpawnEnemies" {
Enemy.removeFromParent()
}
}
}
}
}
func update(currentTime: CFTimeInterval) {
}
1 ответ
Обычно использование заглавных букв в названии свойств считается плохим отношением, вместо врага следует использовать врага
Попробуйте этот подход:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
/* Called when a touch begins */
let touch = touches.first
let positionInScene = touch!.locationInNode(self)
let touchedNode = self.nodeAtPoint(positionInScene)
if let name = touchedNode.name
{
if name == "SpawnEnemies1" { // try to get a different name for each of your enemy
Enemy.removeFromParent()
} else
if name == "SpawnEnemies666" { // this is the big boss
// do some awesome animation..
Enemy.removeFromParent()
} else
if name == "title"
{
print("title touched")
// do whatever you want with title, removing or using it
} else
if name == "credits"
{
print("credits touched")
} else
...
}
}