2015-11-12 6 views
1

Мне нужно постоянно создавать движущийся текст на экране справа налево, я его использовал, используя QMLTimer и Text.QML Перемещение текста с таймером

Этот код работает нормально, но меня беспокоит приведенный ниже код, вызывающий больше использования процессора или памяти в основном потому, что таймер запускается каждые 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

Зачем делать вещи такими скомпонованными. Вы можете использовать NumberAnimation на x следующим образом:

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 
     } 
    } 
} 

Что касается вашей заботы о памяти и использовании центрального процессора, вы должны сравнить оба метода и проверить, какой из них подходит вам. Но моя личная рекомендация - использовать NumberAnimation.

Смежные вопросы