よくある質問
全般
Flashを使わずに作ることはできますか?
基本的にLWFはFlash IDEを使わずに1からコードのみで作るといったことはできません。
必ずFlash IDE(CS5.5以降)が必要になります。
エンジニアもFlashを使わなくてはいけませんか?
LWFの制作自体はFlash IDEを用いることが必須ですが、LWFの制御はHTMLのjs側から行うこともできます。
なので、アニメーションや素材のコンテナとしてデザイナがLWFを制作し、その制御部分のjavascriptを書くのは
エンジニアが行う。といった形の場合はエンジニアはFlashを触ることなく作業することも可能です。
複数のLWFを使用することはできますか?
lwf-loader.jsというライブラリを併用することでLWFに別のLWFを読み込んで利用する。といった
FlashのloadSWFのようなことをすることが出来ます。
機能
Flashの着色機能は使えますか
Flashで設定した着色は反映されません。
しかし、 特殊効果付きビットマップという機能を使用することである程度、代用することが出来ます。
シェイプは使えますか
シェイプは使えません。ボタンのヒット範囲設定にのみ使用することができます。
テキストボックスの文字がでない
表示領域から文字がはみ出ると全部表示されなくなります
LWFS のファイル一覧が出ない
コンバートに失敗しているファイルがあると表示されないことがあるようです
最近変更を加えたファイルを確認してみましょう
ボタンが効かない、ボタンの様子がおかしい
ボタンにインスタンス名をつけ忘れているとボタンは動作しません
また、同じフレームに同じ名前のボタンインスタンスがあると、片方の script がもう片方に上書きされてしまうので
インスタンス名は被らないようにしてください。
ステージ上に静的配置した Movie の深度を変更したい
できません。
LWFS_works 下のフォルダの中に複数 fla, swf を置くとどうなるの
フォルダ名と一致する fla, swf が優先的に変換されます
movieをattachした直後にgotoAndPlayとかで飛ぶ際に1フレーム目の絵が一瞬見えたりする時がある
LWFはFlashと違い描画の処理とスクリプト処理が別々に動いているためズレが生じて
今回のようなケースが発生する場合があります。
なので、今回のケースでは1フレーム目には何も表示しない等してズレが発生しても支障がないような作りにしてください。
ズレが発生するのは不便ですが、描画とスクリプトが分かれていることにより、柔軟な再生設定の変更やフレームスキップ処理を行うことができます。
スクリプト
Movieのサイズはとれるのですか
Movieのサイズをwidthやheightといったプロパティで取得することはできません。
どうしても使いたいという場合、下記の手法で代用することができます。
- Movie.requestCalculateBounds()を使用する。
- Movieの中にボタンインスタンスを入れ、ボタンのサイズとMovieのscaleを掛け合わせる。
空のDOMやCanvasを生成することはできますか?
LWFのスクリプトで新しいDOMやCanvasといった要素を生成することはできません。
これを許してしまうとLWFの管理できる範囲を超えてしまいパフォーマンスの低下や
多様な描画方法に対応することができなくなってしまうので制限しています。
attachBitmapがうまくいかない
追加したい画像がFlash上で一度も使われていない可能性があります。Flash上で使用数0の画像はライブラリにあっても書き出されません
_rootってなんですか
一番上の階層への参照を保持するグローバルプロパティになります。
_root の変数にアクセスするには _root.hoge となります(this は不要)
1フレーム目で定義した関数が下層の1フレーム目で使えない
関数定義と実行タイミングの問題です。
フレームスクリプトは下層のムービークリップから実行されていきます。
なので、フレームに関数定義を書くと、同フレーム時間内ではそれより下層のムービークリップからは実行できません。
この問題を回避するには、関数の定義に js_load を使います
trace() したい
javascriptのconsole.log() を使います。
console.log() の出力内容を確認するには chrome の場合ブラウザ右クリック→要素を検証→Console タブ
gotoAndPlayやnextFrtameを複数使った時に間のスクリプトが実行されない
gotoAndPlay(2);
gotoAndPlay(5);
などとした場合、フレーム2のスクリプトは実行されずフレーム5のもののみ実行されます。
console.logが出ない
昔のlwf-loaderを使用して再生している場合、デフォルトではconsole.logを上書きしてログが出力されないようになっています。
最新のlwf-loaderを使うか、昔のバージョンで
LwfLoader.debug = true;
とするか
window.LWFLOADER_ENABLE_DEBUG = true;
と設定してください。
jsが実行されない
LWFS_work_outputフォルダを見て、jsファイル(xxxx.lwf.jsではない)が書き出されているか確認してみてください。
書き出されていない場合、workフォルダのflaファイルとswfファイルの名前が同じになっているか確認してください。
異なっている場合は同じファイル名になるようにしてください。
エラー
エラーの原因がわかりません
chrome の場合ブラウザ右クリック→要素を検証→Console タブでエラーが見れます
右端の ファイル名.js :行数 の部分をクリックすれば問題となっている箇所が表示されますが
LWF に変換された時に一括にまとめられた js のファイルになっているため、関数名から問題となってるシンボルを割り出します
問題のファイルが lwf.js になっている場合、lwf の関数を呼び出している元の関数に原因があります。
エラー文の左端の黒い三角をクリックすると、連鎖的に呼び出された関数の一覧が出るのでそれで元の呼び出し元をたどれます。
関数名が、V, di.z$Ab など奇妙な名前になっている場合は
LWFS 画面上部の current mode: release. と表示されている relase の部分をクリックし、 debug に切り替えると、わかりやすい関数名に直ります
使ってないスクリプトのエラーが出続けます
ムービークリップをステージ上に配置していなくてもリンケージされているので、スクリプトは書き出されます。
スクリプト内の { の数が合わないなどの問題は、スクリプトファイル全体に影響をおよぼすのでそのままにしておくとエラーの原因となります。
ライブラリィ内での種類をグラフィックにすれなどすればリンケージ外すことになるので一応回避できます
Flash CCでのパブリッシュ時にエラーが発生します
Flash CCではリンケージ名と同じインスタンス名のものがタイムライン上に配置されているとパブリッシュエラーを起こしてしまうようです。
なので、Publish for LWF.jsflで自動に設定されるリンケージ名と同じインスタンス名は使わないようにしてください。
Uncaught TypeError: Cannot read property controlOffset of undefined エラーが発生する
gotoAnd ~ の引数が 不正な場合によくでます。 大抵は undefined
Uncaught TypeError: Cannot read property 'width' of undefined エラーが発生する
特殊効果付きビットマップを使っているのに元の画像を どこにも使ってない時とかによく発生します。
グラフィックシンボルで使用されていても、そのグラフィックシンボルがどこにも使用されていない場合も同様です。
ムービークリップの場合は未使用でも問題ありません
Uncaught TypeError: Cannot read property 'hasMatrix' of null エラーが発生する
存在しないMovie のプロパティを参照している時に発生します