|
|
Line 1: |
Line 1: |
− | {{notice|AnAL は LOVE 0.5.0 のアニメーションを LOVE 0.6.0 にて再現するための互換ライブラリですが、積極的に開発されていないため、新規プロジェクトには別のライブラリを選択することが推奨されます。}} | + | {{notice|AnAL は LOVE 0.5.0 のアニメーションを LOVE 0.6.0 にて再現するための互換ライブラリですが、積極的に開発されていないため、新規プロジェクトには別のライブラリを選択することが推奨されています。}} |
− | | |
− | AnAL (ANimations And Love) ― アン・アルは [[Lover (日本語)|Lover]] のための最小のコード変更にて LÖVE [[0.5.0]] のアニメーション (LÖVE [[0.6.0]] にて廃止) を置き換えるためのライブラリです。
| |
− | | |
− | == コードの変更 ==
| |
− | * love.graphics.newAnimation(...) は newAnimation(...) になります。
| |
− | * love.graphics.draw(anim, ...) は anim:draw(...) になります。
| |
− | * anim:setMode() は文字列定数を使用します。
| |
− | | |
− | === 互換方式 ===
| |
− | さらに同等の機能として互換方式があり、それは love.graphics.newAnimation を追加して love.graphics.draw を変更します。
| |
− | | |
− | <source lang="lua">
| |
− | Animations_legacy_support = true
| |
− | </source>
| |
− | | |
− | 欠点として love.graphics.draw の挙動が変更されてしまうため、渡された全てのテーブルにある特注の描画フィールドを呼び出してしまいます。
| |
− | | |
− | == チュートリアル ==
| |
− | お恥ずかしながら古い 0.5.0 チュートリアル (旧 Wiki にあったもの) から借用したものです。これを 0.6.x にてこれから動作させたいと思います。
| |
− | | |
− | [[Image:Resource-AnalExplosion.png|thumb|none|単純な爆発。]]
| |
− | | |
− | この画像の情報は:
| |
− | * 寸法: 480 × 288 ピクセル
| |
− | * フレームの大きさ: 96 × 96 ピクセル
| |
− | * フレーム: 5x3 = 15
| |
− | さて、このアニメーションを読み込む手順に目を通しましょう。まず始めに、[https://raw.github.com/bartbes/love-misc-libs/master/AnAL/AnAL.lua こちらから] '''AnAL.lua''' を必ずダウンロードしてください。このファイルを '''main.lua''' ファイルがある ZIP 書庫へ格納してください。そして、このコードを必ず全て記述してください:
| |
− | <source lang="lua">
| |
− | require("AnAL")
| |
− | </source>
| |
− | その後にアニメーションの転送元から読み込んでアニメーションを作成する必要があります:
| |
− | <source lang="lua">
| |
− | function love.load()
| |
− | | |
− | -- アニメーションの転送元から読み込みます。
| |
− | local img = love.graphics.newImage("explosion.png")
| |
− |
| |
− | -- アニメーションの作成。
| |
− | anim = newAnimation(img, 96, 96, 0.1, 0)
| |
− |
| |
− | end
| |
− | </source>
| |
− | | |
− | | |
− | 最初に、アニメーションで使用される転送元の画像を読み込む必要があります。そして、 newAnimation() によりアニメーションを作成します。第一引数は以前に読み込まれた転送元の画像です。第二引数はフレームの幅、第三引数はフレームの高さ、さらに第四引数は各フレーム後の遅延値(秒単位)です。画像の大きさ、またはフレーム数に関して配慮する必要はありません。フレーム数へ 0 が指定された場合でも、処理が行われます。
| |
− | | |
− | これで完了しましたが、あと二つ残りがあります: アニメーションの更新および表示です。アニメーションではフレームの変更を行うために経過時間の値を検出する必要があるため、更新は必要です。下記のリストはアニメーションを動作させるための完全なコードです。
| |
− | <source lang="lua">
| |
− | function love.load()
| |
− | local img = love.graphics.newImage("explosion.png")
| |
− | anim = newAnimation(img, 96, 96, 0.1, 0)
| |
− | end
| |
− | | |
− | function love.update(dt)
| |
− | -- アニメーションの更新 (フレームの変更を有効化)。
| |
− | anim:update(dt)
| |
− | end
| |
− | | |
− | function love.draw()
| |
− | -- アニメーションを (100, 100) へ描画します。
| |
− | anim:draw(100, 100)
| |
− | end
| |
− | </source>
| |
− | | |
− | これでアニメーションは (100,100) へ描画されます。
| |
− | | |
− | | |
− | アニメーション方式の移動について。三種類の定義済みのアニメーション方式があります: loop, once および bounce です。標準の動作は loop です。この方式が有効化された場合は、最後のフレームへ到達したときに巻き戻されて最初のフレームからアニメーションを再生します。 once 方式が有効化された場合は、一度だけ再生され、その後は停止します。最後に、 bounce 方式が有効化された場合は、最初および最後のフレーム間で "ping-pong" (卓球)が発生するため、最後のフレームへ到達したとき最初のフレーム方向へ逆再生されます。下記のコード・ブロックのように方式の設定を指示することができます。
| |
− | <source lang="lua">
| |
− | function love.load()
| |
− | local img = love.graphics.newImage("explosion.png")
| |
− | anim = newAnimation(img, 96, 96, 0.1, 0)
| |
− |
| |
− | -- 方式定数:
| |
− | -- loop
| |
− | -- bounce
| |
− | -- once
| |
− |
| |
− | -- 方式を "bounce" に設定します。
| |
− | anim:setMode("bounce")
| |
− |
| |
− | end
| |
− | </source>
| |
− | | |
− | == 説明書 ==
| |
− | | |
− | === 関数一覧 ===
| |
− | 以下は関数の一覧です。
| |
− | * addFrame(x, y, w, h, delay)
| |
− | * setMode(mode)
| |
− | * play()
| |
− | * stop()
| |
− | * reset()
| |
− | * seek(frame)
| |
− | * getCurrentFrame()
| |
− | * getSize()
| |
− | * setDelay(frame, delay)
| |
− | * setSpeed(speed)
| |
− | * getSpeed()
| |
− | * getWidth()
| |
− | * getHeight()
| |
− | * update(dt)
| |
− | | |
− | === 説明 ===
| |
− | ここでは関数の引数に関する若干の説明をします (その他は説明不要です)。
| |
− | | |
− | ==== addFrame ====
| |
− | * x: 画像にあるフレームの x 位置
| |
− | * y: 画像にあるフレームの y 位置。
| |
− | * w: フレームの幅
| |
− | * h: フレームの高さ
| |
− | * delay: 次のフレームへ移行する前の待ち時間の値
| |
− | | |
− | ==== setMode ====
| |
− | * mode: 方式は "once", "loop" (標準) または "bounce" のいずれかであり、詳細情報はチュートリアルにあります。
| |
− | | |
− | ==== seek ====
| |
− | * frame: アニメーションにおいてのフレームの移動先
| |
− | | |
− | ==== setDelay ====
| |
− | * frame: フレームを変更するまでの遅延値
| |
− | * delay: 次のフレームへ移行する前の待ち時間の値
| |
− | | |
− | ==== setSpeed ====
| |
− | * speed: アニメーションの再生速度であり、 1 は実時間、 2 は二倍速で高速再生します
| |
− | | |
− | ==== update ====
| |
− | * dt: 次のフレームへ移行可能にするためにアニメーションの更新します
| |
− | | |
− | == 関連 ==
| |
− | [[(User):Bartbes (日本語)|Bartbes]] は AnAL, [[SECL (日本語)|SECL]], [[LUBE (日本語)|LUBE]] の制作者です。
| |
− | | |
− | == ダウンロードのリンクおよび議論 ==
| |
− | [http://love2d.org/forums/viewtopic.php?f=5&t=948 フォーラムのスレッドにて]
| |
− | | |
− | {{#set:LOVE Version=0.6.x}}
| |
− | {{#set:Description=LOVE 0.6.0 以降用のアニメーション・ライブラリ}}
| |
− | | |
− | == そのほかの言語 ==
| |
− | {{i18n|AnAL}}
| |