• ベストアンサー

AS3.0でクリックしてMCを拡大表示させる方法

お世話になります。 FLASH初心者ですが、参考書やネットで調べてもわからないので 質問させていただきます。 今回、以下の様なFLASHを作成したいと考えておりますが、AS3.0を 用いたコーディングの仕方がわかりません。 ・アイコンが複数あり、クリックすると拡大表示される ・拡大表示された画像および動画は、再度クリックすると消える ・アイコンはランダムに動く お手数ですが、ご教授のほどよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

以下ドキュメントクラスを使った一例です. 新規でASファイル(Main.as)を作成します. 次に新規でflaファイル(AS3.0)を作成します. 適当なシンボルを作成し、リンケージでクラスに書き出します. リンケージプロパティで、"ActionScriptに書き出し" と "最初のフレームに書き出し" にチェック、 クラス名はIcon_、基本クラスはflash.display.Spriteとしています. ドキュメントクラスにMain(.as)を指定します. .flaファイルは以上です. Main.asの内容は以下の通りです. //Main.as package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; public class Main extends Sprite{ var arr:Array = new Array(); var sw:Number = stage.stageWidth; var sh:Number = stage.stageHeight; var count:int = 5; //コンストラクタ public function Main(){ init(); } private function init(){ addEventListener(Event.ENTER_FRAME, onEnterFrame); addEventListener(MouseEvent.CLICK, onClick); //アイコン生成(とりあえず5個) for(var i:int = 0; i<count; i++){ var _icon:Icon_ = new Icon_(); addChild(_icon); //適当な位置に配置しクリック判定用のフラグを0にする _icon.useHandCursor = true; _icon.x = randomInt(0,sw); _icon.y = randomInt(0,sh); _icon.flg = 0; _icon.addEventListener(Event.REMOVED_FROM_STAGE,onRemoved); //配列に収納 arr.push(_icon); } } //ランダムに動かす private function onEnterFrame(e:Event){ var len = arr.length; for(var i:int = 0; i<len; i++){ var tmp = arr[i]; tmp.x += randomInt(-10,10); tmp.y += randomInt(-10,10); //ステージ外に出た場合の処理 if(tmp.x > sw + tmp.width/2){ tmp.x -= sw + tmp.width; }else if(tmp.x < 0 - tmp.width/2){ tmp.x += sw + tmp.width; } if(tmp.y > sh + tmp.height/2){ tmp.y -= sh + tmp.height; }else if(tmp.y < 0 - tmp.height/2){ tmp.y += sh + tmp.height; } } } //クリックされたとき、クリックイベントが起きたターゲットを調べて //そのターゲットのサイズを拡大 private function onClick(e:MouseEvent){ var tmp:Icon_= e.target as Icon_; tmp.scaleX = tmp.scaleY = 2; //フラグが1(=一度クリックされている)ならそのターゲットを削除 //フラグが0(=初めてクリックされた)ならそのターゲットの動きを止めてフラグに1を追加 if(tmp.flg){ removeChild(tmp); }else{ var index:int = arr.indexOf(tmp); arr.splice(index,1); tmp.flg++; } } //全てのアイコンが消えたときの処理 private function onRemoved(e:Event){ count--; if(count==0){ trace("全部消えました"); } removeEventListener(Event.REMOVED_FROM_STAGE,onRemoved); } //ランダムな整数を得るための関数 function randomInt (int1, int2) { var max = Math.max(int1, int2); var min = Math.min(int1, int2); var nRandomInt = Math.floor(Math.random()*(max-min+1))+min; return nRandomInt; } } } 上記では各アイコンは同じクラス(Icon_)から 同じ外観で作成しています. アイコンの動きは最低限のものです. あくまで一例ですので、画像やテキストを使ったアイコンを作成して リンケージで書き出して使ったり、 アイコンの動きを各アイコン自身に持たせたり、 色々改変してみてください.

cliosworld
質問者

お礼

