2017-01-06 11 views
0

自分の画面にフルスクリーンのアプリケーションを設定したいので、その高さ、幅、x、yなどを設定する必要があります。しかし、私はアニメーションが動作しないことがわかった。私のアニメーションがQMLで動作しないのはなぜですか?

これは私がこれを1つのターゲット画面に設定したためだと思ったので、テストコードを作成します。ここでx、yをハードコードしますが、アニメーションはまだ動作しません。

私のテストコードは、次のとおりです。

import QtQuick 2.6 
import QtQuick.Window 2.2 

Window { 
    visible: true 
    title: qsTr("Hello World") 
    flags: Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint 
    opacity: 0.6 
    id: root 

    MouseArea { 
     anchors.fill: parent 
     onClicked: { 
      //Qt.quit(); 
     } 
    } 

    Component.onCompleted: { 
     root.x = 0; 
     root.y = 0; 
     root.width = Screen.width; 
     root.height = Screen.height; 
     initWindow.start(); 
    } 

    PropertyAnimation { 
     id: initWindow 
     target: root 
     from: 0 
     to: Screen.height 
     duration: 2000 
     easing.type: Easing.InOutQuad 
     onRunningChanged: { 
      if(!initWindow.running && root.visibility != Window.Hidden){ 
       console.log("here is initWindow animation.") 
      } 
     } 
    } 


} 
+0

コードはいいですが、アニメーション化するプロパティを設定するのは忘れてしまいます。 – folibis

答えて

1

あなたは何をアニメーション化していないので。 ターゲットを指定する必要があります。

野生の推測ですが、おそらく高さをアニメーション化したいのですか?

Window { 
    id: root 
    visible: true 
    title: qsTr("Hello World") 
    //  opacity: 0.6 // Does not work for me 
    // I want to have the frames and stuff for an example. 

    MouseArea { 
     anchors.fill: parent 
     onClicked: { 
      //Qt.quit(); 
     } 
    } 

    Component.onCompleted: { 
     root.x = 0; 
     root.y = 0; 
     root.width = 1200; 
     root.height = 800; 
    } 

    Behavior on height { // Starts the Animation with the set target, once the height is set to be changed 
     NumberAnimation { 
      id: initWindow 
      duration: 200000 
     } 
    } 
} 

またはあなたのコードに近い滞在する:

Window { 
    id: root 
    visible: true 
    title: qsTr("Hello World") 

    MouseArea { 
     anchors.fill: parent 
     onClicked: { 
      Qt.quit(); 
     } 
    } 

    Component.onCompleted: { 
     root.x = 0; 
     root.y = 0; 
     root.width = Screen.width; 
     initWindow.start(); 
    } 

    PropertyAnimation { 
     id: initWindow 
     target: root 
     from: 0 
     to: Screen.height 
     property: 'height' // You need to declare which property should change. 
     duration: 2000 
     easing.type: Easing.InOutQuad 
    } 
} 

は私がやったことのために、コメントを参照してください。 そして、例のためにあなたのコードを不要にしました。