class SKPuzzle: SKSpriteNode {
var name2:String = "";
}
< /code>
Мне нужно добавить другие переменные в skspritenode, как другое имя (имя2) в этом случае. Вот использование, которое я сделал из класса в типе класса Skscene: < /p>
class GameScene: SKScene {
let background = SKSpriteNode(imageNamed: "BW")
var selectedNode = SKPuzzle()
override init(size: CGSize) {
super.init(size: size)
let imageNames = [sheet.Puzzle13() , sheet.Puzzle19(),sheet.Puzzle30(),
sheet.Puzzle11(), sheet.Puzzle29(), sheet.Puzzle35() ]
for i in 0..
У меня есть объект Sprite из Subclass Skpuzzlezle, которая содержит новую переменную имя2. < /p>
sprite.name2 = "\(i)"
< /code>
Проблема, которая у меня есть, - это переменная SelectedNode (создан с) < /p>
var selectedNode = SKPuzzle()
< /code>
Используется позже в программе. Всегда содержит значение NIL для имени данных и name2. Когда я нажимаю на части игры, я получаю следующую ошибку: < /p>
Фактальная ошибка: неожиданно нашел ноль при развертывании необязательного значения в следующей функции: < /p>
< /blockquote>
func panForTranslation(translation : CGPoint) {
let position = selectedNode.position
if selectedNode.name! == kAnimalNodeName {
selectedNode.position = CGPoint(x: position.x + translation.x * 2, y: position.y + translation.y * 2)
}
}
< /code>
selectedNode, кажется, содержат только значения NIL. Код работает нормально, когда я просто использую skspritenode, но не удался с моим классом Skpuzzzle. < /P>
Вот весь код программы: < /p>
import SpriteKit
import UIKit
private let kAnimalNodeName = "puzzle"
private let kdancing = "dancing"
class SKPuzzle: SKSpriteNode {
var name2:String = "";
}
class GameScene: SKScene {
let background = SKSpriteNode(imageNamed: "BW")
var selectedNode = SKPuzzle()
var selectedVideo = SKVideoNode()
override init(size: CGSize) {
super.init(size: size)
// 1
self.background.name = kdancing
self.background.anchorPoint = CGPointZero
background.zPosition = 0
self.addChild(background)
//background.play()
// 2
let sheet = Statiques()
let sprite_dancing1 = SKSpriteNode(texture: sheet.Dancing1())
let sprite_dancing2 = SKSpriteNode(texture: sheet.Dancing2())
sprite_dancing1.name = kdancing
sprite_dancing2.name = kdancing
sprite_dancing1.position = CGPoint(x: 837, y: 752)
sprite_dancing1.zPosition = 1
sprite_dancing2.position = CGPoint(x: 1241, y: 752)
sprite_dancing2.zPosition = 1
background.addChild(sprite_dancing1)
background.addChild(sprite_dancing2)
let imageNames = [sheet.Puzzle13() , sheet.Puzzle19(), sheet.Puzzle30(), sheet.Puzzle11(), sheet.Puzzle29(), sheet.Puzzle35() ]
for i in 0.. CGFloat {
return CGFloat(degree / 180.0 * M_PI)
}
func selectNodeForTouch(touchLocation : CGPoint) {
// 1
let touchedNode = self.nodeAtPoint(touchLocation)
if touchedNode is SKPuzzle {
// 2
if !selectedNode.isEqual(touchedNode) {
selectedNode.removeAllActions()
selectedNode.runAction(SKAction.rotateToAngle(0.0, duration: 0.1))
//selectedNode = touchedNode as! SKSpriteNode
// 3
if touchedNode.name! == kAnimalNodeName {
let sequence = SKAction.sequence([SKAction.rotateByAngle(degToRad(-4.0), duration: 0.1),
SKAction.rotateByAngle(0.0, duration: 0.1),
SKAction.rotateByAngle(degToRad(4.0), duration: 0.1)])
selectedNode.runAction(SKAction.repeatActionForever(sequence))
}
}
}
}
func panForTranslation(translation : CGPoint) {
let position = selectedNode.position
if selectedNode.name! == kAnimalNodeName {
selectedNode.position = CGPoint(x: position.x + translation.x * 2, y: position.y + translation.y * 2)
}
}
}
Заранее спасибо за вашу помощь, я начинаю кодировать со Swift на iOS.
Для проекта игры головоломки на iOS я стараюсь подключиться к классу Skspritenode из Spritekit со следующим кодом: < /p> [code]class SKPuzzle: SKSpriteNode { var name2:String = ""; } < /code> Мне нужно добавить другие переменные в skspritenode, как другое имя (имя2) в этом случае. Вот использование, которое я сделал из класса в типе класса Skscene: < /p> class GameScene: SKScene {
let background = SKSpriteNode(imageNamed: "BW") var selectedNode = SKPuzzle()
let imageNames = [sheet.Puzzle13() , sheet.Puzzle19(),sheet.Puzzle30(), sheet.Puzzle11(), sheet.Puzzle29(), sheet.Puzzle35() ]
for i in 0.. У меня есть объект Sprite из Subclass Skpuzzlezle, которая содержит новую переменную имя2. < /p> sprite.name2 = "\(i)" < /code> Проблема, которая у меня есть, - это переменная SelectedNode (создан с) < /p> var selectedNode = SKPuzzle() < /code> Используется позже в программе. Всегда содержит значение NIL для имени данных и name2. Когда я нажимаю на части игры, я получаю следующую ошибку: < /p>
Фактальная ошибка: неожиданно нашел ноль при развертывании необязательного значения в следующей функции: < /p> < /blockquote> func panForTranslation(translation : CGPoint) {
} } < /code> selectedNode, кажется, содержат только значения NIL. Код работает нормально, когда я просто использую skspritenode, но не удался с моим классом Skpuzzzle. < /P> Вот весь код программы: < /p> import SpriteKit import UIKit
private let kAnimalNodeName = "puzzle" private let kdancing = "dancing"
class SKPuzzle: SKSpriteNode { var name2:String = ""; }
class GameScene: SKScene {
let background = SKSpriteNode(imageNamed: "BW") var selectedNode = SKPuzzle() var selectedVideo = SKVideoNode()
if touchedNode is SKPuzzle { // 2 if !selectedNode.isEqual(touchedNode) { selectedNode.removeAllActions() selectedNode.runAction(SKAction.rotateToAngle(0.0, duration: 0.1))