ご回答ありがとうございました。 イメージ通りの物が出来上がりました。 これからもっと勉強して、改変できるように頑張ります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • AS3.0でクリックすると画像がズームする方法

    Flashを勉強がてら作品サイトを作成しています。 イメージとしてはトップページが部屋をイメージして、その中に絵が飾ってあり、 それをクリックするとズームして絵の中に入って行くような雰囲気にしようとしているのですが、 AS3.0の知識が浅く、色々とネットや書籍で調べて思考錯誤してみたのですが、 中々うまくいきません。 うまくいかない点としましては、画像をクリックするとその画像のみが拡大するのではなく、 全体も一緒に拡大させて絵の中に入り込むようにする点と、目標座標に向かって拡大させる所でつまずいております。 どなたか見識のある方がいらっしゃいましたら、ご教授願えればと思います。

  • ブラウザの表示倍率を変えても拡大しないフラッシュを拡大表示させたい

    一部のフラッシュ(全部ではない)はブラウザの表示倍率を変更しても拡大表示されません。 例えばニコニコ動画のプレイヤーの周辺。 これを拡大表示するにはどうしたらいいでしょうか? Vistaです。 ブラウザはいろいろ使ってみてるので、いろいろなブラウザについて教えてください。

  • サムネイルをクリックすると拡大表示…の作り方

    こんばんは。 Flash初心者なのですが、仕事で、Flashを使ったフォトギャラリーを作ることになってしまいました。Flash8を使用しています。 ・サムネイルが画面下部に横に並んでいる(8~10個くらい) ・サムネイルをクリックすると画面上部に大きく表示される(幅300pxくらい) ・次のサムネイルをクリックするまで拡大写真はそのまま これだけの単純なもので、フェードなどの視覚効果もなくていいのですが、サムネイルをボタンにして、どのようなアクションスクリプトを書けばいいのでしょうか? ネットで探してみたのですが、凝った動きのものが多く、どこが必要な部分なのがいまいちわかりません。今までデフォルトのテンプレートを使ったページしか作ったことがないので、悩んでいます。 詳しい方に教えていただければありがたいです。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • AS3の拡大と縮小について

    下記の外部ASで試しているのですが比率を維持して拡大されます。 予想では横は100%で縦に300%伸びて表示されるはずなのですがなぜ比率が 維持されるのでしょうか? また、縦だけとこ横だけ拡大や縮小するにはどう書けばいいのでしょうか? package { import flash.display.*; import flash.events.*; import flash.text.*; public class Main extends MovieClip { private var mc:MovieClip; private var text:TextField; public function Main():void { mc = new MovieClip(); addChild(mc); text = new TextField(); text.text = "テスト"; text.scaleX = 1; text.scaleY = 3; mc.addChild(text); } } }

    • ベストアンサー
    • Flash
  • 【dreamweaver】動画を拡大表示

    アップした動画を拡大表示させる機能(you tubeなどにある)を求めてまして flash videoの挿入からスキンには「音量」や「再生ボタン」などしかございません。 そういった機能を追加した場合どういった手法が考えられますでしょうか? また、それによる設置法等のご教授もお願いいたします。

  • Flash AS2でMCをDragしたいです

    いつもお世話になっております。 下記のAppleショップのように、拡大イメージを表示した後、 そのイメージをDragでドラッグできるようにし、クリックすると 元の小さいイメージを表示できるようにしたいのですが、うまくいきません。 http://store.apple.com/uk/product/MC596ZM/A?fnode=MTY1NDAzOQ&mco=MTg1MTU3NDA 標準サイズのイメージをtwoMCとしてFrame20に入れ、Frame25に 拡大イメージ(twolargeMC)を入れました。 Frame20のアクション twoMC.onRelease = function() { gotoAndStop(25); } Frame25のアクション twolargeMC.onPress = function() { startDrag(this); } twolargeMC.onRelease = function() { gotoAndStop(20); } 上記で一応イメージはドラッグできますが、マウスを離した途端 標準サイズのイメージになってしまいます。 これをドラッグした後も拡大イメージを表示しつつ、 再度クリックした際に標準サイズのイメージが表示できるようにしたいです。 どなたかご教授いただけますでしょうか。 宜しくお願いします。

    • ベストアンサー
    • Flash
  • 入れ子になっているMCのクリック判定について

    Flash ver9 AS2.0 使用です。 親MCの中に子MCがいる構造です。 親MCはロールオーバーで移動、ロールアウトで元の位置へ戻るボタンアクション(onRollOver、onRollOut)を付けています。 その中にいる子MCにもロールオーバーで拡大するというアクションを付けていますが、 こちらにはonClipEventで接触判定(hitTestメソッド)で拡大するかどうかを判断しています。 分からないのは、この子MCをクリックした時に他のシーンへ移動させたいのですが、苦し紛れで onClipEvent (enterFrame) { if (this.hitTest(_root._xmouse, _root._ymouse, true)) { //拡大処理 } onClipEvent(mouseDown){ //シーン移動処理 } としても、シーン移動が出来ませんでした。(当たり前ですよね…) hitTestメソッドのクリック判定バージョンがあれば良いのですが、 検索不足か本当に無いのか見つけられませんでした。 分かり難い説明かとは思いますが、シーン移動のさせ方、またはクリック判定の仕方を教えていただきたいです。

    • ベストアンサー
    • Flash
  • as3でのmc再生について

    as3でご質問です。 現在as3で、ほとんどをmain.asというasファイルに書いて配置など行っております。 モーションなどがあるmcに関しては、ムビークリップを作って、ライブラリに読み込んであるのをリンケージして呼び出しています。 そこで質問です。 var bn01:MovieClip = new fr_bn01(); var bn02:MovieClip = new fr_bn02(); var bn03:MovieClip = new fr_bn03(); addChild(bn01); addChild(bn02); addChild(bn03); //fr_bn01、fr_bn02はflash上で作成した何フレームかあるmcです。 例えば、bn01の最後のフレームまでいったら、bn02が出現して再生、bn02が最後のフレームまでいったらbn03が出現、再生。 とする場合、どのような書き方をすればよろしいでしょうか。 お手数をおかけしますが、ご教授いただけたらと思います。 よろしくお願いします。 環境:CS3、as3.0

    • ベストアンサー
    • Flash
  • Flash画面を拡大したい

    こんにちは。 Flashについては全くの素人です。 Flashの画面を拡大して見たいのですが、 右クリックで出てくるメニューで 「拡大」が非表示になっている場合は 何をやっても拡大して見ることはできないのでしょうか? できないなら仕方ないですが 何か方法があるなら教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • クリッカブルマップで別フレームにランダムに画像を表示する方法

    クリッカブルマップでクリックするごとに別フレームに複数の画像をランダムに表示させることは可能でしょうか。 具体的にどんなことがしたいかというと、 格闘ゲーム風のキャラクターセレクト画面(1枚の画像)でキャラクターアイコンをクリックすると別のフレームにキャラクターを表示、 ランダムアイコンをクリックすると同じく別のフレームにランダムにキャラクターを表示させたいのです。 前者はなんとかできたんですが、複数ランダムとなるとどうすればいいのかわからず; 色々と調べてはみたのですが思わしいのがなく、 さらに当方それなりのHTML知識しかなく恐らくjavascriptを使うのではと思い、こちらで質問させていただいた次第です。 どなたかお分かりになられる方、助言いただければ幸いです。