• 5269阅读
  • 8回复

[讨论]如何获知动画已经结束了 [复制链接]

上一主题 下一主题
离线seanyxie
 

只看楼主 倒序阅读 楼主  发表于: 2014-08-05
qml中,使用动画propertyAnimation来对某一个属性做动画,duration设置完后
比如duration=1000,y from 0 to 500
动画结束后,去做一件事情。
如何知道动画已经结束了?

不要说在启动propertyAnimation时候启动一个定时器,time out 了再去检查...


我奔向太阳,在日落前必将找到你。
欢迎光临Qt技术博客 http://www.seanyxie.com
离线kimtaikee

只看该作者 1楼 发表于: 2014-08-05
它应该有相应的信号,然后你写个onSignal槽函数负责处理就可以了。

离线彩阳

只看该作者 2楼 发表于: 2014-08-05
重写onStopped( )信号处理函数。
上海Qt开发联盟,热忱地欢迎你的加入!
离线junan

只看该作者 3楼 发表于: 2014-08-07
动画尾部添加ScriptAction,执行相应的功能。如信号通知等等....
离线seanyxie

只看该作者 4楼 发表于: 2014-08-11
  MouseArea{
            anchors.fill: parent
            onClicked:
               // rect.y=150
                PropertyAnimation{
                    target:rect
                    properties:"y"
                     to:150
                     duration:1000

                     onStarted: {
                         console.log("start")
                     }

                     onStopped: {
                         console.log("stoped")
                     }
                }

        }
这一段代码就可以

下面这个为啥就不行啊

Behavior on y {
            PropertyAnimation{
             //   target: rect
                id:aa
                duration:1000

                onStarted: {
                    console.log("start")
                }

                onStopped: {
                    console.log("stoped")
                }
            }
        
        }
我奔向太阳,在日落前必将找到你。
欢迎光临Qt技术博客 http://www.seanyxie.com
离线seanyxie

只看该作者 5楼 发表于: 2014-08-11
而且还比较奇怪,为啥 上面再onClick哪里写一个动画,onClicked:后面不能加花括号了
我奔向太阳,在日落前必将找到你。
欢迎光临Qt技术博客 http://www.seanyxie.com
离线彩阳

只看该作者 6楼 发表于: 2014-08-11
回 seanyxie 的帖子
seanyxie:  MouseArea{
            anchors.fill: parent
            onClicked:
          & .. (2014-08-11 23:15) 

Qt文档有描述,一旦碰上Behavior和Transition,那么onStopped和onStarted失效。
上海Qt开发联盟,热忱地欢迎你的加入!
离线seanyxie

只看该作者 7楼 发表于: 2014-08-12
原来如此,谢谢啦
我奔向太阳,在日落前必将找到你。
欢迎光临Qt技术博客 http://www.seanyxie.com

只看该作者 8楼 发表于: 2014-09-19
很简单的做法,不管是Animation还是都有一个onRunningChanged:信号,比如:
        Transition {
            from: "showAllMenu"
            to: "hideAllMenu"
            onRunningChanged: console.log(running)
    }
当running为true时表示动画正在进行,当动画结束后该信号立即就会发送一个false,那时你想干啥都行
ftpm
快速回复
限100 字节
 
上一个 下一个