Adobe Flashアクションスクリプト内の優先順位について

このQ&Aのポイント
  • Adobe Flashアクションスクリプト内の優先順位についてご質問です。
  • 質問内容は、Flashメニューにおいてマウスが離れると特定の状態に戻る方法についてです。
  • 具体的なコードが記載されており、優先順位に関する疑問が生じました。
回答を見る
  • ベストアンサー

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
  • 回答数1
  • ありがとう数3

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

  • ベストアンサー
  • aspnet
  • ベストアンサー率79% (72/91)
回答No.1

GoogleCodeのFlash Tweenerライブラリは、「列挙したmcをその時点の位置から目的座標にトゥイーンさせる」ものなので、 ・panel02からマウスが出た瞬間、panel02とpanel03を、それぞれx=300.320にトゥイーン (追加されたスクリプトより) ・panel03にマウスが入った瞬間、panel02とpanel03を、それぞれx=10.20にトゥイーン (もともとのスクリプトより) が連続で実行されます。 つまり、いったん右へ行ったものがまた左へ行っています。 追加されたスクリプトは不要ということです。 この例では、Flash領域全面をpanel01~03が占めているので、「すべてのパネルからマウスが離れる」イベントは検知できません。 やるならば、stageオブジェクトのEvent.MOUSE_LEAVEを使わねばいけませんね。 ただしActionScript3です(おっと

関連する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
  • スライドメニュー

    以下のサンプルデータをダウンロードしCS3で開き http://exyz.cocolog-nifty.com/good_sleep/2007/12/au_45b8.html 新たにムービークリップをmc_panel04を適当なところに 配置し、以下のように他のムービークリップに真似て 書きましたが、まったく動かなくなりました。どうすればよいのでしょうか? /*--------------------------- ライブラリ読込 ---------------------------*/ import mx.utils.Delegate; import caurina.transitions.Tweener; /*--------------------------- トゥイーンをさせる関数 ---------------------------*/ function tw(_x1:Number,_x2:Number,_x3:Number,_x4:Number_mc1:MovieClip,_mc2:MovieClip,_mc3:MovieClip,_mc4: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"}); } /*--------------------------- パネルごとの動作 ---------------------------*/ // パネル01 panel01_mc.onRollOver = Delegate.create (this,function():Void{ tw (0,300,330,360panel01_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); });

    • ベストアンサー
    • 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ではタイムラインのコントロールもおぼつかないレベルです。

  • FLASH アクションスクリプト

    画面のサイズを拡大縮小しても 常にセンターに表示させる アクションスクリプトで質問がございます。 back_mcが【背景】 main_mcが【オブジェクト】 _root.main_mc._x = ( Stage.width - _root.main_mc._width ) /2; _root.main_mc._y = ( Stage.height - _root.main_mc._height) /2; このアクションスクリプトで【オブジェクト】が最初から常にセンター表示になる事は分かるのですが、例えば座標x600 y500で始まるようにするのはどうしたら良いのでしょうか。 下記のアクションスクリプトでは、【オブジェクト】がx600 y500の位置に最初はあるのですが画面のサイズを拡大縮小してもピクリとも動きません。 Stage.align = "TL"; Stage.scaleMode = "noScale"; Stage.addListener(this); this.onResize = function() { _root.main_mc._x = 600;( Stage.width - _root.main_mc._width ) /2; _root.main_mc._y = 500;( Stage.height - _root.main_mc._height) /2; _root.back_mc._width = Stage.width; _root.back_mc._height = Stage.height; } this.onResize(); いまいち分かりにくい質問ですが伝わりますでしょうか。 分かる方、宜しくお願い致します。

    • ベストアンサー
    • Flash
  • Flash ActionScript(アクションスクリプト)の挙動

    Flash ActionScript(アクションスクリプト)の挙動が 思うようにならず困っています。 ●使用ツール  Macromedia Flash MX ●やりたいこと  ムービークリップ【mc_4_0】【mc_4_1】【mc_4_2】が配置されている。  各ムービークリップにマウスが乗っているかを毎フレーム判定し、  乗っていればx/yscaleを1.5倍に、乗っていなければ1倍に戻す。 ●現在の処理  ○メインタイムラインの処理 ---------------------------- //最初のシーンを設定 _global.scene = SceneMcSelect //毎フレーム、シーン関数を呼ぶ onEnterFrame = function() { //現在シーンを呼ぶ eval( _global.scene )(); } ----------------------------  ○SceneMcSelect関数の定義 ---------------------------- function SceneMcSelect(){ for( count = 0 ; count < 3 ; count++ ){ //マウスが乗ったか? eval("mc_4_" + count).onRollOver = function(){ trace(count); eval("mc_4_" + count)._xscale = 150; eval("mc_4_" + count)._yscale = 150; } //マウスが離れたか? eval("mc_4_" + count).onRollOut = function(){ trace(count); eval("mc_4_" + count)._xscale = 100; eval("mc_4_" + count)._yscale = 100; } } } ---------------------------- ●現在の挙動  onRollOverやonRollOutの判定は正しく行われているようですが、  x/yscaleの変更処理が行われません。  traceでcountの値を確認すると、なぜか【3】になっています。 難しい処理をしているわけではないと思うのですが、 思うとおりの挙動にならず困っています。 何か間違いや見落とし等ございましたら、ご指摘お願いいたします。

    • ベストアンサー
    • Flash
  • Action Script3.0でプルダウンメー

    Flash勉強中4週目の初心者です。 Action Script3.0でプルダウンメニュー(ポップアップメニュー)を作りたいのですが、詳しい方がいましたら教えてください。 フラッシュで動画を作り、最後にアイコンが並ぶようにしました。アイコンをマウスオーバーでプルダウンメニューがでて、それぞれのカテゴリーにリンクをさせたいのですが、WEBで調べてもAction Script3.0でつくるプルダウンメニューがあまりなく、行き詰っています。 どなたかAS3.0のスクリプトが、初心者にも分かりやすく出ているサイト、もしくはサンプルスクリプトなどがありましたら教えて下さい。設置の仕方等、全くわかりませんので、詳しく知りたいのです。 独学でマニュアルをもとに勉強しています。自分ひとりではやはり限界がありますので、悩んでいます。よろしくお願い致します。

    • ベストアンサー
    • Flash
  • 「Suzuka」のアクションスクリプト

    フリーのFlash作成ソフト、「Suzuka」を使用してFlashをつくっているのですが、アクションスクリプトの命令の言語がさっぱりわかりません。 スクリプト(クリックアクション)となっている所に、スクリプト編集があるのですが、もともと、アクションスクリプトの知識は皆無で、手も足も出ません。 今回は、Flashでテキストだけの物語を作ろうとしているので、 せめて、 「クリックして、次のテキストを表示する」 ことをやりたいのです。 これは、テキストエフェクトでは出来ませんでした。 やりかたがわかる人はどうか、教えてください。 よろしくお願いします。

  • 【Flash】アクションスクリプトの表示階層について

    こんにちは。 大変初歩的な質問かと思いますが、アクションスクリプトと、他シンボル(画像やスプライト等)の表示階層の件で教えてください。 使用ソフトは『suzuka』、OSは『WindowsXP』です。 簡単なFlashを作成したことはありますが、アクションスクリプトは初めて使用します。 下記のサイトを参考に、雪を降らせるFlashを作りました。 http://www.kirupa.com/developer/mx/snow.htm 記述は、数値のみ少し変更しました。 背景として雪を降らせて、その上で他の画像やスプライトが動くFlashにしたいのですが、どうしても雪が最前面で降ってしまいます。 アクションスクリプトのレイヤー位置を、他シンボルの下に置いても変わりません。 アクションスクリプトとは、レイヤー位置に関わらず、基本的に最前面で作動するものなのでしょうか? どうすれば、他シンボルの背後でアクションスクリプトが作動しますか? 恐れ入りますが、教えてください。

    • ベストアンサー
    • Flash
  • Flashのアクションスクリプトについて質問があります。

    Flashのアクションスクリプトについて質問があります。  FlashのCS2を使って選択式クイズを作っています。タイトルや問題などのフレームにはラベルを付けて、ラベルレイヤーのキーフレームにスタートや選択肢のボタンを配置しました。そして、タイトルラベルにあるスタートボタンを押すと問題1に飛ぶようにアクションスクリプトを設定しました。その後、きちんと設定出来ているか再生して確認してみたところ、問題1から再生されて、タイトルから再生されなくなりました。何回かやり直してみたのですが、タイトルから再生されませんでした。アクションスクリプトの設定は、「タイトルラベルのキーフレームをクリック→スタートボタンが選択されていることを確認→F9を押してアクションスクリプトの設定画面を表示→スクリプトアシストをオンにする→グローバル関数の中にあるgotoをダブルクリック→移動して再生を停止をオンにする→タイプをフレームラベルに変更→フレームのメニューをクリックして問題1を選ぶ」というふうにしました。 なぜ、タイトルからではなくスタートボタンを押さないと表示されない問題1が表示されたのかわかりません。どこで設定を間違えているのか分からないので、わかる方がいらっしゃたら教えていただきたいと思います。お願いします。

  • アクションスクリプト3.0 MOUSE_OVER

    お世話になっております。 3枚の画像がMouse_overされた際に、別の画像に切り替わるアクションスクリプトを考えております。画像のインスタンス名で判定し、共通のファンクションで管理できればと思っております。 現時点では、参照値に代入できません というエラーがでています。インスタンス名と比較させるところで止まっているのはわかりますが、これをどのように解決したらよいのでしょうか。 googleでアクションスクリプト3.0 画像 切り替えで検索しましたが、いずれも、私がやりたいこととは違うものでした。一応、mouse_overの使い方では参考にしました。 ステージ上に二つのレイヤーを作成し、上にマウスオーバー状態、下にノーマルの状態の画像を配置しました。 どうか、ご教授いただけますでしょうか。 よろしくお願い致します。 現在のスクリプトは以下のような感じです。 public function init() {  aaa_over.visible = "false";  bbb_over.visible = "false";  ccc_over.visible = "false";  aaa.addEventListener(MouseEvent.MOUSE_OVER, overMouse);  bbb.addEventListener(MouseEvent.MOUSE_OVER, overMouse);  ccc.addEventListener(MouseEvent.MOUSE_OVER, overMouse); } private function overMouse(MC:MouseEvent):void{  var pointMc:MovieClip = MovieClip(MC.target);  var pic_over = pointMc.name;  pointMc.visible = "false";  pic_over+"_over".visible = "ture";  pointMc.addEventListener(MouseEvent.MOUSE_OUT, outMouse); } private function outMouse(mc:MouseEvent):void{  var pointMc:MovieClip = MovieClip(mc.target);  var pic_over = pointMc.name;  pointMc.visible = "ture";  pic_over+"_over".visible = "false"; }

    • ベストアンサー
    • Flash

専門家に質問してみよう