QML Canvas.requestAnimationFrame爆炸

Vla*_*rus 7 qt canvas qml qtquick2

我正在尝试使用QML Canvas.requestAnimationFrame绘制一些自定义动画.我期望为每个帧调用一次提供的回调,大约每秒60次.我的代码是:

Canvas {
    id: canvas

    width: 600
    height: 600

    function draw() {
    }

    Component.onCompleted: {
        var i = 1;

        function drawFrame() {
            requestAnimationFrame(drawFrame)
            console.log("Frame callback: " + i++)
            draw()
        }

        drawFrame()
    }

    onPaint: {
        draw()
    }

}
Run Code Online (Sandbox Code Playgroud)

我看到的是回调被更频繁地调用.计数器在几秒钟内达到70000,之后应用程序变得完全没有响应.

我究竟做错了什么?

Phr*_*ogz 0

Qt 5.9 之前有一个错误。requestAnimationFrame()此错误已得到修复。

此代码按预期工作,以保持画布不断重绘。

Canvas {
    width:100; height:100;
    property var ctx
    onAvailableChanged: if (available) ctx = getContext('2d');
    onPaint: {
        if (!ctx) return;
        ctx.clearRect(0, 0, width, height);
        // draw here
        requestAnimationFrame(paint);
    }
}
Run Code Online (Sandbox Code Playgroud)