我编写了一个“游戏”,其中一个球被发送到墙上反弹。在伤害墙壁之前,y 上的行为是一个弹簧动画。当它撞到墙壁时,球应该会反弹并有线性运动。
我的问题是我无法停止最初的行为。
我尝试了几种方法:
- 禁用该行为,但正在进行的运动继续
- 停止 SpringAnimation:我有错误:“QML SpringAnimation:setRunning() 不能在非根动画节点上使用。”
这是代码
Rectangle {
id: ball
property bool enableMoving: false
function newMousePos(mX,mY){
if(enableMoving){
ball.x = mX - ball.width/2
ball.y = mY - ball.height/2
}
}
Behavior on x {enabled: true;id: behavX; SpringAnimation {id:spX; spring: 0.8; damping: 0.9; mass: 10; } }
Behavior on y {enabled: true;id: behavY; SpringAnimation {id:spY; spring: 0.8; damping: 0.9; mass: 10 ; } }
onXChanged: {
if(ball.x>main.width-ball.size) {
console.log("wall 2 ")
spX.stop(); spY.stop()
}
if(ball.x<0) {
...
}
}
onYChanged: {
...
}
Timer{
id:timerDisableMoving
interval: 500; running:true
onTriggered: enableMoving=false
}
}
我不明白为什么我不能阻止这种行为。是否可以定义状态行为来解决问题?