xcode - 在 Swift 中沿用鼠标绘制的线运行 SKSpriteNode 对象
问题描述
如果松开鼠标左键,我的 SKSpriteNode 对象应该沿着之前用鼠标“绘制”的线移动。
我的问题是当我释放鼠标左键时我的精灵节点正在向下移动。
import SpriteKit
class GameScene: SKScene, SKPhysicsContactDelegate {
let object: SKSpriteNode = SKSpriteNode(imageNamed: "rabbit")
var actionArray = [SKAction()]
override func didMove(to view: SKView) {
physicsWorld.gravity = CGVector(dx: 0, dy: 0)
physicsWorld.contactDelegate = self
object.setScale(0.2)
object.position = CGPoint(x: size.width / 2, y: size.height / 2)
object.zPosition = 0
object.physicsBody = SKPhysicsBody(texture: SKTexture(imageNamed: "rabbit"), size: object.size)
object.physicsBody?.mass = 0
object.physicsBody?.categoryBitMask = 0
object.physicsBody?.contactTestBitMask = 1
object.physicsBody?.collisionBitMask = 0
addChild(object)
}
override func mouseDragged(with event: NSEvent) {
actionArray.append(SKAction.move(to: event.location(in: self), duration: 1))
}
override func mouseUp(with event: NSEvent) {
object.run(SKAction.sequence(actionArray))
// Remove all actions from 'actionArray'.
actionArray.removeAll()
}
}
我已经尝试过了,如下所示。现在我的精灵节点移动到第一个点,我按下鼠标左键。
override func mouseUp(with event: NSEvent) {
let removeAllFromActionArray = SKAction.run {
self.actionArray.removeAll()
}
actionArray.append(removeAllFromActionArray)
object.run(SKAction.sequence(actionArray))
}
我已经尝试过view! .Convert (event.locationInWindow, to: view! .Scene!)
而不是event.location (in: self)
,如Position of mouse click relative to scene 中所示,而不是 window,但结果是一样的。
我怀疑错误在于override func mouseUp(with event: event)
.
错误在哪里或有其他解决方案吗?
解决方案
推荐阅读
- powerbi - 在 Power BI 表上按行百分比计算
- null - SonarQube 忽略空值检查方法 Validator.isNotNull
- testing - 使用 CSV 或 EXCEL 等外部源在黄瓜特征文件中进行数据驱动测试
- c# - 错误:运行所选代码生成器时出错:'找不到方法...'
- python - 完成 h2o 操作后删除进度条
- android - 自定义 ListView 不显示
- javascript - 在JS中提取流到JSON
- python - 使用 pandas 或 itertools 循环数字范围并附加到 df.col
- javascript - 检查对象是否有键,如果有,将新键:值添加到所述对象
- java - 输入按钮时将键盘隐藏在片段内