このqmlファイルは、私のメインウィンドウファイルの1つに実装されています。しかし、アニメーションは表示されません。これをキャンバスアニメーションの教科書のチュートリアルからコピーしたので、構文に間違いがないと確信していました。私はデバッグ時にエラーはありませんが、アニメーションの一部を見ることはできません。何か案は?Qml Canvas Animation Error
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
}
}
私は他のキャンバスのアニメーションで何の問題もない...それはちょうどこのアニメーションです。
ありがとうございます。問題はb = 4 * Math/5となり、b = 4 * Math.PI/5に変更され、正しいアニメーションが得られました。この教科書は非常に素朴な骨であり、JavaScriptの経験を前提としています。これはいつもC++で働いていた人にとって迷惑です。 – Gepard
何かの理由で教科書には、これを見てから重要なロギングは決して論じられません! – Gepard
問題が解決したら、それを受け入れてください。 – Kakadu