尝试使用touchesMoved函数拖放SKSpriteNodes时,当我尝试滑动时,允许我拖动精灵的代码不起作用。
这就是我所拥有的:
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?){
for touch: AnyObject in touches{
let location = touch.locationInNode(self)
let touchedNode = self.nodeAtPoint(location)
let MySprite = SKSpriteNode(imageNamed: "image.png")
if touchedNode == MySprite{
MySprite.position = location
}
}
}
这就是我想要做的事情:
func swipedRight(sender:UISwipeGestureRecognizer){
let MySprite = SKSpriteNode(imageNamed: "image.png")
let touch = UITouch()
let location = touch.locationInNode(self)
let touchedNode = self.nodeAtPoint(location)
if touchedNode == MySprite{
MySprite.position = location
}
}
override func didMoveToView(view: SKView) {
let swipeRight:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedRight"))
swipeRight.direction = .Right
view.addGestureRecognizer(swipeRight)
}
但是当我尝试滑动精灵时,我收到一个SIGABRT错误。我看过很多来源,并没有看到这样一个问题的答案。
有人请给我一些关于如何使用UISwipeGestureRecognizer拖动SKSpriteNodes的建议吗?
答案 0 :(得分:0)
使用此函数在Spritekit中滑动视图。
var leftSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:"))
var rightSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:"))
func handleSwipes(sender:UISwipeGestureRecognizer ) {
if (sender.direction == .Right) {
if screenIndex > 0 && disableFlag == 0{
disableFlag = 1
let action = SKAction.moveTo(CGPointMake(scrollBg.position.x + frame.size.width, scrollBg.position.y), duration: 0.10)
let resetAction = SKAction.runBlock {
self.disableFlag = 0
}
scrollBg.runAction(SKAction.sequence([action,resetAction]))
screenIndex--
var suiteStatus = NSUserDefaults.standardUserDefaults().integerForKey(itemIDArr[screenIndex] as NSString)
if suiteStatus == 2 {
playEffectSound(suitSoundArray[screenIndex] as NSString)
}
}
}
if (sender.direction == .Left){
if screenIndex < itemIDArr.count-1 && disableFlag == 0{
disableFlag = 1
let action = SKAction.moveTo(CGPointMake(scrollBg.position.x - frame.size.width, scrollBg.position.y), duration: 0.10)
let resetAction = SKAction.runBlock {
self.disableFlag = 0
}
scrollBg.runAction(SKAction.sequence([action,resetAction]))
screenIndex++
var suiteStatus = NSUserDefaults.standardUserDefaults().integerForKey(itemIDArr[screenIndex] as NSString)
if suiteStatus == 2 {
playEffectSound(suitSoundArray[screenIndex] as NSString)
}
}
}
}
答案 1 :(得分:0)
精灵从一侧移动到另一侧: -
func moveGooses() {
let path = UIBezierPath()
path.moveToPoint(CGPoint(x:self.parentScene.frame.width*0.99, y: self.parentScene.frame.height*0.90)) path.addCurveToPoint(CGPoint( x:self.parentScene.frame.width*0.01, y: self.parentScene.frame.height*0.90), controlPoint1: CGPoint(x: self.parentScene.frame.width*0.01, y:self.parentScene.frame.height*0.90) , controlPoint2: CGPoint(x: self.parentScene.frame.width*0.01, y:self.parentScene.frame.height*0.90))
let anim = SKAction.followPath(path.CGPath, asOffset: false, orientToPath: false, duration: 3.0)
let seq = SKAction.sequence([anim])
let removeAction = SKAction.runBlock{
let myGameScene = self.parentScene as GameScene
self.removeFromParent()
}
self.runAction(SKAction.sequence([seq,removeAction]))
}
希望它能帮到你