auサイトのようなアコーディオンメニュー
Flash モーションライブラリ|Google Tweener
また今月のWeb creatorsからの使えそうなテクニックを…。
今度は、auのオフィシャルサイトで使われているようなFlashを使ったアコーディオンメニューが簡単に作れるモーションライブラリを紹介してみます。
Flashコンテンツ制作者なら、一度は作ってみようと思ったり、クライアントから要望された経験があるのではないでしょうか?でも実は、矛盾のでないようにスクリプトを組むのが思いの外難しかったりします。…僕も凝った仕組みは作れません。
しかし、Google codeの「Tweener」というライブラリを使えば、あら不思議?! 簡単に作れてしまいます。
サンプルはこんな感じです。
方法です。
「Tweener」のページからtweener_1_26_62_as2.zipをダウンロードして、中に入っている「caurina」というディレクトリごとFLAファイル(swf)と同じ階層におきます。
Flash本体は、各パネルのMCを作り、ステージ上の適当な位置に配置。_rootの1フレーム目に以下のActionScriptを記述します。
/*ライブラリ読込*/
import mx.utils.Delegate;
import caurina.transitions.Tweener;
/*トゥイーンをさせる関数*/
function tw(_x1:Number,_x2:Number,_x3:Number,_mc1:MovieClip,_mc2:MovieClip,_mc3:MovieClip):Void{
Tweener.addTween (_mc1,{_x:_x1,_y:0,time:1,transition:"easelnOutCubic"});
Tweener.addTween (_mc2,{_x:_x2,_y:0,time:1,transition:"easelnOutCubic"});
Tweener.addTween (_mc3,{_x:_x3,_y:0,time:1,transition:"easelnOutCubic"});
}
/*パネルごとの動作*/
// パネル01
panel01_mc.onRollOver = Delegate.create (this,function():Void{
tw (0,300,320,panel01_mc,panel02_mc,panel03_mc);
});
// パネル02
panel02_mc.onRollOver = Delegate.create (this,function():Void{
tw (0,10,320,panel01_mc,panel02_mc,panel03_mc);
});
// パネル03
panel03_mc.onRollOver = Delegate.create (this,function():Void{
tw (0,10,30,panel01_mc,panel02_mc,panel03_mc);
});
上のスクリプトは例ですので、データを参考にカスタマイズして下さい。
ActionScriptに詳しい方なら、タイマーを設置して、時間が来ると自動的に次のパネルを表示するコトもできると思います。
| 固定リンク



コメント
サンプルをダウンロードして、Flaデータを参考にさせていただこうと思っていたのですが
(本とこちらを参考にさせていただいてますが/*トゥイーンをさせる関数*/でスクリプトエラーがでるのです)
Flash MXとMX 2004で試しましたが開けません。
何で開けばよいのでしょう?
投稿: citron | 2008.03.13 13:56
citronさん、コメントありがとうございます。
Flashのサンプルは、Flash 8で作っていますので、以前のバージョンでは開けません。
また、今回のサンプルはFlash Player 8以上でないと、スクリプトエラーを起こすようです。
ですので、MX 2004以前のバージョンでは使えないと思います。。
…お力になれず、申し訳ございません。
投稿: exyz | 2008.03.13 14:49
たびたび失礼いたします。
exyzさんのコメントをいただき、あれからAdobe Flash CS3 Proで上記フラッシュを作成し、うまく動作させることができました。ありがとうございました。
一点お伺いしたいのですが、上記の各パネルにリンクをつける際の手順を教えていただきたく再度コメントいたしました。
透明ボタンで試してみたのですがボタンを動かすことは(当然)できなく、リンクも最上位のパネルのリンクしかリンクさせることはできませんでした。
何か助言いただければと思います。
お忙しいところ申し訳ありませんがよろしくお願い致します。
投稿: citron | 2008.03.26 10:10
citronさん、コメントありがとうございます。
間が空いてしまい申し訳ないです。
実は体調を崩し、3/24から10日程入院していました。
まだまだ本調子でなはないので、しばらくお待ちいただけますか?
申し訳ございません。
投稿: exyz | 2008.04.03 14:12
citronさん、回答が遅くなりました。
Flash CS3で制作されたというコトですが、ActionScript3.0でパブリッシュしていませんか?
ActionScript3.0からは、ボタンアクション、ムービークリップアクション、イベントハンドラメソッドが廃止になったようです。
AS3.0でやるなら、addEventListener()メソッドを使ってイベントリスナーを登録するという方法をとらなければいけません。
簡単にやるなら、パブリッシュの設定をAS2.0にすれば、ムービークリップアクションが使えるので、今まで通りの方法でできると思います。
※ウチの環境はまだFlash 8なので確認はできませんが…。
投稿: exyz | 2008.04.07 08:23
exyzさんありがとうございます。
exyzさんに教えていただいた方法をもとにやってみますね^^
それからお体を崩されていたとのこと。そんな中お伺いしてしまい本当に申し訳ありませんでした。
お体ご慈愛くださませ。
投稿: citron | 2008.04.11 15:09
はじめまして。
上記のサンプルFLAファイルをダウンロードして
参考にさせていただきました。
ありがとうございます。
実は、これにリンクを付ける時の手順がわかりませんので教えていただけたら幸いです。
flash8 professionalです。
よろしくお願いします。
投稿: Iceman | 2009.01.16 16:04
Icemanさん、コメントありがとうございます。
前にもcitronさんという方から質問されましたが、Flash8ならAS2.0ですので、それぞれのパネルMCにムービークリップアクションを記述するのが、一番簡単だと思います。
具体的には、該当するムービークリップを選択した状態でアクションパネルを開き、下記のように記述して下さい。
on(release){
getURL('xxx.html',"_top");
}
※この時、リンクするhtmlの階層とターゲット属性に注意して下さい。
投稿: exyz | 2009.01.16 17:40
exyzさんありがとうございます。
教えていただいたことを
試してみたところリンク出来ました。
また、質問があったらコメントさせていただきますので
よろしくお願いします。
投稿: iceman | 2009.01.17 15:52
Icemanさん、コメントありがとうございます。
ムービークリップアクションでhtmlファイルにリンクさせるのは、ActionScriptの初歩の初歩です。
AS2.0以前の参考書には必ず載っているハズです。
ActionScriptは敷居は低いですが、奥は深く果てしないので、何冊か参考書を購入して自分で勉強してみる事が大切ですよ。
そうしないとなかなか身に付かないと思います。頑張って下さい!
投稿: exyz | 2009.01.17 21:21