2009/02/05: Loader(AS3)でAS2で作成のSWFを読み込むと音が出ない件
以前、AS2で作ったサイトにAS3で作ったプリローダーをかませると、
音が出なくなってしまいました。
このように、LoaderクラスでAS2で作成のSWFを読み込むと音が出なくなる件の解決方法です。
読み込まれる側の方(AS2の方)で、Soundオブジェクト作成の際、
引数にtargetを指定します。
var hoge_sound:Sound = new Sound();
↓
var hoge_sound:Sound = new Sound(this);
もしくは
var hoge_sound:Sound = new Sound(_root);
とか
これで、鳴るようになります。
上述のような組み合わせの場合はチェックが必要ですね。
音が出なくなってしまいました。
このように、LoaderクラスでAS2で作成のSWFを読み込むと音が出なくなる件の解決方法です。
読み込まれる側の方(AS2の方)で、Soundオブジェクト作成の際、
引数にtargetを指定します。
var hoge_sound:Sound = new Sound();
↓
var hoge_sound:Sound = new Sound(this);
もしくは
var hoge_sound:Sound = new Sound(_root);
とか
これで、鳴るようになります。
上述のような組み合わせの場合はチェックが必要ですね。
2008/07/26: MCをフェードで切り替えるときはBitmapDataを使うといい
ムービークリップのアルファ値を変化させて、フェードインやフェードアウトなどをするときに、そのままやると内包するMCが透けちゃって微妙・・・何てことがあります(下図参照)。
そういうとき、BitmapDataを使ってやるといい感じでした。
主要部分はこんな感じです。
> サンプル
> ソース
それぞれ別のMCを内包している2つのMCをクロスフェードさせます。
「普通のフェード」は、そのままのMCごとクロスフェード。
「コピーしてフェード」は、一旦BitmapDataでコピーしたダミーを使ってクロスフェードし、最後に元のMCと置き換えています。
そういうとき、BitmapDataを使ってやるといい感じでした。
主要部分はこんな感じです。
function fade_bitmap( _old_mc:MovieClip, _new_mc:MovieClip, _frame:Number) :Void
{
var copy_old = copyImage(_old_mc);
var copy_new = copyImage(_new_mc);
copy_old._alpha = 100;
copy_new._alpha = 0;
copy_old.tick = 100/((_frame != undefined) ? _frame : 10);
copy_old.onEnterFrame = function() {
// fade
this._alpha -= this.tick;
copy_new._alpha += this.tick;
if (this._alpha<=0) {
delete this.onEnterFrame;
// delete copies
this.removeMovieClip();
copy_new.removeMovieClip();
// show source
_new_mc._visible = true;
}
};
}
function copyImage( _source:MovieClip ):MovieClip
{
_source._alpha =100;
_source._visible = true;
var copy = _root.createEmptyMovieClip("cover_"+_root.getNextHighestDepth(), _root.getNextHighestDepth());
var screen:BitmapData = new BitmapData( _source._width , _source._height ,true);
screen.draw( _source );
copy.attachBitmap(screen,1);
copy._alpha = 100;
copy._x = _source._x;
copy._y = _source._y;
_source._visible = false;
return copy;
}
> サンプル
> ソース
それぞれ別のMCを内包している2つのMCをクロスフェードさせます。
「普通のフェード」は、そのままのMCごとクロスフェード。
「コピーしてフェード」は、一旦BitmapDataでコピーしたダミーを使ってクロスフェードし、最後に元のMCと置き換えています。
2008/02/06: Flashのフレームワーク
Flashサイトを効率的に作るためにフレームワークというやつを試してみようと思い立ちました。
いろいろ見て回って、なんとなくよさそうなのがこれ。
CASA Framework
trick7のteraさんとか、いろんなひとがお勧めしているのでリソースも結構あるし、入門にはもってこいかなと。
trick7のteraさんは、XPath4AS2を使うよりも、CASAの中のXmlLoad クラスと、XmlUtil クラスを使った方がいいとおっしゃっていますし、他にもマウスホイール系とか、カスタムイベントとか楽にできそうです。XPath4AS2は、重さを感じたことはなかったけど(そんなにデータ量ないのしかつかってなかったので)、確かにちょっと面倒くさかったしいいかもです。
その他にも、Flash用のフレームワークはいっぱいあって、例えばAdobeのサイトではこんなのが取り上げられてました。
Progression
チュートリアル
AS3なんですが。フレームワーク使って気軽にAS3に触れれば、使えるようになって来るんでしょうか。
とにかく、フレームワーク便利そうです。先人の知恵を使うに越したことはありません。
ついでに他にも、
ARP
Pixlib
Cairngorm
これらは、karate systemさんのとこに紹介されていました。
いろいろあって迷うけど、CASAはAS3にも対応予定らしいのでこれ使います。
あとは、FuseKitも使いこなせれば、だいぶ開発効率が上がる予感。あとは予感を実感にしたい。
それではまた。
いろいろ見て回って、なんとなくよさそうなのがこれ。
CASA Framework
trick7のteraさんとか、いろんなひとがお勧めしているのでリソースも結構あるし、入門にはもってこいかなと。
trick7のteraさんは、XPath4AS2を使うよりも、CASAの中のXmlLoad クラスと、XmlUtil クラスを使った方がいいとおっしゃっていますし、他にもマウスホイール系とか、カスタムイベントとか楽にできそうです。XPath4AS2は、重さを感じたことはなかったけど(そんなにデータ量ないのしかつかってなかったので)、確かにちょっと面倒くさかったしいいかもです。
その他にも、Flash用のフレームワークはいっぱいあって、例えばAdobeのサイトではこんなのが取り上げられてました。
Progression
チュートリアル
AS3なんですが。フレームワーク使って気軽にAS3に触れれば、使えるようになって来るんでしょうか。
とにかく、フレームワーク便利そうです。先人の知恵を使うに越したことはありません。
ついでに他にも、
ARP
Pixlib
Cairngorm
これらは、karate systemさんのとこに紹介されていました。
いろいろあって迷うけど、CASAはAS3にも対応予定らしいのでこれ使います。
あとは、FuseKitも使いこなせれば、だいぶ開発効率が上がる予感。あとは予感を実感にしたい。
それではまた。
2008/01/30: FLASHのswfファイルの容量を軽くする方法 (2)
久々の更新。
携帯サイトで、Flashの容量を軽くする方法、第2弾。
Flashでのアニメーションについてですが、
シェイプトゥイーンなどは、100フレーム分ぐらいのアニメーションでも
数KBの容量になったり、携帯サイトではバカにならない容量を食います。
で、当然これをシンボル化して容量を軽くしようと試みるわけですが、
やり方によって、かなり容量が変わってきます。
特に変わってくるのが、
・グラフィックシンボルのループ再生
・ムービークリップ
で、見た目的にはどちらも同じ動きなんですが、
グラフィックシンボルの場合は、
ループの動きのデータをベタのアニメーションとして
書き出してしまうようなので、データがループした回数分重くなるようです。
それに対して、ムービークリップの場合は、
ひとつの動きを、繰り返し再生させるということになるようで、
圧倒的に軽くなります。
なので、容量を軽くするには、なるべく、ムービークリップでループさせるのが
良いということが分かりました。
同じ動きを数箇所で使うときは、極力ムービークリップを使いましょう。
携帯サイトで、Flashの容量を軽くする方法、第2弾。
Flashでのアニメーションについてですが、
シェイプトゥイーンなどは、100フレーム分ぐらいのアニメーションでも
数KBの容量になったり、携帯サイトではバカにならない容量を食います。
で、当然これをシンボル化して容量を軽くしようと試みるわけですが、
やり方によって、かなり容量が変わってきます。
特に変わってくるのが、
・グラフィックシンボルのループ再生
・ムービークリップ
で、見た目的にはどちらも同じ動きなんですが、
グラフィックシンボルの場合は、
ループの動きのデータをベタのアニメーションとして
書き出してしまうようなので、データがループした回数分重くなるようです。
それに対して、ムービークリップの場合は、
ひとつの動きを、繰り返し再生させるということになるようで、
圧倒的に軽くなります。
なので、容量を軽くするには、なるべく、ムービークリップでループさせるのが
良いということが分かりました。
同じ動きを数箇所で使うときは、極力ムービークリップを使いましょう。
2008/01/22: PhotoShopの画像を、Flashに効率よく取り込む方法
これは、まだ要調査なのですが、とりあえず現時点で、これかなという方法。
1.
PSDデータをFireWorksで開く
2.
Flashに移したい画像を、
FireWorks上で、選択&コピーして、Flashにペースト
この方法の何が良いかというと、いちいちオブジェクトごとにPhotoShop上でトリミングしなくても良い点です。
ちなみに、上記のやり方は、CS3でしか試していないので、他のバージョンでうまくいくかどうかは分かりません。
CS3からは、PSDファイルをそのままFlashで開けたりもしますが、PSDの容量が大きかったりすると、やたら時間がかかったり、思うように取り込めなかったりするようだったので、上記の方法を使っています。
尚、上記のやり方でやった場合、PhotoShop上で使っている「効果」はFireWorks上では、PhotoShop「ライブエフェクト」として認識されるのですが、それをそのままFlashに持っていこうとすると、Flashが落ちるようだったので、ドロップシャドウなどのエフェクトは、一度切った方が良さげでした。
参考URL
Flash 9 PSD Importer (trick7)
PNGファイルの読み込みについて (FLASH-JP.COM)
1.
PSDデータをFireWorksで開く
2.
Flashに移したい画像を、
FireWorks上で、選択&コピーして、Flashにペースト
この方法の何が良いかというと、いちいちオブジェクトごとにPhotoShop上でトリミングしなくても良い点です。
ちなみに、上記のやり方は、CS3でしか試していないので、他のバージョンでうまくいくかどうかは分かりません。
CS3からは、PSDファイルをそのままFlashで開けたりもしますが、PSDの容量が大きかったりすると、やたら時間がかかったり、思うように取り込めなかったりするようだったので、上記の方法を使っています。
尚、上記のやり方でやった場合、PhotoShop上で使っている「効果」はFireWorks上では、PhotoShop「ライブエフェクト」として認識されるのですが、それをそのままFlashに持っていこうとすると、Flashが落ちるようだったので、ドロップシャドウなどのエフェクトは、一度切った方が良さげでした。
参考URL
Flash 9 PSD Importer (trick7)
PNGファイルの読み込みについて (FLASH-JP.COM)
2007/06/18: FLASHで文字列の検索・置換
たまに、FLASHで文字列の検索・置換をしたいときがあるのですが、やり方を忘れることがあるので備忘録としてメモしておきます。この程度の機能は最初からStringクラスのメソッドとして用意しておいてほしいところ。Stringクラス拡張するのも何となく面倒だし。
情報元 FLASH-JP
// _str 検索・置換の対象となる文字列
// _search_str 検索する文字列
// _replace_str 置換する文字列
function str_replace( _str , _search_str, _replace_str)
{
var strArray = _str.split(_search_str);
return strArray.join( _replace_str );
}
情報元 FLASH-JP
2006/12/07: FLASHのエラー:このプレーヤーでは、線の拡張機能はサポートされていません
Flash8でデータを作って、それをFlashLiteやらFlashPlayer7などで書き出したいときに、「このプレーヤーでは、線の拡張機能はサポートされていません」というエラーがたまに出ます。一応パブリッシュされたswfファイルを開くと、問題の線が表示されるのですが、エラーが出るとなんだか嫌な気分になるので、どうしたものかと色々調べました。
ウェブサイトによって書いてることはマチマチで、線のプロパティの「終端」や「結合」の仕方を「丸型」にすると良いと書かれているところが何個かあったのですが、どれもうまく行きませんでした。
結局、FlashMX2004形式で保存して、再度別名保存でFlash8形式で保存するとエラーが出なくなるという方法に落ち着きました。これが一番確実なようです。もっと簡単にできたらいいんですけどねぇ〜。
参考URL
アドビ流
GAC流
最終的に見たサイト
ウェブサイトによって書いてることはマチマチで、線のプロパティの「終端」や「結合」の仕方を「丸型」にすると良いと書かれているところが何個かあったのですが、どれもうまく行きませんでした。
結局、FlashMX2004形式で保存して、再度別名保存でFlash8形式で保存するとエラーが出なくなるという方法に落ち着きました。これが一番確実なようです。もっと簡単にできたらいいんですけどねぇ〜。
参考URL
アドビ流
GAC流
最終的に見たサイト
2006/09/26: FLASHのミス防止
・クラスを作るときの頭文字は、必ず大文字にする。
→小文字にすると動かない。(ただしエラーは出ないので気付きにくい)
・XMLをロードしたときのonLoad中で、新しいムービークリップをアタッチしたとき、
新規ムービークリップのonLoadは、XMLのonLoadが終了後に実行される。
→アタッチした直後にonLoadが実行されるわけではない。
→小文字にすると動かない。(ただしエラーは出ないので気付きにくい)
・XMLをロードしたときのonLoad中で、新しいムービークリップをアタッチしたとき、
新規ムービークリップのonLoadは、XMLのonLoadが終了後に実行される。
→アタッチした直後にonLoadが実行されるわけではない。
2006/09/24: FLASHでpng画像を読み込むと画像が汚くなる
FLASHのステージ上にpngの画像データを読み込んで、それをパブリッシュしたものを見ると、文字の淵のあたりなんかが、jpgを凄く圧縮したときみたいに、変なモアレみたいなのができて汚くなっていました。(パブリッシュしたときだけ、編集画面では綺麗です)
どうやら、pngはそのままパブリッシュするとこうなってしまうみたいです。
解決方法は、ライブラリパネルの中のpng画像を右クリックして、「プロパティ」をクリックして、「圧縮」の項目を「ロスレス(PNG/GIF)」というのを選べば綺麗にレンダリングされるようになります。
どうやら、pngはそのままパブリッシュするとこうなってしまうみたいです。
解決方法は、ライブラリパネルの中のpng画像を右クリックして、「プロパティ」をクリックして、「圧縮」の項目を「ロスレス(PNG/GIF)」というのを選べば綺麗にレンダリングされるようになります。
2006/07/27: Flashでウィンドウを閉じる
ウェヴブラウザを閉じる場合
↑これしかないのかと思っていたら、こういう方法もあった↓
FlashPlayerを閉じる場合
getURL("javascript:window.close()");
↑これしかないのかと思っていたら、こういう方法もあった↓
FlashPlayerを閉じる場合
fscommand("quit");