EntryNavi : « QML(Qt Quick)の型のまとめ | メイン | QML(Qt)でボタンを作ろう! »

CategoryNavi : メイン -> コンピューター -> 開発 -> Qt

QML(Qt)でスプライトアニメを使用する

Webでアニメーションgifにするような部品を作るときに使用する機能です。
Qt Quick2.0からの新機能です。

SpriteSequence」と SpriteImageと「Sprite」エレメントを使用します。
なんか気がついたらエレメント名が変わってました・・・。


/// ポイント ///
・用意する画像は横方向に同じサイズの画像を1枚に並べる
 
・SpriteSequenceSpriteImageには複数のSpriteを登録しておいて状態に応じて切り替えが可能
・フレームの更新間隔の決定優先度
 frameRate > frameDuration > duration
・フレームサイズ(frameWidth, frameHeight)は1フレームごとのサイズ
 (画像全体のサイズではない)
・frameDurationVariationなど~Variationで更新間隔などに揺らぎを与えれる
・「reverse」でアニメーションの順番を逆順にできる


/// サンプル ///
クリックするとスプライトを入れ替えます。
import QtQuick 2.0

Rectangle {
    width: 200
    height: 344
    property int spriteNo: 1

    SpriteSequence{
        id: _anime
        anchors.fill: parent
        running: true
        interpolate: true
        sprites: [
            Sprite{
                name: "first"
                frameWidth: 200
                frameHeight: 344
                frameX: 0
                frameY: 0
                frameDuration: 100
                frameCount: 7
                source: "images/boalsprite_red.png"
            },
            Sprite{
                name: "second"
                frameWidth: 200
                frameHeight: 344
                frameX: 0
                frameY: 0
                frameDuration: 100
                frameCount: 7
                source: "images/boalsprite_blue.png"
            }
        ]
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            //spriteを入れ替える
            if(spriteNo === 1){
                _anime.jumpTo("second");
                spriteNo = 2;
            }else{
                _anime.jumpTo("first");
                spriteNo = 1;
            }
        }
    }
}


分かってないこと
・複数登録した「Sprite」を順番に再生できないのか
・「goalSprite」プロパティって結局なに?
 説明には現在アニメーションしているスプライトの名前って書いてあるが・・・。
 読んでも空っぽ

<Category : Qt>

検索

Google

サイドフィード

track feed 理ろぐ
人気ブログランキング - 理ろぐ
Powered by
Movable Type 3.34