新・元地方の中規模印刷会社で苦悩するWebデザイナー改めWebディレクターの日記

自由な20代、窮屈な30代を経て、遂に40代になっちまったWebディレクター&パソコン講師の覚書と思う言(こと)。略称【ちほちゅう】

*

AS3でプルダウンメニュー(ActionScript3.0勉強中! #3)

   

1年以上前の記事です。内容が古い可能性があります。

以前、ActionScript2.0を使ってプルダウンメニューを作りました。
ところが時代はあっという間にActionScript3.0に。
そこで、こいつを、ActionScript3.0に移植してみることにしました。 

【PR】リファレンス本買いました。
ActionScript3.0 ポケットリファレンス (POCKET REFERENCE)ActionScript3.0 ポケットリファレンス (POCKET REFERENCE)
著者:馬場 ぎんが
販売元:技術評論社
発売日:2008-08-29
おすすめ度:3.0
レビューを見る

スポンサーリンク
 

その前に、ActionScript2.0でのプルダウンメニューのおさらい。

まず、プルダウン用のムービークリップを作成。
それと、マウスオーバー用の透明のムービークリップも作成。
さらに、もととなるボタンを作成。

マウスオーバー用のムービークリップにマウスが乗っている間は、プルダウン用のムービークリップを通常再生、乗っていない間は逆再生。 
それを、hitTestメソッドおよび_totalframesプロパティで制御する。

といった流れのプログラム。
ActionScript2.0の時はスクリプトがいろんなところに分散しちゃっていましたが、ActionScript3.0になってまとめてひとつのフレームに書くことができるようになりました。

スクリプトを書く場所はプルダウンメニューのアニメーションをひとまとめにしたムービークリップの最初のフレームです。
今回は「pulldown」というムービークリップを作ったのでその最初のフレームに書きます。
なお、「pulldown」にはメニューが下まで行った状態のアニメーションを作っておきます。 
no title

準備ができたところでスクリプトを紹介します。

 1 : this.stop();
 2 : var nMove:int = 0;
 3 : this.addEventListener(Event.ENTER_FRAME,moving);
 4 : function moving(e:Event):void {
 5 :  if (d_mouse.hitTestPoint(stage.mouseX,stage.mouseY,true)) {
 6 :   nMove = 1;
 7 :  } else {
 8 :   nMove = -1;
 9 :  }
10 :  var nNextFrame
:int = this.currentFrame+nMove;
11 :  if (1<=nNextFrame && nNextFrame<=this.totalFrames) {
12 :   this.gotoAndStop(nNextFrame);
13 :  } else {
14 :   nMove = 0;
15 :  }
16 : }

行頭の数字は分かりやすいように入れたもので実際は書く必要はありません。

以下解説
1 : まずはムービーをとめる。
2 : 「nMove」に整数値として「0」を代入する。
3 : 「addEventListener」でAS2.0の「onClipEvent (enterFrame)」と同等の処理(フレームが変わるごとに関数を実行)をさせる。
4 : 「addEventListener」で実行させる関数を設定。以下、その関数。
5 : もし、マウスがムービークリップ(d_mouse)に重なっていたら、(マウスオーバー用のムービークリップのインスタンス名を「d_mouse」としていることが前提)
6 : 「nMove」を「1」にする。
7 : マウスがムービークリップ(d_mouse)に重なっていなければ、
8 : 「nMove」を「-1」にする。
10 : 「nNextFrame」に「currentFrame(現在表示されているフレーム番号)」+「nMove」を代入する。
11 : 「nNextFrame」がアニメーションのフレーム数を超えたり、マイナス値になったりしないかぎり、
12 : 「nNextFrame」で指定されたフレーム番号に飛ぶ。
13 : 「nNextFrame」がアニメーションのフレーム数を超えたり、マイナス値になった場合は、
14 : 「nMove」を「0」にしてアニメーションを止める。
以上。

2.0の時との変更点は以下のとおり、

  • 「onClipEvent (enterFrame)」を「addEventListener(Event.ENTER_FRAME,関数名)」に。
  • 「hitTest」が「hitTestPoint」に。
  • 「_currentframe」が「currentFrame」 に。
  • 「_xmouse」「_xmouse」がそれぞれ「mouseX」「mouseY」に。
  • 「_root」、「_parent」も使えない。(それぞれ「root」、「parent」に)

その他もろもろ。
なんだかんだいってかなり変わってますね。

FLASHでプルダウンメニュー(ポップアップメニュー) スクリプト編

AS2.0以前との違い(ActionScript3.0勉強中! #1)
ビルトインクラスとは(ActionScript3.0勉強中! #2)

 - FLASH, プログラミング

アドセンス広告メイン

Message

メールアドレスが公開されることはありません。

  関連記事

Flashで使えるサウンドファイルは11、22、44kHzのサンプリングレートで8ビットまたは16ビット

1年以上前の記事です。内容が古い可能性があります。Flash動画の話。ある生徒さ …

Google ChromeでFlash広告がディフォルト停止になっていた

1年以上前の記事です。内容が古い可能性があります。これ、全く気づかなかったのです …

「アメーバピグ」チャットで使えるコマンド一覧

1年以上前の記事です。内容が古い可能性があります。娘が始めた関係で付き合いでやる …

WordPress(ワードプレス)でトップページ以外にブログトップを設置する方法【完全版】 #wp

1年以上前の記事です。内容が古い可能性があります。つぶくまブログの「←古い投稿」 …

CSSだけで作る最も単純なプルダウンメニュー(ドロップダウンメニュー)【Webデザイン】

1年以上前の記事です。内容が古い可能性があります。今まではIE6の存在等もあって …

「livedoor Blog(ライブドアブログ)」で「Twitter Cards」対応がめちゃくちゃ簡単になっていた

1年以上前の記事です。内容が古い可能性があります。先日、「Twitter Car …

カスタムフィールドとカスタム投稿で記事投稿フォームを使いやすく 3 – テンプレート編集の巻 【ワードプレス】 #wp

1年以上前の記事です。内容が古い可能性があります。1. Custom Field …

ボーンツールの支点(基準点)を動かすのは自由変形ツール【Flash】

1年以上前の記事です。内容が古い可能性があります。Adobe Creative …

Flash PVは音声(BGM)取り込みに注意

1年以上前の記事です。内容が古い可能性があります。本来は「Adobe Premi …

no image
twitter2mixivoice「tw2mv」がバージョンアップしていた

1年以上前の記事です。内容が古い可能性があります。今までtwitter→mixi …

血液型オヤジ
S