Qt クイックサンプル - アニメーション
QML Animation のサンプル集です。
Animationはアニメーションに関連する小さなQMLのサンプル集です。それぞれの例は、特定のタイプや機能を強調した小さなQMLファイルです。
アニメーションについてのより詳しい情報は、Qt Quick における重要な概念 - 状態、遷移、アニメーション を参照してください。
サンプルを実行する
Qt Creator からサンプルを実行するには、Welcome モードを開き、Examples からサンプルを選択します。詳細については、Building and Running an Exampleを参照してください。
カラーアニメーション
ColorAnimationは、カラーアニメーションを使用して、空を昼から夜にフェードさせます。
gradient: Gradient { GradientStop { position: 0.0 SequentialAnimation on color { loops: Animation.Infinite ColorAnimation { from: "#14148c"; to: "#0E1533"; duration: 5000 } ColorAnimation { from: "#0E1533"; to: "#14148c"; duration: 5000 } } } GradientStop { position: 1.0 SequentialAnimation on color { loops: Animation.Infinite ColorAnimation { from: "#14aaff"; to: "#437284"; duration: 5000 } ColorAnimation { from: "#437284"; to: "#14aaff"; duration: 5000 } } } }
PropertyAnimation
PropertyAnimationは、数値アニメーションを使用して、円を上下に跳ねさせます。
// Animate the y property. Setting loops to Animation.Infinite makes the // animation repeat indefinitely, otherwise it would only run once. SequentialAnimation on y { loops: Animation.Infinite // Move from minHeight to maxHeight in 300ms, using the OutExpo easing function NumberAnimation { from: smiley.minHeight; to: smiley.maxHeight easing.type: Easing.OutExpo; duration: 300 } // Then move back to minHeight in 1 second, using the OutBounce easing function NumberAnimation { from: smiley.maxHeight; to: smiley.minHeight easing.type: Easing.OutBounce; duration: 1000 } // Then pause for 500ms PauseAnimation { duration: 500 } }
アニメーター
Animatorsは、アニメーターを使用してアイコンを上下に跳ねさせます。
SequentialAnimation { SequentialAnimation { ParallelAnimation { YAnimator { target: smiley; from: smiley.minHeight; to: smiley.maxHeight easing.type: Easing.OutExpo; duration: 300 } ScaleAnimator { target: shadow from: 1 to: 0.5 easing.type: Easing.OutExpo; duration: 300 } } ParallelAnimation { YAnimator { target: smiley; from: smiley.maxHeight; to: smiley.minHeight easing.type: Easing.OutBounce; duration: 1000 } ScaleAnimator { target: shadow from: 0.5 to: 1 easing.type: Easing.OutBounce; duration: 1000 } } } PauseAnimation { duration: 500 } running: true loops: Animation.Infinite }
ビヘイビア
Behaviorsはビヘイビアを使って、クリックした場所に矩形を移動させます。
// Set an 'elastic' behavior on the focusRect's y property. Behavior on y { NumberAnimation { easing.type: Easing.OutElastic easing.amplitude: 3.0 easing.period: 2.0 duration: 300 } }
くねくねテキスト
Wiggly Textは、より複雑なビヘイビアを使って、テキストをドラッグするときにアニメーションさせたり、くねくね動かしたりするデモです。これはそれぞれの文字に複雑なバインディングを割り当てることで行います:
x: follow ? follow.x + follow.width : container.width / 6 y: follow ? follow.y : container.height / 2
そして、ビヘイビアを使って各文字の動きをアニメーション化します:
Behavior on x { enabled: container.animated; SpringAnimation { spring: 3; damping: 0.3; mass: 1.0 } } Behavior on y { enabled: container.animated; SpringAnimation { spring: 3; damping: 0.3; mass: 1.0 } }
テレビテニス
Tv Tennisは複雑なビヘイビアを使ってパドルをボールに従わせ、無限のテニスゲームをシミュレートします。ここでも、他の値に依存するバインディングが位置に適用され、ビヘイビアがアニメーションを提供します。
イージングカーブ
Easing Curvesは、Qt Quickアニメーションで利用可能なすべてのイージングカーブを示しています。
状態
Statesは、アイテムのプロパティがステート間でどのように変化するかを示します。
いくつかの状態を定義しています:
// In state 'middleRight', move the image to middleRightRect State { name: "middleRight" PropertyChanges { userIcon { x: middleRightRect.x y: middleRightRect.y } } }, // In state 'bottomLeft', move the image to bottomLeftRect State { name: "bottomLeft" PropertyChanges { userIcon { x: bottomLeftRect.x y: bottomLeftRect.y } } }
トランジション
Transitions は、States の例を取り、トランジションを設定することでプロパティの変化をアニメーション化します:
// Transitions define how the properties change when the item moves between each state transitions: [ // When transitioning to 'middleRight' move x,y over a duration of 1 second, // with OutBounce easing function. Transition { from: "*"; to: "middleRight" NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce; duration: 1000 } }, // When transitioning to 'bottomLeft' move x,y over a duration of 2 seconds, // with InOutQuad easing function. Transition { from: "*"; to: "bottomLeft" NumberAnimation { properties: "x,y"; easing.type: Easing.InOutQuad; duration: 2000 } }, // For any other state changes move x,y linearly over duration of 200ms. Transition { NumberAnimation { properties: "x,y"; duration: 200 } }
PathAnimation
PathAnimationは、PathAnimation を使って、ベジェ曲線に沿って画像をアニメーション化します。
PathAnimation { id: pathAnim duration: 2000 easing.type: Easing.InQuad target: box orientation: PathAnimation.RightFirst anchorPoint: Qt.point(box.width/2, box.height/2) path: Path { startX: 50; startY: 50 PathCubic { x: window.width - 50 y: window.height - 50 control1X: x; control1Y: 50 control2X: 50; control2Y: y } onChanged: canvas.requestPaint() } }
PathInterpolator
PathInterpolatorは、同じベジェ曲線に沿って、PathInterpolator を代わりに使って画像をアニメーションさせます。
PathInterpolator { id: motionPath path: Path { startX: 50; startY: 50 PathCubic { x: window.width - 50 y: window.height - 50 control1X: x; control1Y: 50 control2X: 50; control2Y: y } onChanged: canvas.requestPaint() } SequentialAnimation on progress { running: true loops: -1 PauseAnimation { duration: 1000 } NumberAnimation { id: progressAnim running: false from: 0; to: 1 duration: 2000 easing.type: Easing.InQuad } } }
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。