Qt那些事0.0.20
阿新 • • 發佈:2019-06-26
一個裝逼失敗的例子
今天原本是給別人介紹 QML
中 Behavior
的用法。畢竟自己在之前用過很多次,感覺已經算是熟練的地步,可以為人師了。於是乎自己寫了個程式碼,還屁顛屁顛的把別人喊過來,指著螢幕說,看,就是這麼寫的,嗯,程式碼就像下面寫的:
Behavior on scale {
NumberAnimation{
duration:200
onStopped:{
if(_root.scale == 0){
_root.visible=false
}
}
}
}
理解起來沒什麼問題呀,在動畫縮小到比例為0的時候,設定此層不可見。NumberAnimation
stopped
訊號(其實是基礎動畫類的訊號)。但後來除錯的時候發現問題,就是明明不可見的情況,一直反饋是可見的。最後追查到 onStopped
沒有執行。
WTF
再去檢視文件,發現了端倪:
stopped() ... ... It is only triggered for top-level, standalone animations. It will not be triggered for animations in a Behavior or Transition, or animations that are part of an animation group. (只會在頂級,獨立的動畫中觸發。在Behavior或者Transition或者是動畫組的一份時不觸發) ...
好了,知道了原因,只是沒有仔細看過這段文件,或者沒有太深的印象。可能大家都知道這個原因,所以即使去OS也搜不到什麼有價值的資訊。
只好在觸發結束時引入一個定時器,等到這個動畫結束後使用定時器觸發了。<