Функция mouseMoved не вызывается при перемещении мыши?

Я пытаюсь найти координаты мыши в SKScene, однако функция moveMouse не вызывается. (Кстати, в Swift Playground) я даже написал функцию печати, которая проверяла, вызывается ли эта функция, но она ничего не печатает.

Вот как я настроил свою NSTrackingArea:

    let options = [NSTrackingAreaOptions.mouseMoved, NSTrackingAreaOptions.activeInKeyWindow, NSTrackingAreaOptions.activeAlways, NSTrackingAreaOptions.inVisibleRect, ] as NSTrackingAreaOptions
    let tracker = NSTrackingArea(rect: viewFrame, options: options, owner: self.view, userInfo: nil)
    self.view?.addTrackingArea(tracker)

А вот и функция mouseMoved (которая не вызывается)

override public func mouseMoved(with event: NSEvent) {

        point = event.location(in: self)
        print(point)
    }

Есть ли причина, по которой mouseMoved не вызывается?

1 ответ

Решение

Я создал игровую площадку со следующим кодом (и только этот код):

import AppKit
import SpriteKit
import PlaygroundSupport

class Scene:SKScene {
    override public func mouseMoved(with event: NSEvent) {
        let point = event.location(in: self)
        print(point)
    }
}

let frame = CGRect(x:0, y:0, width:1920, height:1080)
let view = SKView(frame:frame)
let scene = Scene(size: CGSize(width: 1080, height: 1080))
scene.backgroundColor = #colorLiteral(red: 0.4078431373, green: 0.7843137255, blue: 0.6509803922, alpha: 1)
scene.scaleMode = .aspectFit

let options = [NSTrackingAreaOptions.mouseMoved, NSTrackingAreaOptions.activeInKeyWindow, NSTrackingAreaOptions.activeAlways, NSTrackingAreaOptions.inVisibleRect, ] as NSTrackingAreaOptions
let tracker = NSTrackingArea(rect:frame, options: options, owner:view, userInfo: nil)
view.addTrackingArea(tracker)

PlaygroundPage.current.needsIndefiniteExecution = true
view.presentScene(scene)
PlaygroundPage.current.liveView = view

Затем я открыл вид временной шкалы детской площадки, нажав кнопку "Показать редактор" на панели инструментов. Я также открыл область отладки, чтобы я мог видеть консоль.

В этот момент вид временной шкалы показывал зеленый вид. Я переместил указатель мыши на зеленый вид и увидел, что координаты мыши выводятся на консоль. Итак, насколько я могу судить, приведенный выше код работает нормально.

Не могли бы вы попробовать код на вашем конце и посмотреть, что происходит?

Другие вопросы по тегам