• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:スライドメニュー)

スライドメニューを実装する方法

このQ&Aのポイント
  • スライドメニューのサンプルデータをダウンロードし、CS3で開くことができます。
  • ムービークリップを適切に配置し、他のムービークリップにライブラリ読み込みとトゥイーンをさせる関数を適用することで、スライドメニューを実装することができます。
  • パネルごとに動作を指定し、マウスオーバー時にトゥイーンを実行することで、スライドメニューを操作することができます。

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

  • ベストアンサー
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.3

>しかしmc_panel04が全く動きません。 >ムービークリップ名が >mc_panel01なのに >asスクリプトでは >panel01_mcとなっている点です。 おそらく、『シンボル名』と『インスタンス名』が混乱してるんですかね。 『ムービークリップ名』と言っているのは、『シンボル名』の事だと思います。 ライブラリの中で、名前として表示されているものです。 『インスタンス名』というのは、ステージ(タイムライン)に配置したあと、そのシンボルをマウスで選択して[プロパティ]に表示される名前です。 たとえば、同じシンボルを複数タイムラインに配置することができます。 もし、ActionScriptから『シンボル名』でアクセスできるとしたら、ActionScriptは『えっ?どのシンボルの事言ってるの?』と混乱してしまいます。 それを避けるために、『シンボル名』ではアクセスできず、配置したシンボルに付けた名前=『インスタンス名』でアクセスします。 ※動的にインスタンスを作成する等の、シンボル名でアクセスしなければならない場合もありますが、その必要が出てくるまでとりあえず『シンボル名』でアクセスできないと思って置いてください。 元のプロジェクト等見ていませんが、『シンボル名』=mc_panel01、『インスタンス名』=panel01_mcとなっているんじゃないですかね。 上記の理由だと思うので、新規に作成して配置したムービークリップの『インスタンス名』を、panel04_mcと名前を付ければOKだと思います。

kurobon619
質問者

お礼

書籍ではわからない、わかりやすい表現で 教えていただいてありがとうございました。 以前からインスタンス名とシンボル名が なぜあるのか疑問を抱いておりました。 解決しました。 BellBellさん親切に教えていただいて ありがとうございました。

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

その他の回答 (2)

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.2

// パネル01 panel01_mc.onRollOver = Delegate.create (this,function():Void{ tw (0,300,330,360【,】panel01_mc,panel02_mc,panel03_mc,panel04_mc); }); // パネル02 panel02_mc.onRollOver = Delegate.create (this,function():Void{ tw (0,20,330,360『,』panel01_mc,panel02_mc,panel03_mc,panel04_mc); }); // パネル03 panel03_mc.onRollOver = Delegate.create (this,function():Void{ tw (0,20,40,360『,』panel01_mc,panel02_mc,panel03_mc,panel04_mc); }); panel04_mc.onRollOver = Delegate.create (this,function():Void{ tw (0,20,40,60『,』panel01_mc,panel02_mc,panel03_mc,panel04_mc); }); よく見ると、パネル01の部分の【,】個所も抜けてるし それ以外の『,』部分は、コンマではなくピリオドになってますね。 エラーメッセージ見てます? エラーが出まくりだと思うんですけど。 せっかく、Flashが行数まで指定してプログラムコードのおかしい個所を教えてくれてるんだから、その情報活用しなきゃ。

kurobon619
質問者

お礼

ひとつ気になるのが ムービークリップ名が mc_panel01なのに asスクリプトでは panel01_mcとなっている点です。 それで動いているので 新たのをmc_panel04と名づけましたが その辺が合点いきません。

kurobon619
質問者

補足

BellBellさんありがとうございます。 おかげさまでコンパイルエラーが消え 元の3つは正常に動きました。 しかしmc_panel04が全く動きません。 大変お手数掛けます。

全文を見る
すると、全ての回答が全文表示されます。
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.1

