[AS3][?]画像ファイルをEmbedしても正常に表示できないことがある

(まだ、ちゃんと検証してないけど)
FlashCS4で発生した奇奇怪怪な現象。

よく似た画像ファイル2枚をEmbedで埋め込むと1枚しか表示されない。
さらにどっちが表示されるかは、パブリッシュするたびに異なる。

発生した条件。
画像の縦横幅が同じ。
ファイルサイズの誤差が1kb未満
(例:24kbと24.5kbとか)
もちろんこの二つのファイル名は変えてある。

どうもFlash側でこの条件のファイルは同じ画像と認識されてるくさい。
で、結果的には、前のエントリと似たようなことになるんではないかと思う。
あとでちゃんと調べる。

つまりは、IDEでEmbedなんて使うなってことらしい。

[AS][?]画像のEmbedは1回しか使えない?

よくわからんけど、他のクラスでEmbed済みの画像を別のクラスでEmbedしても表示もされなかった。
エラーも出ないから、かなりはまった。
とりあえず、あとで検証する。

[AS][?]FLV読み込み時のonMetaDataを取得するタイミングがわからない

ちょっと気持ち悪いのでメモ

◆現象◆
簡単なFLVプレイヤーでインターフェースは再生ボタンと、頭出しボタン。
FLVPlaybackではなく、Videoオブジェクトによる自作。
この記事にかいてあるLoadMovieクラスの拡張版のような感じ。
(実際はもっとごちゃごちゃしてるのであとで時間ができたら簡略版を作って検証・記載する、つもり)
NetStream.clientにて、onMetaDataを取得するようにしてある。
NetStream.play(“xxx.flv”)で、MetaDataが取得は問題ないのだけど、頭だしボタンを押したときもMetaDataが取得される場合がある。
(読み込むFLVファイルによっては、頭出ししてもMetaDataが取得されない場合がある)
頭出しの処理は、NetStream.seek(0);

seek(0)から再生させたときにonMetaDataを取得するということなのか?
(seek(0)のタイミングではなくって、そこから再生させたら、みたいな感じ)
flvファイルによって、上記条件でMetaDataを取得したり、しなかったりという感じが???なのです。
原因よくわからんのでとりあえず例外処理書いたけど、なんか気持ち悪い。

[JSFL][?]JSFLでモーショントゥイーン(色)させる

久しぶりにタイムラインでの作業。
MCのカラーを黒→赤、または赤→黒といったモーション(時間は4フレーム)で行うという作業が大量に発生。
最初はとりあえずクラシックトゥイーンにショートカットを割り当ててシコシコやっていたけど、よく考えたら、全部コマンド化して一括に実行すればいいんじゃね?と思い、試してみました。

まずはヒストリパネルから、必要な手順を選んでjsfl化しようと思ったのですが・・・
フレームの移動の部分をjsfl化してくれないので無理ということに。
※ヒストリパネルからコマンド作成は、↓の記事が参考になりました。
Mattari Blog:jsflのすすめ

じゃあ、足りない部分は自分でjsfl書いてみる!ということでjsfl初チャレンジ!!

で、できたのがこちら。


// 赤になる
// This command was recorded by Adobe Flash CS4.

//タイムラインを変数で保持
var path = fl.getDocumentDOM().getTimeline();

// インスタンスの濃淡: '#ff0000', 100%
fl.getDocumentDOM().setInstanceTint('#ff0000', 100);

//フレーム数を取得
var fr4 = path.currentFrame-4;

//指定したフレームをキーフレームに変換
path.convertToKeyframes(fr4);

//指定したフレーム数をモーショントゥイーンに変換
path.createMotionTween(fr4);

// 黒になる
// This command was recorded by Adobe Flash CS4.

var path = fl.getDocumentDOM().getTimeline();

// インスタンスプロパティ: colorMode, none
fl.getDocumentDOM().setElementProperty('colorMode', 'none');

//フレーム数を取得
var fr4 = path.currentFrame-4;

//指定したフレームをキーフレームに変換
path.convertToKeyframes(fr4);

//指定したフレーム数をモーショントゥイーンに変換
path.createMotionTween(fr4);

