Iva*_*ang 1 macos sprite-kit skspritenode swift
如果我在SKScene中有一个SKSpriteNode:
let sprite = SKSpriteNode(imageNamed:"Spaceship")
champion.position = CGPointMake(self.size.width/2, self.size.height/2)
champion.setScale(0.25)
self.addChild(champion)
Run Code Online (Sandbox Code Playgroud)
现在,将这个节点添加到场景中之后,我想在将鼠标移到该节点上时更改其颜色。
如何检测此节点上的鼠标悬停,以便可以更改其颜色?
我在SKSpriteNode类中看到一个mouseEntered事件。我会用吗?如何射击?
还是应该使用其他方法?
在中didMoveToView,定义NSTrackingArea跟踪鼠标事件并将其添加到视图中
let options = [NSTrackingAreaOptions.MouseMoved, NSTrackingAreaOptions.ActiveInKeyWindow] as NSTrackingAreaOptions
let trackingArea = NSTrackingArea(rect:view.frame,options:options,owner:self,userInfo:nil)
view.addTrackingArea(trackingArea)
Run Code Online (Sandbox Code Playgroud)
声明一个精灵并将其添加到场景中以进行测试
let sprite = SKSpriteNode(imageNamed:"Spaceship")
sprite.name = "sprite"
sprite.position = CGPointMake(CGRectGetMidX(view.frame), CGRectGetMidY(view.frame));
sprite.setScale(0.5)
self.addChild(sprite)
Run Code Online (Sandbox Code Playgroud)
覆盖mouseMoved方法
override func mouseMoved(event: NSEvent) {
// Get mouse position in scene coordinates
let location = event.locationInNode(self)
// Get node at mouse position
let node = self.nodeAtPoint(location)
if (node.name == "sprite") {
let sprite = node as SKSpriteNode
sprite.colorBlendFactor = 1.0
sprite.color = SKColor.greenColor()
}
}
Run Code Online (Sandbox Code Playgroud)
最后,NSTrackingArea当您过渡到新场景时,需要将其从视图中删除
override func willMoveFromView(view: SKView) {
for trackingArea in view.trackingAreas {
view.removeTrackingArea(trackingArea)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2879 次 |
| 最近记录: |