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