如何在Swift 3.0中拖放精灵? [英] How do I drag and drop a sprite in Swift 3.0?

查看:98
本文介绍了如何在Swift 3.0中拖放精灵?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要做的就是能够在屏幕上拖放精灵.我尝试了以下代码:

All i'm trying to do is be able to drag and drop a sprite across the screen. I've tried the following code:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
}

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
    for touch in (touches ) {
        let location = touch.locationInNode(self)
        if ball.containsPoint(location) {
            ball.position = location    
}
}
}

此代码确实有效,但是,当我快速拖动球时,我猜它检测到球"不再包含点位置"并且球停止,这意味着我再次捡起球.我希望球能够快速响应我的触摸,从而使球不会停止移动.我该怎么办?

This code does work, however, when I drag the ball quite fast, I guess it detects that the "ball" no longer contains the point "location" and the ball stops, meaning I have pick the ball up again. I want the ball to be able to respond to my touches quickly, so that the ball wont stop moving. How would I do this?

推荐答案

我有一个实现,其中子类化了UIImageView并将其称为"DraggableImage"

I have an implementation where I've subclassed a UIImageView and called it a "DraggableImage"

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        originalPosition = self.center
    }

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        if let touch = touches.first {
            let position = touch.location(in: self.superview)
            self.center = CGPoint(x: position.x, y: position.y)
        }
    }

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {

        self.center = originalPosition
    }

这篇关于如何在Swift 3.0中拖放精灵?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