2015-11-12 54 views
1

我需要在屏幕上不斷從右向左創建移動文本,我已經使用QMLTimerText元素實現了它。QML用定時器移動文本

下面的代碼工作正常,但我擔心下面的代碼導致更多的CPU或內存使用情況,主要是因爲計時器每33毫秒觸發一次。我必須在我的應用程序的地方和多個實例中使用它,例如在許多網格窗口中。

這是正確的做法嗎?還是有什麼比這更好的存在?

Rectangle{ 
     width:parent.width 
     height:parent.height 
     color: "#333333" 

     Timer { 
      id: resetTimer 
      interval: 33 
      repeat: true 
      running: true 
      onTriggered: { 
      console.log("triggred"); 
      moving_text.x = moving_text.x-1 
      if(moving_text.x<-1*moving_text.paintedWidth) 
       moving_text.x=parent.width 
      } 
     } 

     Text{ 
      id:moving_text 
      x:parent.width 
      text:"Moving text" 
      color: "white" 
     } 
    } 

回答

4

爲什麼要讓事情變得如此複雜。你可以在x使用NumberAnimation如下:

import QtQuick 2.0 

Rectangle{ 
    id: root 
    width:250 
    height:250 
    color: "#333333" 

    Text{ 
     id:moving_text 
     x:parent.width 
     text:"Moving text" 
     color: "white" 

     NumberAnimation on x{ 
      from: root.width 
      to: -1*moving_text.width 
      loops: Animation.Infinite 
      duration: 3000 
     } 
    } 
} 

至於你提到的內存和CPU使用率的關注,你應該比較這兩種方法,並檢查哪一個適合你。但我個人的建議是使用NumberAnimation