2009/06/22: Progression:addCommandでスコープの受け渡し
Progressionで自作コマンドを作っていて、ちょっとひっかかったところ。CastButtonなどの中にあるaddCommandの中でスコープを受け渡す方法です。
例えばCastButtonクラスの中で、
こうすると、HogeCommandクラス内のscope変数でCastButtonの参照が取れます。Commandクラスにあらかじめscopeという変数が用意されていました。でも説明ないし、あんまりこの件扱った記事も少ないのは、単に自分のCommandクラスへの理解が足りないのか。デザインパターンちゃんと勉強しよう、というメモ。
例えばCastButtonクラスの中で、
protected override function _onCastMouseDown():voidみたいな感じでCastButtonクラスへの参照を渡そうとすると失敗します。
{
addCommand(
HogeCommand( this )
);
}
protected override function _onCastMouseDown():voidも案の定ダメ。さて、正解(?)は・・・
{
var scope = this;
addCommand(
HogeCommand( this )
);
}
protected override function _onCastMouseDown():void
{
var hoge:HogeCommand= new HogeCommand();
hoge.scope = this;
addCommand(
hoge
);
}
こうすると、HogeCommandクラス内のscope変数でCastButtonの参照が取れます。Commandクラスにあらかじめscopeという変数が用意されていました。でも説明ないし、あんまりこの件扱った記事も少ないのは、単に自分のCommandクラスへの理解が足りないのか。デザインパターンちゃんと勉強しよう、というメモ。
2009/06/04: Progression:index.htmに張り付けると勝手にシーン移動しちゃう件
Progression 3.1.52を使って、外部から画像を読み込んで表示する仕組みを作っていると、「index.htmlで見ると画像が表示されない」という症状が出ました。index.swfやpreloader.swfを直接開いた場合は、正常に見られるのに、index.htmlでみると表示されないのです。サーバーでもローカルでも同じ症状でした。
FireBugで読み込み状況を見てみると、ちゃんと読み込んでいるようだし、Completeメッセージもトレースできているのに、なぜか表示されないのです。
追記:画像だけでなくMCをnewしても同じでした。
※ためしにProgression 3.1.62にアップデートしても同じでした・・・
不思議だぁ、と思って調べてみるとこのような記事を発見。
baseが上手く適応されない件(Progression3.1.2)
近いかもと思って同じ手順をたどってみましたが、baseはロストしておらず、正常に受け渡されていました。でも、この記事のindex2.htmlを作ってる部分のようにprogression.jsでなくswfobjectのembedSWFを直接呼び出してswfを貼り付けるととうまく動作したので、この辺が怪しいということになりました。
なので、この記事にあるようにいったんcompressする前のprogression.js(progression-unpack.js)をいただいてきて、手持ちのprogression.jsと置き換えます。そしてこのprogression.jsの関数embedSWF周辺をちょこちょこ調べてみると、原因がつかめました。
問題の個所は59行目。
ここではidとname属性を一気に同じ名前でつけていますが、どうやらここがいけないようです。この行全体をコメントアウトするか、どちらか一方のみ定義することで問題が解消しました。
追記:name属性を取ってしまうとswfaddressでエラーが出たので残しておいた方がよさそう。
ただ、id属性とname属性は同一にするの、間違ってない気が・・・。でも、swfobjectの中身まで探り出すときりがなくなるので、とりあえずこれで良しということに。
すみません、この件に関して何かご存知の方おられましたら、もしくはもっとちゃんとした対処法がありましたらご享受ください!
追記:どうも「表示されない」のではなく、勝手にトップのシーンに移動してしまっていることが判明。なぜだ!?ちょっと今日は時間がないので、また後日。もしかして、Progressionの使い方自体何か間違えているのかも・・・って気がしてきました、
追記:画像だけでなくMCをnewしても同じでした。
※ためしにProgression 3.1.62にアップデートしても同じでした・・・
不思議だぁ、と思って調べてみるとこのような記事を発見。
baseが上手く適応されない件(Progression3.1.2)
近いかもと思って同じ手順をたどってみましたが、baseはロストしておらず、正常に受け渡されていました。でも、この記事のindex2.htmlを作ってる部分のようにprogression.jsでなくswfobjectのembedSWFを直接呼び出してswfを貼り付けるととうまく動作したので、この辺が怪しいということになりました。
なので、この記事にあるようにいったんcompressする前のprogression.js(progression-unpack.js)をいただいてきて、手持ちのprogression.jsと置き換えます。そしてこのprogression.jsの関数embedSWF周辺をちょこちょこ調べてみると、原因がつかめました。
問題の個所は59行目。
c.attributes.id = c.attributes.name = "external_" + fc;
ここではidとname属性を一気に同じ名前でつけていますが、どうやらここがいけないようです。
追記:name属性を取ってしまうとswfaddressでエラーが出たので残しておいた方がよさそう。
c.attributes.name = "external_" + fc;
ただ、id属性とname属性は同一にするの、間違ってない気が・・・。でも、swfobjectの中身まで探り出すときりがなくなるので、とりあえずこれで良しということに。
すみません、この件に関して何かご存知の方おられましたら、もしくはもっとちゃんとした対処法がありましたらご享受ください!
追記:どうも「表示されない」のではなく、勝手にトップのシーンに移動してしまっていることが判明。なぜだ!?ちょっと今日は時間がないので、また後日。もしかして、Progressionの使い方自体何か間違えているのかも・・・って気がしてきました、
2009/03/19: Progression生成ファイルのFDでの文字化け
Progressionのプロジェクトを作成した時に自動的に生成されるASファイルをFlashDevelopで開くと文字化けしてしまいます。開いた後でエンコーディングをUTF-8に変更しても、まだ微妙に文字化けしちゃったり・・・
こういうときは、FlashDevelopの設定を変更してもう一回開くとうまくいくみたいです。やり方は、FlashDevelopの Tools > Program Settings で CodePageを下記のように設定します。
via 崖っぷちWEBデザイナーブログ | Progressionを試してみる1
こういうときは、FlashDevelopの設定を変更してもう一回開くとうまくいくみたいです。やり方は、FlashDevelopの Tools > Program Settings で CodePageを下記のように設定します。
via 崖っぷちWEBデザイナーブログ | Progressionを試してみる1