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

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

  関連記事

livedoorプロフィールの拍手機能をつけてみた

1年以上前の記事です。内容が古い可能性があります。livedoor プロフィール …

【眼から鱗】ブラウザのキャッシュはHTMLで制御できた

1年以上前の記事です。内容が古い可能性があります。過去にはサイトデザインをプリン …

PHPプログラムもパーミッションの設定はしたほうが良い(Webプログラム)

1年以上前の記事です。内容が古い可能性があります。ロリポップ及びInterQの簡 …

アマゾンアフィリリンクはたくさん種類がある

1年以上前の記事です。内容が古い可能性があります。先日、アマゾンのアフィリエイト …

Adobe AIRって何のこと?

1年以上前の記事です。内容が古い可能性があります。最近気になっている言葉「Ado …

no image
「WordPress」でなんでもできる。SNSやショッピングサイトも

1年以上前の記事です。内容が古い可能性があります。最近は、どんなお客さんでも自社 …

no image
iframeの高さを内容に合わせて変えるスクリプト

1年以上前の記事です。内容が古い可能性があります。非推奨ながらもなかなかなくなら …

jcode.plで半角カタカナを全角カタカナにしてフォーム送信させる

1年以上前の記事です。内容が古い可能性があります。ひょんなことからお客様よりツッ …

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

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

ブログの記事にツイート(つぶやき)一覧を表示させるようにした

1年以上前の記事です。内容が古い可能性があります。過去に「はてなブックマーク」で …

血液型オヤジ