이 메인 윈도우 파일 중 하나에이 qml 파일을 구현했습니다. 그러나 애니메이션은 보이지 않습니다. 캔버스 애니메이션에 대한 교과서 자습서에서이 내용을 복사 했으므로 구문에 예측 가능한 오류가 없을 것이라고 확신했습니다. 디버깅 할 때 오류는 없지만 애니메이션의 일부는 볼 수 없습니다. 어떤 아이디어?Qml Canvas 애니메이션 오류
HeartBeat.qml
Canvas{
id: canvas
visible: true
width: 600
height: 300
property int lineWidth: 2
property var points: []
property real arg: -Math.PI
Timer{
interval: 10
repeat: true
running: true
onTriggered: {
arg += Math.PI/180
while(arg >= Math.PI) arg -= 2*Math.PI
}
}
onArgChanged: {
points.push(func(arg))
points = points.slice(-canvas.width)
canvas.requestPaint()
}
function func(argument){
var a=(2*Math.PI/10); var b=4*Math/5
return Math.sin(20*argument) * (
Math.exp(-Math.pow(argument/a, 2)) +
Math.exp(-Math.pow((argument-b)/a,2)) +
Math.exp(-Math.pow((argument+b)/a, 2))
)
}
onPaint:{
var ctx = canvas.getContext("2d")
ctx.reset()
ctx.clearRect(0, 0, canvas.width, canvas.height)
var pointsToDraw = points.slice(-canvas.width)
ctx.translate(0, canvas.height/2)
ctx.beginPath()
ctx.moveTo(0, -pointsToDraw[0]*canvas.height/2)
for(var i=1; i<pointsToDraw.length; i++)
ctx.lineTo(i, -pointsToDraw[i]*canvas.height/2)
ctx.lineWidth = canvas.lineWidth
ctx.stroke()
}
}
Main.qml
Item{
id: container
x: 530
y: 542
width: 600
height: 300
HeartBeat{
id: heartBeatMonitor
}
}
내가 다른 캔버스 애니메이션 아무런 문제가 없습니다 ... 그냥이 애니메이션입니다.
감사합니다. 문제는 var b = 4 * Math/5 였고, 바뀌면 b = 4 * Math.PI/5가되어 올바른 애니메이션을 제공합니다. 이 교과서는 매우 뼈없는 것이며 C++로 항상 작업 해 온 누군가에게 짜증나는 JavaScript 경험을 전제로합니다. – Gepard
무엇인가의 이유로 교과서는 이것을보고 나서 매우 중요한 로깅에 관해서는 결코 논하지 않습니다! – Gepard
문제가 해결되면이를 수락하십시오. – Kakadu