Swift 我是否应该使用SKShapeNode的替代项来创建图形?如果是,什么?
我有以下代码在场景中绘制图片:Swift 我是否应该使用SKShapeNode的替代项来创建图形?如果是,什么?,swift,skscene,skshapenode,Swift,Skscene,Skshapenode,我有以下代码在场景中绘制图片: override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { for touch in touches { let location = touch.locationInNode(self) newPoint = location let pathToDraw:CGMutablePathRef = C
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch in touches {
let location = touch.locationInNode(self)
newPoint = location
let pathToDraw:CGMutablePathRef = CGPathCreateMutable()
let myLine:SKShapeNode = SKShapeNode(path:pathToDraw)
CGPathMoveToPoint(pathToDraw, nil, lastPoint.x, lastPoint.y)
CGPathAddLineToPoint(pathToDraw, nil, newPoint.x, newPoint.y)
lastPoint = newPoint
myLine.lineWidth = 3.0
myLine.path = pathToDraw
myLine.strokeColor = SKColor.whiteColor()
self.addChild(myLine)
}
}
覆盖功能触摸移动(触摸:设置,带事件:UIEvent?){
接触{
let location=touch.locationInNode(自)
newPoint=位置
让pathToDraw:CGMutablePathRef=CGPathCreateMutable()
设myLine:SKShapeNode=SKShapeNode(路径:pathToDraw)
CGPathMoveToPoint(pathToDraw、nil、lastPoint.x、lastPoint.y)
CGPathAddLineToPoint(pathToDraw、nil、newPoint.x、newPoint.y)
lastPoint=newPoint
myLine.lineWidth=3.0
myLine.path=pathToDraw
myLine.strokeColor=SKColor.whiteColor()
self.addChild(myLine)
}
}
这正是我想要的,我可以用它画画,但我认为它不是很有效。我应该使用另一种方法来获得与画画相同的效果,还是这样可以?如果我应该使用其他方法,替代方法是什么 而是添加一个“SKShapeNode”作为绘图节点,并将其路径作为属性,即
class MyDrawingNode: SKNode {
...
}
并更新路径,而不是为路径中的点每行添加单个SKNode子节点。因此,有些东西的效果是:
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch in touches {
let location = touch.locationInNode(self)
newPoint = location
let myLinePath:CGMutablePathRef = myDrawingNode.path
...
}
从这里使用myHouse的内容绘制路径,myHouse是各种结构的数组
你有很多方法可以做到这一点,所以我只是给你一些粗略的想法:)
FPS下降
一种方法是:
SKScene
中,将一些代码放在一起,仅每x ms更新一次场景,而不是每次通过以下方式更新场景:
var nthframecont=0
设n帧=6
覆盖函数更新(currentTime:CFTimeInterval){
}updateOnNthFrame
函数中处理实际的更新代码。在上面的例子中,它是每6帧,而不是每一帧
虽然每毫秒的绘制时间较少,但人眼开始记录大约25~30fps的平滑运动。。。在电视上,美国的电视模拟标准是NTSC,即每秒30帧
因此,当您每秒更新移动次数减少时,“更新代码”的实际运行次数为每秒10次(在我的示例中,如果FPS为60 FPS,则为每秒10次)
希望这能解释得更多一点:)如果没有,请给我一个聊天请求,我会尝试进一步帮助你
干杯:)而是添加一个“SKShapeNode”作为绘图节点,并将其路径作为属性,即
class MyDrawingNode: SKNode {
...
}
并更新路径,而不是为路径中的点每行添加单个SKNode子节点。因此,有些东西的效果是:
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch in touches {
let location = touch.locationInNode(self)
newPoint = location
let myLinePath:CGMutablePathRef = myDrawingNode.path
...
}
从这里使用myHouse的内容绘制路径,myHouse是各种结构的数组
你有很多方法可以做到这一点,所以我只是给你一些粗略的想法:)
FPS下降
一种方法是:
SKScene
中,将一些代码放在一起,仅每x ms更新一次场景,而不是每次通过以下方式更新场景:
var nthframecont=0
设n帧=6
覆盖函数更新(currentTime:CFTimeInterval){
}updateOnNthFrame
函数中处理实际的更新代码。在上面的例子中,它是每6帧,而不是每一帧
虽然每毫秒的绘制时间较少,但人眼开始记录大约25~30fps的平滑运动。。。在电视上,美国的电视模拟标准是NTSC,即每秒30帧
因此,当您每秒更新移动次数减少时,“更新代码”的实际运行次数为每秒10次(在我的示例中,如果FPS为60 FPS,则为每秒10次)
希望这能解释得更多一点:)如果没有,请给我一个聊天请求,我会尝试进一步帮助你
干杯:)这很有效,但这是否更有效?fps仍然下降,它也不像我画的那么平滑。更新了更多的信息,你可能会发现有用的答案。。。就像我说的,如果你需要更多的帮助,给我一个聊天请求,我会看看我是否能提供更多的帮助:)这是有效的,但这是否更有效?fps仍然下降,它也不像我画的那么平滑。更新了更多的信息,你可能会发现有用的答案。。。如我所说,如果您需要更多帮助,请向我发送聊天请求,我将查看是否可以进一步提供帮助:)