gihyo.jp » DEVELOPER STAGE » 連載 » ついにベールを脱いだJavaFX » 第9回 アニメーションを用いてより魅力的に[応用編]

ついにベールを脱いだJavaFX

第9回 アニメーションを用いてより魅力的に[応用編]

前回は基本的なアニメーションということで,javafx.animation.Timelineクラスとjavafx.animation.KeyFrameクラスの使い方を紹介しました。今回は,応用編ということで,標準で提供されているさまざまなアニメーションについて紹介していきます。

今回,紹介するアニメーションはすべてjavafx.animation.transitionパッケージで定義されており,javafx.animation.transition.Transitionのサブクラスとなります。Transitionクラスは内部にアトリビュートとしてTimelineオブジェクトを保持しています。このため,Timelineクラスを使わずともアニメーションを実現することができます。

なお,今週使用したサンプルのソースを含めたNetBeansのプロジェクトは下記のリンクよりダウンロードすることができます。

移動,拡大・縮小,そして回転

前回のサンプルで移動のアニメーションを使用したように,移動のアニメーションはもっともよく使われるアニメーションの1つです。その他にも拡大・縮小と回転がよく使用されています。

そのため,これら3種類のアニメーションは,簡単に実現できるように専用のクラスが提供されています。それぞれ,移動がTranslateTransitionクラス,拡大・縮小がScaleTransitionクラス,回転がRotateTransitionクラスとなります。これら3つのクラスの使い方は共通しているので,ここでは回転を行うRotateTransitionクラスを使ってみましょう。

これらのクラスのスーパークラスであるTransitionクラスはnodeアトリビュートを持ちます。このnodeアトリビュートが回転や移動の対象となります。

リスト1

var node: Node = Group { ... };

var rotateTransition = RotateTransition {
    // 回転の対象ノード
    node: node
    
    // 回転角度の設定
    // 0度から720度回転させる
    fromAngle: 0
    byAngle: 720

    // これらのアトリビュートは Timeline クラスに準ずる
    duration: 5s
    repeatCount:4
    interpolate: Interpolator.EASEBOTH
    autoReverse: true
};

// 回転の開始
rotateTransition.play();

回転の角度を設定するには,開始角度と回転角度を指定する方法と,開始角度と終了角度を指定する方法があります。開始角度と回転角度は,それぞれfromAngleアトリビュートとbyAngleアトリビュートを設定します。開始角度と終了角度は,fromAngleアトリビュートとtoAngleアトリビュートで設定します。ここでは,青字で示したようにfromAngleアトリビュートとbyAngleアトリビュートを使用しました。

回転の中心はノードの中心です。もしノードの中心以外の点を回転中心にしたい場合は,ダミーの透明なノードで中心を調節するか,RotateTransitionクラスを使わずに直接Timelineクラスを使用するようにします。

durationアトリビュートやrepeatCountアトリビュートなどはTimelineクラスを使用した時と同じです。補間方法はKeyFrameクラスではtween演算子を使用しましたが,ここではinterpolateアトリビュートで指定します。

最後にアニメーションを開始させるため,play関数をコールします。タイムラインを制御するplay関数などの関数もTimelineクラスと同じです。

次にノードを表示する部分を示します。

リスト2

Stage {
    title: "Rotate Sample"
    scene: Scene {
        width: 200
        height: 200
        content: [
            node
        ]
    }
}

特に難しい部分は何もありません。単に変数nodeを描画しているだけです。ここでは変数nodeは6つの円としました。

リスト3

def radian = Math.PI / 180.0;

var node: Node = Group {
    translateX: 100
    translateY: 100
 
    // 6個の円
    content: [
        for (angle in [0..300 step 60]) {
            Circle {
                centerX: 50.0 * Math.cos(angle * radian);
                centerY: -50.0 * Math.sin(angle* radian);
                radius: 35
                fill: Color.PINK
                stroke: Color.RED
            }
        },
        // 重ね順を調節するための半円
        Arc {
            centerX: 50,
            centerY: 0
            radiusX: 35,
            radiusY: 35
            startAngle: 180,
            length: 180
            type: ArcType.OPEN
            fill: Color.PINK
            stroke: Color.RED
        }
    ]
};

最後のArcオブジェクトがないと,最後の円が一番上になってしまいます。そこで,Arcオブジェクトで最初の円の一部を上書きしています。このようにすることで,すべての円が一部隠れるようになります。

実行結果を図1に示します。いつもと同じようにこの図もアプレットページへのリンクになっています。これ以降も実行結果の図はアプレットのページへのリンクになっています。また,スクリプトも記載しておきますので,参考になさってください。

著者プロフィール

櫻庭祐一(さくらばゆういち)

横河電機に勤務するかたわらJava in the Boxにて新しい技術を追い続けています。JavaOneは今年で11年目。名実共にJavaOneフリークと化しています。

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

もっと便利に!jQueryでラクラクサイト制作(実践サンプル付き)

本連載では,実践サンプルとともに,jQueryを上手に活用してサイト制作の品質向上・効率化を実現するための実践テクニックを解説します。

サクセスストーリーに続く,快適サーバー運用管理のヒント!

サーバーを自社で運用管理するのはもう限界…。データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

続・先取り! Google Chrome Extensions

2010年1月のリリースが予定されているGoogle Chrome 4に搭載されるExtensionsについて,その詳細を先取りで解説します。最新情報から,ユーザースクリプトやテーマの作り方など関連情報もお届けします。

モダンPerlの世界へようこそ

この連載では,Perlの世代間ギャップに悩んでいる方に,いくらかの背景知識と,これだけは知っておいたほうがよいという最低限の慣用句をお届けします。

Hosting Department:ホスティングを活用するための基礎知識

本連載では,ホスティングサービスを活用する上で知っておきたい基礎知識を解説します。

Blogopolisから学ぶ計算幾何

計算幾何学は,図形に関するアルゴリズムを研究するコンピュータサイエンスの一分野です。本連載では,ビジュアルブログ検索エンジン「Blogopolis」で採用されている計算幾何のアプローチを例に取り上げながら,計算幾何の初歩を実践的に学習します。

Windows phoneアプリケーション開発入門

Windows Marcketplace for Mobileがサービス開始され,作成したアプリケーションを個人でも世界をターゲットに公開できる環境が整ってきました。これを機にWindows phoneアプリケーションの開発をしてみませんか?

いま,見ておきたいウェブサイト

この連載では,国内外の最新のウェブサイトを隔週更新で取り上げ,これら最新サイトの特徴や素晴らしい部分を,さまざまな角度から解説していきます。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス

最近のコメント