新・元地方の中規模印刷会社で苦悩する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

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

  関連記事

no image
mixiのチェックボタンをつけてみた【後編】

1年以上前の記事です。内容が古い可能性があります。さて、前回なんとか「mixiチ …

外部JavaScriptはひとまとめにしてしまおう

1年以上前の記事です。内容が古い可能性があります。プロット・ファクトリーCMS化 …

no image
一度見たFlashを見せない方法 2

1年以上前の記事です。内容が古い可能性があります。□一度見たFlashを見せない …

「エポックタイム」とはどんな意味?

1年以上前の記事です。内容が古い可能性があります。久々に現場にてperlプログラ …

no image
Flashの時間稼ぎスクリプト

1年以上前の記事です。内容が古い可能性があります。Flashを編集していて、この …

no image
Flashでプルダウン(さらにさらに)もう嫌!!

1年以上前の記事です。内容が古い可能性があります。もう、過去の記事を拾ってくる気 …

WordPress(ワードプレス)でテンプレートにテンプレートを読み込む方法(インクルードタグ) #wp

1年以上前の記事です。内容が古い可能性があります。WordPress(ワードプレ …

no image
cgi(perl)にhtmlを読み込ませる方法

1年以上前の記事です。内容が古い可能性があります。たとえば与えられた変数によって …

「Internet Explorer」をクラッシュさせるCSSコード

1年以上前の記事です。内容が古い可能性があります。なんか、他にもありそうですけど …

ユビキタスの第一歩、スマホ(スマートフォン)やタブレットで家電が遠隔操作できる「heimcontrol.js」

1年以上前の記事です。内容が古い可能性があります。ユビキタスという言葉は最近あま …

血液型オヤジ