カテゴリ: FLASH(AS2)
投稿者: terada
以前、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);
とか

これで、鳴るようになります。
上述のような組み合わせの場合はチェックが必要ですね。
カテゴリ: FLASH(AS2)
投稿者: terada
ムービークリップのアルファ値を変化させて、フェードインやフェードアウトなどをするときに、そのままやると内包する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と置き換えています。
カテゴリ: FLASH(AS2)
投稿者: terada
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も使いこなせれば、だいぶ開発効率が上がる予感。あとは予感を実感にしたい。
それではまた。
カテゴリ: FLASH(AS2)
投稿者: mio
久々の更新。
携帯サイトで、Flashの容量を軽くする方法、第2弾。


Flashでのアニメーションについてですが、
シェイプトゥイーンなどは、100フレーム分ぐらいのアニメーションでも
数KBの容量になったり、携帯サイトではバカにならない容量を食います。

で、当然これをシンボル化して容量を軽くしようと試みるわけですが、
やり方によって、かなり容量が変わってきます。

特に変わってくるのが、

・グラフィックシンボルのループ再生
・ムービークリップ

で、見た目的にはどちらも同じ動きなんですが、
グラフィックシンボルの場合は、
ループの動きのデータをベタのアニメーションとして
書き出してしまうようなので、データがループした回数分重くなるようです。

それに対して、ムービークリップの場合は、
ひとつの動きを、繰り返し再生させるということになるようで、
圧倒的に軽くなります。

なので、容量を軽くするには、なるべく、ムービークリップでループさせるのが
良いということが分かりました。

同じ動きを数箇所で使うときは、極力ムービークリップを使いましょう。
カテゴリ: FLASH(AS2)
投稿者: mio
これは、まだ要調査なのですが、とりあえず現時点で、これかなという方法。


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)
カテゴリ: FLASH(AS2)
投稿者: mio
たまに、FLASHで文字列の検索・置換をしたいときがあるのですが、やり方を忘れることがあるので備忘録としてメモしておきます。この程度の機能は最初からStringクラスのメソッドとして用意しておいてほしいところ。Stringクラス拡張するのも何となく面倒だし。

// _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
カテゴリ: FLASH(AS2)
投稿者: mio
Flash8でデータを作って、それをFlashLiteやらFlashPlayer7などで書き出したいときに、「このプレーヤーでは、線の拡張機能はサポートされていません」というエラーがたまに出ます。一応パブリッシュされたswfファイルを開くと、問題の線が表示されるのですが、エラーが出るとなんだか嫌な気分になるので、どうしたものかと色々調べました。

ウェブサイトによって書いてることはマチマチで、線のプロパティの「終端」や「結合」の仕方を「丸型」にすると良いと書かれているところが何個かあったのですが、どれもうまく行きませんでした。

結局、FlashMX2004形式で保存して、再度別名保存でFlash8形式で保存するとエラーが出なくなるという方法に落ち着きました。これが一番確実なようです。もっと簡単にできたらいいんですけどねぇ〜。


参考URL
アドビ流
GAC流
最終的に見たサイト

2006/09/26: FLASHのミス防止

カテゴリ: FLASH(AS2)
投稿者: mio
・クラスを作るときの頭文字は、必ず大文字にする。
 →小文字にすると動かない。(ただしエラーは出ないので気付きにくい)

・XMLをロードしたときのonLoad中で、新しいムービークリップをアタッチしたとき、
 新規ムービークリップのonLoadは、XMLのonLoadが終了後に実行される。
 →アタッチした直後にonLoadが実行されるわけではない。
カテゴリ: FLASH(AS2)
投稿者: mio
FLASHのステージ上にpngの画像データを読み込んで、それをパブリッシュしたものを見ると、文字の淵のあたりなんかが、jpgを凄く圧縮したときみたいに、変なモアレみたいなのができて汚くなっていました。(パブリッシュしたときだけ、編集画面では綺麗です)

どうやら、pngはそのままパブリッシュするとこうなってしまうみたいです。
解決方法は、ライブラリパネルの中のpng画像を右クリックして、「プロパティ」をクリックして、「圧縮」の項目を「ロスレス(PNG/GIF)」というのを選べば綺麗にレンダリングされるようになります。
カテゴリ: FLASH(AS2)
投稿者: terada
ウェヴブラウザを閉じる場合
getURL("javascript:window.close()");


↑これしかないのかと思っていたら、こういう方法もあった↓

FlashPlayerを閉じる場合
fscommand("quit");