В моей программе QML мне нужно использовать Animation
s для проверки наличия проблемы. Пожалуйста, запустите приведенный ниже код в вашей системе. Я не знаю, почему, когда я использую этот ParallelAnimation
, мяч не отражается при ударе о стену!
Вот main.qml:
import QtQuick 2.9
import QtQuick.Window 2.2
Window {
visible: true
width: 720
height: 620
Rectangle {
id: table
anchors.fill: parent
color: "gray"
Rectangle {
id: ball
property double xincrement: Math.random() + 0.5
property double yincrement: Math.random() + 0.5
width: 15
height: width
radius: width / 2
color: "white"
x: 300; y: 300
}
Racket {
id: myRacket
x: table.width - 50
y: table.height/3
color: "blue"
}
ParallelAnimation {
id: anim
NumberAnimation {
target: ball
properties: "x"
to: timer.xMove
}
NumberAnimation {
target: ball
properties: "y"
to: timer.yMove
}
}
Timer {
id: timer
interval: 20; repeat: true; running: true
property double xMove: ball.x + ball.xincrement
property double yMove: ball.y + ball.yincrement
onTriggered: {
if(ball.x + ball.width >= table.width || ball.x <= 0)
ball.xincrement *= -1
xMove += ball.xincrement
yMove += ball.yincrement
anim.restart()
if(ball.y <= 0 || ball.y + ball.height >= table.height)
ball.yincrement *= -1
}
}
}
}
А вот и Racket.qml:
import QtQuick 2.9
Rectangle {
id: root
width: 15; height: 65
MouseArea {
anchors.fill: root
anchors.margins: -root.height
drag.target: root
drag.axis: Drag.YAxis
drag.minimumY: 0
drag.maximumY: 600
}
}
EDIT1:
Я использовал этот код без Animation
s, и он работает хорошо! (Отброшенные части одинаковы)
...
Rectangle {
id: ball
property double xincrement: Math.random() + 0.5
property double yincrement: Math.random() + 0.5
width: 15
height: width
radius: width / 2
color: "white"
x: 300; y: 300
}
...
Timer {
id: timer
interval: 20; repeat: true; running: true
onTriggered: {
if(ball.x + ball.width >= table.width || ball.x <= 0)
ball.xincrement *= -1
ball.x += ball.xincrement * 2.0
ball.y += ball.yincrement * 2.0
if(ball.y <= 0 || ball.y + ball.height >= table.height)
ball.yincrement *= -1
}
}
}
}
Animation
s для проверки проблемы. Поэтому при использованииAnimation
s требуется новое решение. А так же у меня могут быть вопросы и вопрос который я задал был про разное поведение программы сAnimations
и без. - person opty   schedule 07.01.2018