SKShpapeNode位置和touch.location的区别

时间:2017-01-30 22:46:52

标签: ios swift sknode

我在Swift中学习SKNodes并遇到了问题。应用程序应该非常简单:触摸屏并让节点出现在触摸位置。我不知道为什么但是矩形会一直显示在屏幕上的不同位置,但sn.positiontouch.location(in: view)位置相同。怎么了?

import SpriteKit
import GameplayKit

class GameScene: SKScene {

    private var spinnyNode : SKShapeNode?
    private var touchPoint : CGPoint!

    override func didMove(to view: SKView) {

        let size = CGSize(width: 50, height: 50)

        spinnyNode = SKShapeNode(rectOf: size, cornerRadius: CGFloat(0.6)) //init

        if let spinnyNode = self.spinnyNode{

            spinnyNode.lineWidth = 3

            let rotate = SKAction.repeatForever(SKAction.rotate(byAngle: CGFloat(M_PI), duration: 1))
            let fade = SKAction.fadeOut(withDuration: 0.5)
            let remove = SKAction.removeFromParent()

            spinnyNode.run(rotate)
            spinnyNode.run(SKAction.sequence([fade, remove]))

        }
    }

    func touchDown(point pos : CGPoint){
        if let sn = self.spinnyNode?.copy() as! SKShapeNode? {

            sn.position = CGPoint(x: touchPoint.x , y: touchPoint.y)
            print("touchDown x:\(touchPoint.x), y:\(touchPoint.y)")

            self.addChild(sn)
        }
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        guard touches.count == 1 else{
            return
        }
        if let touch = touches.first{
            touchPoint = touch.location(in: view)

            touchDown(point: touchPoint)
            print("touchesBegan -> x: \(touchPoint.x) y: \(touchPoint.y)")
        }
    }

1 个答案:

答案 0 :(得分:0)

尝试做这样的事情

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="select">
   <div class="selected">
    <img src="/abc/image1.png">
   </div>
   <div>
    <img src="/abc/image2.png">
   </div>
   <div >
    <img src="/abc/image3.png">
   </div>
</div>

每当我点击随机点时,球就会出现。希望这会有所帮助。