使い方としては、トゥイーンを終了させたい位置にキーフレームを打って、上記のコマンドを実行すると、
それぞれ4個前のフレームから始まるモーショントゥイーンが設定されます。

本当は、最初のキーフレームを打つ部分もjsflにまとめたかったのだけど、その処理を入れると色のプロパティを変更する処理が実行されなかったのよね・・・
なんかできそうな気はするけど、こんどえらい人に聞いてみよう。

[AS][?]progression addCommandのexecute()について

_onload(),_onInit(),_onCastAdded(),_onCastRemoved(),_onGoto()などのoverride系のメソッドの中のaddCommand()は、execute()無しで、自動的に実行されるみたい。

addCommand()はリスト(CommandList?)にコマンドを追加するメソッドで、色んなクラスに入っている。
が、しかし、
CommandListクラスのメソッドのaddCommand()と
SceneObjectクラスのメソッドのaddCommand()とでは
動作の意味が若干違うみたい。(ドキュメントに書いてあることが違うし)

[AS][?]xmlから取得したデータをBoolean型として認識するには?

なんかうまくできなかった。

[AS][?]loaderInfo.addEventListener( Event.COMPLETE, _complete );

loaderInfo.addEventListener( Event.COMPLETE, _complete );
↑これってメインのタイムラインとかドキュメントクラスには書いといた方がいいのかな?

[AS][?]progression ParallelListとかSerialListについて

まずはドキュメントのサンプルより

パラレルリストの中にパラレルリストを作って実行しているがメリットがわからない・・・

var list:ParallelList = new ParallelList();
list.addCommand(
new ParallelList( null,
new Trace("この Trace コマンドは同時に実行されます。" ),
new Wait( 1000 ),
new Trace( "この Trace コマンドは同時に実行されます。" ),
new Wait( 1000 ),
new Trace( "この Trace コマンドは同時に実行されます。" )
);
list.execute();

コマンド内に書くとexecute();無しでも自動で実行されるのでシンプルな感じ
↓これで上と同じ意味になってるっぽいけど厳密には違うのかしら?

addCommand(
new ParallelList( null,
new Trace( "この Trace コマンドは同時に実行されます。" ),
new Wait( 1000 ),
new Trace( "この Trace コマンドは同時に実行されます。" ),
new Wait( 1000 ),
new Trace( "この Trace コマンドは同時に実行されます。" )
)
);

[AS][?]progressionでのprogression.containerについて

gihyoでのプログレッション特集4のサンプルでの疑問点

各シーンの閉じるボタンを表示リストに追加する際に、各シーンに割り当ててるページ(CastSprite)ではなく、SceneObject自体に追加している。
これは、閉じるボタンの戻り先を設定をする際、SceneObjectじゃないと、sceneId:progression.root.sceneIdが使えないから・・・でいいののか?
(CastSpriteはprogressionプロパティをもっていないので)

それでも、CastSpriteに閉じるボタンをおきたいときは、
progression.root.sceneIdをtraceすると中身は”/index”だったので、、、
var sId:SceneId = new SceneId(“/index”);とSceneIdのインスタンスを用意して
sceneId:sId;
としてあげればOKでした。

[AS][?]最初のフレームに書き出し、について

元記事

AS2で、attachMovieを使ってステージに配置するとき、リンケージプロパティの、最初のフレームに書き出しにチェックが入っているときの注意。
これは1フレーム目のフレームアクションよりも先に、attachMovieされてしまうということだろうか?
つまり1フレーム目のフレームアクションにローディング処理が書かれていても、先にattachされてしまっているために、attachした分の読み込み状況が確認できないという事態になるのだろう。

対処法は元記事に書かれているとおり。

ただ最初のフレームに書き出しにチェックを外した場合、ステージ上にattachするMCをあらかじめ配置しておかないといけない。

(attachの仕方はこちらもかなり参考になる。)

ということは改めてattachする意味ってあるのか?
最初からステージに置いとけなくてattachがmustなケースってどんなケースだろ。

>追記
クラスをリンケージしたMCを使うときは、このケースがmustっぽいかな。