我有一个游戏,在 playScene 中我创建了一个函数来创建一个 SKLabeleNode。现在我可以调用这个函数将节点添加到场景中,它工作正常,它会将节点添加到场景中,所以接下来我需要能够选择我刚刚添加到场景中的节点。////////////////////////////////////////////////////////////////////////////////////////////// /
在这里,我将选择我之前创建的一个节点,并将其与函数中创建的 SKLabelNode 进行比较,如果函数中创建的节点是 == 到我首先选择的节点,我需要删除函数创建的节点。问题是我无法选择在函数中创建的节点
//这是我可以制作的最小版本,可以复制并粘贴到 GameScene 类和工作中。//唯一要做的就是制作 SKSpriteNode(imageNamed: "A") 和 SKSpriteNode(imageNamed: "B")
导入 SpriteKit 导入基础类 GameScene:SKScene {
var yellowColor = UIColor.yellowColor()
var redColor = UIColor.redColor()
let upperCaseA = SKSpriteNode(imageNamed: "A")
let upperCaseB = SKSpriteNode(imageNamed: "B")
var smallSizeLatter = CGSize()
var largeSizeLatter = CGSize()
var tempVarToHoldPlaceToMakeItRun = SKLabelNode(text: "A")
var latterADefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
var latterBDefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
override func didMoveToView(view: (SKView!)) {
_ = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: ("fallTheText"), userInfo: nil, repeats: true)
self.backgroundColor = UIColor.whiteColor()
latterADefaults.setBool(true, forKey: "latterADefaultsKey")
latterBDefaults.setBool(true, forKey: "latterBDefaultsKey")
smallSizeLatter = CGSize(width: 37, height: 37)
largeSizeLatter = CGSize(width: 54, height: 54)
upperCaseA.size = smallSizeLatter
upperCaseA.position = CGPoint(x: self.frame.width / 8, y: self.frame.height * 0.75)
upperCaseB.size = smallSizeLatter
upperCaseB.position = CGPoint(x: self.frame.width / 8, y: self.frame.height * 0.65)
self.addChild(upperCaseA)
self.addChild(upperCaseB)
}
func fallTheText(){
let theFallingText = SKLabelNode(text: "A")
let theLowerCaseLatter: [String] = ["a", "b",]
let textIndex = Int(arc4random_uniform(UInt32(2)))
let lowerCaseLatter = theLowerCaseLatter[textIndex]
theFallingText.text = lowerCaseLatter
theFallingText.name = lowerCaseLatter
print("the name is", theFallingText)
let colorListOfColors: [UIColor] = [yellowColor, redColor,]
let colorIndex = Int(arc4random_uniform(UInt32(2)))
let colorOfColors = colorListOfColors[colorIndex]
theFallingText.fontColor = colorOfColors
theFallingText.fontName = "HoeflerText-BlackItalic"
theFallingText.fontSize = 40
func randomRange (lower: UInt32 , upper: UInt32) -> UInt32 {
return lower + arc4random_uniform(upper - lower + 1)
}
let minValue = self.size.width / 3
let maxValue = self.size.width - 50
let uppers = UInt32(maxValue)
let lowers = UInt32(minValue)
let spawnPoint = CGFloat(randomRange(lowers, upper: uppers))
theFallingText.position = CGPoint(x: spawnPoint, y: self.size.height * 0.85)
let actionY = SKAction.moveToY(-30, duration: 20)
theFallingText.runAction(SKAction.repeatActionForever(actionY))
self.addChild(theFallingText)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch: AnyObject in touches{
let positionOfTouch = touch.locationInNode(self)
let nodeAtLocation = self.nodeAtPoint(positionOfTouch)
if nodeAtLocation == upperCaseA {
if latterADefaults.boolForKey("latterADefaultsKey"){
upperCaseA.size = largeSizeLatter
latterADefaults.setBool(false, forKey: "latterADefaultsKey")
upperCaseB.size = smallSizeLatter
latterBDefaults.setBool(true, forKey: "latterBDefaultsKey")
}else{
upperCaseA.size = smallSizeLatter
upperCaseB.size = smallSizeLatter
latterADefaults.setBool(true, forKey: "latterADefaultsKey")
}
}
////////问题出在我添加此临时节点以使其运行的地方/////////
if nodeAtLocation == tempVarToHoldPlaceToMakeItRun{
if tempVarToHoldPlaceToMakeItRun.text == "yellow"{
print("danny", tempVarToHoldPlaceToMakeItRun.name)
if upperCaseA.size == largeSizeLatter{
tempVarToHoldPlaceToMakeItRun.removeFromParent()
upperCaseA.size = smallSizeLatter
}
}
}
if nodeAtLocation == upperCaseB {
if latterBDefaults.boolForKey("latterBDefaultsKey"){
upperCaseA.size = smallSizeLatter
latterADefaults.setBool(true, forKey: "latterADefaultsKey")
upperCaseB.size = largeSizeLatter
latterBDefaults.setBool(false, forKey: "latterBDefaultsKey")
}else{
upperCaseB.size = smallSizeLatter
latterBDefaults.setBool(true, forKey: "latterBDefaultsKey")
}
}
}
}
}
我怎样才能触摸这个节点来比较它?我已经更改了函数以返回一个 SKLabelNode 没有运气。我尝试使用没有返回值的函数没有运气。我已经删除了 NSTimer 并将该函数添加为 self.addChild(fallTheText) ,但没有成功。在所有情况下,函数中创建的 SKLabelNode 都会顺着场景向下流动。好的,现在当我尝试比较它们时,我触摸第一个节点并做出反应,但它现在也从函数中添加了一个新节点,它不应该。当我尝试选择由函数创建的下降节点时,它只会不断从函数中添加更多节点,而不会选择下降的节点。
目标是随机掉落的后者和固定图像“触摸时会调整大小”比较它们,然后删除掉落的帐篷字母。