While trying to drag and drop SKSpriteNodes with the touchesMoved function, the code that lets me drag sprites does not work when I try to swipe them.
This is what I have:
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
}
}
}
This is what I'm trying to do:
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)
}
But when I try to swipe the sprite, I receive a SIGABRT error. I've looked at lots of sources, and have not seen an answer to a question like this.
Would someone please give me some advice on how to drag SKSpriteNodes using UISwipeGestureRecognizer?
use this function to swipe a view in 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)
}
}
}
}
Sprite move from one side to another side:-
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]))
}
Hope it will help you
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.