Lwfクラス

提供: LWF Wiki
2013年11月26日 (火) 13:11時点におけるTamago (トーク | 投稿記録)による版

移動: 案内検索

目次

Lwfクラスとは?

LWFクラスとはLWF全体を管理しているクラスになります。
LWF全体の設定変更や現在の設定を取得する際に利用します。
LWFインスタンスを取得するには下記のように行います

//LWFインスタンスを取得
var lef = <Movieインスタンス>.lwf;

Movieインスタンスはそれぞれ自分たちを管理しているLWFインスタンスを所持しているので
上記のようにMovieを経由して取得します。

フレームレートを取得する

現在のフレームレートを取得することができます。
下記がサンプルになります。

//フレームレートを取得
var frameRate = <lwfインスタンス>.frameRate;

なお、読み取り専用なので、ここの値を書き換えたからといってフレームレートを変更することはできません。
フレームレートを変更する場合はsetFrameRate()を使用します。

フレームレートを変更する

フレームレート(FPS)を変更することができます。
再生速度を変更したい時に使用してください。
下記がサンプルになります。

//フレームレート(FPS)を変更し倍速再生する(元が30fpsの場合)
<lwfインスタンス>.setFrameRate(60);

setFrameRateの第1引数には設定したいフレームレートを設定します。

フレームスキップ機能を使う

LWFではデフォルトではフレームスキップがONになっており、処理が重い箇所では
描画のスキップを行うことで再生速度が遅くなることを防いでいますが
見せたい箇所もスキップされてしまう可能性があります。そういう時のために
フレームスキップ機能をOFFにすることもできます。
下記はサンプルになります

//フレームスキップをOFFにする
<lwfインスタンス>.setFrameSkip(false);

フレームスキップ量の上限を設定する

フレームスキップをかける際に1回の処理でスキップしていいフレーム数の上限を設定することが出来ます。
デフォルトでは1回の処理で3フレーム分までスキップ可。という設定になっています。
スキップはかけたいけど、適度にかけたい。又は、どんどんスキップしていいので再生時間を長くしたくない。
といった場合に使用します。

//30fpsのコンテンツに対して、1回の処理で10フレームまではスキップを許可する場合
<LWFインスタンス>.set.setPreferredFrameRate(30,10);


setPreferredFrameRate()は
第1引数:設定したいfps
第2引数:1回の処理でスキップしてもよいフレーム数の上限。デフォルト値は2
という感じになっています。

特にfpsを変更する必要がない場合は第1引数は、元と同じfpsを設定してください。

ステージサイズを取得する

現在のステージサイズを取得することができます。 LWFはFlashで設定したステージサイズとは別のサイズで再生することができるます。
端末の画面比率にあわせてステージサイズを変更するといったことも可能です。
その際の判別用にステージサイズを取得します。
下記がサンプルになります。

//ステージサイズを取得
var size = <lwfインスタンス>.getStageSize();
//ステージサイズをログ出力
console.log(size.width, size.height);

rootに該当するMovieを取得する

lwf全体のrootに該当するMovieインスタンスを取得することができます。
下記がサンプルになります。

//rootのMovieインスタンスを取得
var rootMovie = <lwfインスタンス>.rootMovie;

また、_rootでもrootのMovieを取得することができます。
下記がサンプルになります。

//rootのMovieインスタンスを取得
var rootMovie = _root;

ステージオブジェクトを取得する

lwf全体のベースとなるHTML要素を取得することができます。
下記がサンプルになります

//lwfのステージとなっているHTML要素を取得
<lwfインスタンス>.stage;

※LWF側からステージを無闇に操作すると不具合の原因にもなるので
極力、LWFの外に影響するような処理はLWF内では行わないようにしてください。

特定のラベル名のフレーム番号を取得する

Movieインスタンスに設定されているラベルのフレーム番号を取得することができます。
下記はサンプルになります。

//ラベルが設定されているフレームを取得
var frame = <lwfインスタンス>.searchFrame(movie, "label");

searchFrameの第1引数は、調査対象となるMovieインスタンス。
第2引数は、調べたいラベル名を設定します。
もし、見つからなかった場合は-1が返ってきます。

特定の場所までスキップする

タイムラインではgotoAndPlay()等で特定のフレームまでスキップする。
といったことが可能ですが、間にスクリプト処理などが含まれている場合は使えません。
そんな場合のために、スクリプト処理を行いつつスキップをするといった機能があります。
下記がサンプルになります。

//スキップをONに
<lwfインスタンス>.setFastForward(true);
//処理を解放する間隔を設定
<lwfインスタンス>.setFastForwardTimeout(100);

.....

//スキップをOFFに
<lwfインスタンス>.setFastForward(false);

スキップをONにしている間は、描画処理を行わずスキップ機能がOFFになるまで内部の処理のみを回し続けることでスキップ機能を実現しています。
なので、もしスキップがOFFにする処理が入っていないと、そのまま固まってしまうので注意しましょう。
また、スキップするフレーム数や、その間のスクリプトの処理の重さによりスキップ処理にかかる時間が変動します。
なので、この機能を使用する際は下記の条件に当てはまるときのみ使用することをオススメします。

  • スキップするフレームが短い。
  • スキップする間にスクリプトが使用されている。

setFastForwardTimeout()は、長時間ループ状態になっているとブラウザが停止してしまうため
一定間隔ごとにループを抜ける時間をミリ秒単位で設定することができます。

全てのトゥイーンクラスによる動作を停止する

Tweenクラスで設定されているアニメーションを全て停止させることができます。
下記がサンプルになります。

//全てのTweenによる処理を停止
<lwfインスタンス>.stopTweens();

現在のレンダラを取得したい

現在使用されているレンダラ(WebkitCSS、Canvas、WebGL)を取得したい場合、下記のようにして取得することができます。

【サンプル】
//現在のレンダラを表示
var rendererName = (LWFインスタンス).resourceCache.getRendererName();
console.log(rendererName);