新・元地方の中規模印刷会社で苦悩する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今年秋までに完全終了。「Google Chrome」で一部大手コンテンツ除き再生無効に

1年以上前の記事です。内容が古い可能性があります。いよいよ、Flashに終わりが …

no image
ブログにFacebookの「いいね!」ボタンをつける方法【ライブドアブログ編】

1年以上前の記事です。内容が古い可能性があります。ツイッターやらブログやらで騒が …

no image
perlの文字コード変換を詳しく調べてみる

1年以上前の記事です。内容が古い可能性があります。最近、perlプログラミングを …

ワードプレス(WordPress)でトップページをデザインする方法 #wp

1年以上前の記事です。内容が古い可能性があります。さて、テーマのコピーが用意でき …

ライブドアブログで公式ツイートボタンを完全対応

1年以上前の記事です。内容が古い可能性があります。昨日の記事の続きとして読んでく …

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

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

Flash2020年末に完全終了。Adobeから「Flash Player」の提供が停止に

1年以上前の記事です。内容が古い可能性があります。そういえば最近Flashのコン …

no image
Flashでプルダウン(さらに)

1年以上前の記事です。内容が古い可能性があります。えー、こちらの動かない原因がお …

アメブロ(アメーバブログ)にzenbackを導入する方法

1年以上前の記事です。内容が古い可能性があります。zenbackに関してはソース …

ワードプレス(WordPress)の記事に簡単に地図や動画を貼り付ける「ショートコード」 #wp

1年以上前の記事です。内容が古い可能性があります。ショートコードって知ってますか …

血液型オヤジ