tw(_x1:Number,_x2:Number,_x3:Number,_x4:Number【 , 】 _mc1:MovieClip,_mc2:MovieCli ちゃんと全部見たわけではないが、【 】位置に,が抜けている。

kurobon619
質問者

補足

BellBellさんありがとうございます。 確かに抜けていました。ただそれだけではないようです。 既存のムービークリップに真似て名前をmc_panel04 にして 適当な位置に置いただけではだめなんでしょうか? インスタンス名は入れてませんが、そこでしょうか?

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

関連するQ&A

  • tweenerを使ったスライドショー

    過去ログに似たような内容がありましたが、私の質問する内容は画像の座標について教えてください。グーグルのサイトよりtweenerをダウンロードしました。アクションスクリプトはここで見せてもらいました。http://exyz.cocolog-nifty.com/good_sleep/2007/12/au_45b8.html サンプルは画像が3枚のところ私は5枚にしました。 panel01_mc.onRollOver = Delegate.create(this, function ():Void { tw(0,400,40,panel01_mc,panel02_mc,panel03_mc,panel04_mc,panel05_mc);   ^^^^^^^ ここの考え方(しくみ)が知りたいのです。いろいろやりましたが思うように動きません。 FLASH CS3 アクションスクリプト2.0 /*ライブラリ読込*/ import mx.utils.Delegate; import caurina.transitions.Tweener; /*トゥイーンをさせる関数*/ function tw(_x1:Number, _x2:Number, _x3:Number, _x4:Number, _x5:Number, mc1:MovieClip, _mc2:MovieClip, _mc3:MovieClip, _mc4:MovieClip, _mc5:MovieClip):Void { Tweener.addTween(_mc1,{_x:_x1, _y:0, time:1, transition:"easelnOutCubic"}); Tweener.addTween(_mc2,{_x:_x2, _y:0, time:1, transition:"easelnOutCubic"}); Tweener.addTween(_mc3,{_x:_x3, _y:0, time:1, transition:"easelnOutCubic"}); Tweener.addTween(_mc4,{_x:_x4, _y:0, time:1, transition:"easelnOutCubic"}); Tweener.addTween(_mc5,{_x:_x5, _y:0, time:1, transition:"easelnOutCubic"}); } /*パネルごとの動作*/ // パネル01 panel01_mc.onRollOver = Delegate.create(this, function ():Void { tw(0,400,40,panel01_mc,panel02_mc,panel03_mc,panel04_mc,panel05_mc); }); // パネル02 panel02_mc.onRollOver = Delegate.create(this, function ():Void { tw(0,0,400,panel01_mc,panel02_mc,panel03_mc,panel04_mc,panel05_mc); }); // パネル03 panel03_mc.onRollOver = Delegate.create(this, function ():Void { tw(0,370,400,panel01_mc,panel02_mc,panel03_mc,panel04_mc,panel05_mc); }); // パネル04 panel04_mc.onRollOver = Delegate.create(this, function ():Void { tw(0,90,400,panel01_mc,panel02_mc,panel03_mc,panel04_mc,panel05_mc); }); // パネル05 panel05_mc.onRollOver = Delegate.create(this, function ():Void { tw(0,90,120,panel01_mc,panel02_mc,panel03_mc,panel04_mc,panel05_mc); });

    • ベストアンサー
    • Flash
  • ポインタをmcに追随させるには?

    ポインタをmcに追随させるには? mcをスライドさせるTween使用のas2サンプルを、 クリックをロールオーバーにして、クリックにリンクを設定するものにアレンジ。 [フレーム] import mx.utils.Delegate; import caurina.transitions.Tweener; function tw(_x1:Number,_x2:Number,_x3:Number,_mc1:MovieClip,_mc2:MovieClip,_mc3:MovieClip):Void{ Tweener.addTween (_mc1,{_x:_x1,_y:80,time:2,transition:"easeOutBack"}); Tweener.addTween (_mc2,{_x:_x2,_y:80,time:2,transition:"easeOutBack"}); Tweener.addTween (_mc3,{_x:_x3,_y:80,time:2,transition:"easeOutBack"}); } panel01_mc.onRollOver = Delegate.create (this,function():Void{ tw (200,300,100,panel01_mc,panel02_mc,panel03_mc); }); panel02_mc.onRollOver = Delegate.create (this,function():Void{ tw (100,200,300,panel01_mc,panel02_mc,panel03_mc); }); panel03_mc.onRollOver = Delegate.create (this,function():Void{ tw (300,100,200,panel01_mc,panel02_mc,panel03_mc); }); [ムービークリップ] on(rollOver){ topDepth = _parent.getNextHighestDepth(); this.swapDepths(topDepth); } on(release){ getURL("index.html"); } 問題は、前面中央にスライドするmcに連動して、 中央からスライドする別のmcにポインタが反応(ロールオーバー)すること。 ロールオーバーでmcがスライドした際、 ともにポインタを自動的に追随させる方法がありましたらお教えください。 もちろん別の解決方法があれば、そちらの方をお教えいただければ助かります。 当方はas3ではタイムラインのコントロールもおぼつかないレベルです。

  • Tweenerの繰り返しについて

    こんばんわ。 Tweenerの繰り返しについてですが、 3つの写真があり、それぞれライブラリで書き出し済みです。 そして、その3つの写真をフェードイン・フェードアウトで切り替えることに成功したのですが、その3つの写真を続けて繰り返し(無限ループ)ができません。 TweenerのonCompleteを使ってtween(myMc,i)に戻ってもスタックオーバーフローになってしまい、うまくいきません。 こちらソースになります↓ for (var i:int=1; i<=3; i++) { var mc_str:String = "photo0" + i; var myClassMc:Class = Class(getDefinitionByName(mc_str)); var myMc:MovieClip = new myClassMc(); main_mc.addChild (myMc); myMc.visible = false; myMc.name = mc_str; tween (myMc,i); } function tween (MC:MovieClip, num:Number):void { var _num:Number = num - 1; if (num >= 1) { trace (_num+"枚目通過"); Tweener.addTween(MC, { alpha:0, onComplete:function():void{MC.visible=true;},delay:1+(_num*5) }); trace (_num+"枚目終わり"); Tweener.addTween (MC, { alpha:1, transition:"linear", time:3, delay:1+(_num*5) }); trace (_num+"枚目準備完了!"); } } どうか、ご教授のほうよろしくお願いします。

    • ベストアンサー
    • Flash
  • 画面をドラッグ

    ActionScript3.0で画面をドラッグして移動させるflashを作っています。 マウスを離してからも少しだけ動くように*2.75しています。 しかしhoge_mcが画面外に出た時にif文やflagを使って止めようとすると進む力が残っているっぽくて確実に止まってくれません。 どなたかこの問題の解決法が分かる方いませんか? *ソースです。(ステージにhoge_mcを置けば動きます。) import caurina.transitions.Tweener; var startX:Number = 0; var cameraRange:Number = 0; var tweenNum:Boolean =false; this.stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown); this.stage.addEventListener(MouseEvent.MOUSE_UP, onUp); function onDown(event:MouseEvent):void { tweenNum = false; this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove,false); startX = event.stageX; this.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove,false); } function onUp(event:MouseEvent):void { this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove,false); } function onMove(event:MouseEvent):void { trace(hoge_mc.x); if(tweenNum == true){ Tweener.removeTweens(hoge_mc); return; } var cameraIkata = event.stageX - startX; hoge_mc.x += cameraIkata; cameraRange = cameraRange + cameraIkata; Tweener.addTween(hoge_mc, {x:cameraRange*2.75, time:3, transition:"easeOut"}); startX = event.stageX; } stage.addEventListener(Event.ENTER_FRAME,loop); function loop(e:Event):void { if (hoge_mc.x > 401) { tweenNum = true; Tweener.removeTweens(hoge_mc); hoge_mc.x = 400.5; } if (hoge_mc.x < 0) { tweenNum = true; Tweener.removeTweens(hoge_mc); hoge_mc.x = 0.5; } }

  • adobe flashアクションスクリプト内の優先順位について。

    adobe flashアクションスクリプト内の優先順位について。 こんにちは。 まだflashをあたり始めて1~2週間ほどしかたっておらず、初歩的で 意味の分からない質問かもしれませんが、教えて頂けると助かります。 アコーディオンメニューを作りたくて、下記のサイトを参考に作成しました。 http://exyz.cocolog-nifty.com/good_sleep/2007/12/au_45b8.html 質問はこのメニューに、flashからマウスが離れると、メニュー1(パネル1)の状態に戻るように するにはどうするのが一番良いのか、ということです。 とにかくまだ用語が分かっておらず、結局 panel02_mc.onRollOut = Delegate.create (this,function():Void{ tw (0,300,320,panel01_mc,panel02_mc,panel03_mc); }); panel03_mc.ononRollOut = Delegate.create (this,function():Void{ tw (0,300,320,panel01_mc,panel02_mc,panel03_mc); }); を付け加える事で思った通りの動きにはなったのですが、ここで疑問がでてきました。 メニュー2からマウスをメニュー3の位置へ動かすと、 メニュー1の状態に戻る命令と、メニュー3の位置へ動く命令が重なっていると思うのです。 実際には、きちんとメニュー3の位置へ動くのですが、アクションスクリプトには ムービークリップの重なり順や、アクションスクリプトにおいて上からの順など 命令文に対しての優先順位があるのでしょうか? なんだか、動くけどもおかしなアクションスクリプトの書き方をしているのではないかと心配で。 本当は、メニュー2かつメニュー3からマウスが離れるとメニュー1の状態に戻るという 命令文をいれたかったのですが...。

    • ベストアンサー
    • Flash
  • ロールオーバーで下の画像を表示させる

    質問番号:7020788を参考にしています。 http://okwave.jp/qa/q7020788.html 一番下に写真(400x400)を置き、その上にmc0~mc3(200×200)を4つ配置しました。 mc0にロールオーバーすればmc0がフェードアウトして200×200だけが写真を見え るようにしたいと考えています。 同様にmc1にロールオーバーすればmc1がフェードアウトします。 しかし、どのmcにロールオーバーしてもmc0~mc3の全体がフェードアウトしてし まい、私が思っておるように動作いたしません。 次にアクションスクリプトを示します。 mport fl.transitions.*; import fl.transitions.easing.*; mc0.addEventListener(MouseEvent.ROLL_OVER,onrollOver); mc1.addEventListener(MouseEvent.ROLL_OVER,onrollOver); mc2.addEventListener(MouseEvent.ROLL_OVER,onrollOver); mc3.addEventListener(MouseEvent.ROLL_OVER,onrollOver); function onrollOver(eventObj:Event):void { for (var i:Number = 0; i<=3; i++) { TransitionManager.start(this, {type:Fade, direction:Transition.OUT, duration:2, easing:None.easeNone}); removeEventListener(MouseEvent.ROLL_OVER,onrollOver); } } FLASH CS3でアクションスクリプトは3.0で作っています。どうか対処策を教えて いただきたく思います。

    • ベストアンサー
    • Flash
  • スライド式メニューにボタンを配置したい

    http://www.condo.fromc.jp/flash/memo/index.html に掲載されている【スライド式メニュー】を使ったFLASHを作っています。この中のMovieClip cont_mcにボタンを配置したのですが全く機能してくれません。 他のところでいろいろ調べて、解決策を教えていただいたのですが、解決策の意味すら分からない状況です。わかりやすくご指導してくださる方宜しくお願いいたします。 他のBBSで以下のような説明を受けました。 ---------------------------------------------------------------- 【説明】 今回の場合には、MovieClipインスタンスに設定されたon (release)ハンドラをカットして、MovieClipシンボル内にボタンのヒット領域として配置されているMovieClipインスタンスbutton_mcに設定することで解決できます。 注意は、2点あります。 [1] button_mcから親(button_mcを内包する)MovieClipのfunction(関数)xSetDestを呼出すには、ターゲットパスを修正する必要があります。 [2] 親のMovieClipアクションに設定されたMovieClip.hitAreaプロパティを設定するステートメントは、不要ですので削除します。 ---------------------------------------------------------------- 【現在私が加えた修正】 ・button_mcにon (release)の設定をしました。 ・MovieClip.hitAreaプロパティを設定するステートメントは、削除しました。 ---------------------------------------------------------------- 【わからない部分】 ・ターゲットパスの修正というのがわかりません。 button_mcに設定したon (release)ハンドラのthisをthis._parentに変更するだけではダメなのでしょうか? 解決策わかる方教えてください。

    • ベストアンサー
    • Flash
  • ac3 tweener の 色変換について

    tweenerを使って、オブジェクとの色が変化する様子を確認しようと試したところ、以下の記述の中で_colorが認識されません。ある方のページから引用したものをほとんどそのまま試しているのですが、どのように修正したらよろしいでしょうか?お願いします。 package { import flash.display.*; import caurina.transitions.Tweener; import flash.events.MouseEvent; [SWF( backgroundColor='0xFFFFFF', width='300', frameRate='30')] public class Tweener_Test extends Sprite { public function Tweener_Test() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; init(); } private function init():void{ var Box:Sprite = new Sprite(); Box.graphics.beginFill(0x000000); Box.graphics.drawRect(0,0,50,50); Box.graphics.endFill(); addChild(Box); Box.addEventListener(MouseEvent.CLICK,function():void{ Tweener.addTween(Box, {_color:0xFF0000,x:120,time:2,transition:"linear"}); }); } } }

    • ベストアンサー
    • Flash
  • addChildの使い方

    ロールオーバーで下の画像を表示させる:を参考にしています。 http://okwave.jp/qa/q7020788.html ここはアクションスクリプト2.0でしたが、私はFLASH CS3 アクションスクリプト3.0で 作っています。 その回答をもとに100X100のロールオーバー用の画像を16個表示させるために 書きました。ステージは400x400です。 for (var i:Number = 0; i<=15; i++) { if (i != 0) { var my_mc:MC = new MC(); my_mc.x = i%4*100; my_mc.y = Math.floor(i/4)*100; addChild(my_mc); } } 16個で埋め尽くすことはできましたが、my_mcに番号をつけるなどして配列を使って やらなければならないと考えますが方法がわかりません。今は16番目(iが15)しか ロールオーバーしません。 全体のアクションスクリプトを書きます。 import fl.transitions.*; import fl.transitions.easing.*; for (var i:Number = 0; i<=15; i++) { if (i != 0) { var my_mc:MC = new MC(); my_mc.x = i%4*100; my_mc.y = Math.floor(i/4)*100; addChild(my_mc); } } my_mc.addEventListener(MouseEvent.ROLL_OVER,onrollOver); function onrollOver(eventObj:Event):void { //ロールオーバーイベントを受けたインスタンスを取得 var target_mc:MovieClip = MovieClip(eventObj.currentTarget); //そのインスタンスをフェードアウト TransitionManager.start(target_mc, {type:Fade, direction:Transition.OUT, duration:2, easing:None.easeNone}); //そのインスタンスのイベントリスナーを削除 target_mc.removeEventListener(MouseEvent.ROLL_OVER,onrollOver); }

    • ベストアンサー
    • Flash
  • マウスアウトで非表示にする

    シーン1に、mc(ムービークリップ)とcomment1(ムービークリップ)を配置 mcにマウスオーバーするとcomment1が表示される。 mcよりマウスアウトするとcommen1が非表示になる。 という感じにしたいのですが、マウスアウトしても非表示に出来ないで困っています。 //----------------------------------- MovieClip(root).comment1.visible = false; var pointX:Number=70; var pointY:Number=50; mc.addEventListener(MouseEvent.MOUSE_OVER, fl_MouseOver); function fl_MouseOver(event:MouseEvent):void { stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveFunc); function mouseMoveFunc(e:MouseEvent):void { MovieClip(root).comment1.visible = true; MovieClip(root).comment1.x=stage.mouseX+pointX; MovieClip(root).comment1.y=stage.mouseY+pointY; } } mc.addEventListener(MouseEvent.MOUSE_OUT, fl_MouseOver2); function fl_MouseOver2(event:MouseEvent):void { mc.removeEventListener(MouseEvent.MOUSE_OVER, fl_MouseOver); MovieClip(root).comment1.visible = false; } //-----------------------------------

    • ベストアンサー
    • Flash