Actionscript3.0でmenu_mc01~10を500ピクセル動かす方法

このQ&Aのポイント
  • こんにちは。Actionscript3.0で、以下のようなスクリプトを動かしたいのですが、menupositionReset関数内でfor文を使用してmenu_mc01~10を500ピクセル動かしたいですが、1083: Syntax error: dot is unexpectedというエラーが表示されて動作しません。
  • スクリプトはステージの1フレーム目に記述されていて、for文内の["menu_mc"+i].x=500;でエラーが出ているようです。なぜ動かないのか原因を知りたいです。
  • この問題を解決するためにどのような修正が必要か教えてください。
回答を見る
  • ベストアンサー

for文の処理で・・・

こんにちは。Actionscript3.0で、 以下のようなスクリプトを動かしたいのですが、 menupositionReset(); function menupositionReset():void { for (var i:int = 1; i <= 10; i++) { trace("menu_mc" + i); ["menu_mc"+i].x=500; } } これを実行すると、 1083: Syntax error: dot is unexpected. と表示されて動きません。menu_mc01~10を500ピクセル動かしたいだけなのですが。。。 スクリプトはステージの1フレーム目に記述しています。 ["menu_mc"+i].x=500;でエラーが出ているようです。 なぜ動かないのでしょうか?

  • SYNC
  • お礼率25% (19/76)
  • Flash
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • cspl
  • ベストアンサー率83% (55/66)
回答No.1

ムービークリップの名前の数字から0を取って、 menu_mc1~10 にして、 ____________ this["menu_mc"+i].x=500; ____________ と、thisを先頭に足してみてください。 ちなみに、それぞれのムービークリップの座標から500ピクセル動かしたいのであれば、 下記が正解だと思います。 ____________ this["menu_mc"+i].x+=500; ____________

SYNC
質問者

お礼

動きました。 thisをつけるんですね。。。 ありがとうございました。助かりました!

関連するQ&A

  • インスタンス名を変数に

    こんにちは。 インスタンス名を変数(imaMc)に格納して、x方向に移動したいのですが、エラーが出てしまってうまく行きません。 var imaMc:String; imaMc=scale_mc.name; stage.addEventListener(MouseEvent.CLICK,removeScaleset); function removeScaleset(evt:MouseEvent):void { trace(imaMc); imaMc.x=500; } 上記のようなスクリプトを組んでいるのですが、trace(imaMc)までは正常に動くのですが、imaMc.x=500が以下のようなエラーになってしまいます。 1119: Access of possibly undefined property x through a reference with static type String. これは何故でしょうか? traceするとscale_mcと出るので間違っていないと思うのですが・・・ ActionScript3.0です。 ご回答お願い致します!

    • ベストアンサー
    • Flash
  • attachMovieでのインスタンス名

    以下のようなスクリプトを書いているのですが、 traceの値がすべてmenu_mcとなってしまいます。 インスタンス名をmenu1_mc,menu2_mc,menu3_mc,・・・としたいのですが、どうすればいいのでしょうか? i = 10; for(y = 0; y < i; y++) { trace(y); m = y+1; obj = _root.attachMovie("menu", "menu"+m, y); obj._x = 30; obj._y = 70*y; trace(this._name); } 環境はFlashCS3、ActionScript2.0です。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • ActionScript3.0のfor文の処理について質問させてくださ

    ActionScript3.0のfor文の処理について質問させてください。 画面に9つのTextFieldを作って、テキストを表示させています。 そして、ステージをクリックしたら、そのテキストが消えるという流れにしたいのです。 どうすればできるのでしょうか? あれよこれよと色々試して書いたスクリプトが var b:int = 0; for(b; b<10; ++b) { var introA:TextField = new TextField(); var introB:TextField = new TextField(); introA.name = "introA"+b; introB.name = "introB"+b; addChild(introA); addChild(introB); introA.htmlText = "aaa"+b; introB.text = "bbb"+b; introA.x= 30; introB.x= 130; introA.y= 30*b; introB.y= 30*b; } stage.addEventListener(MouseEvent.CLICK, cont); function cont(ev:MouseEvent):void{ introA.htmlText = ""; introB.text = ""; } -------- これだと、最後のひとつしか消えてくれません。 どうすれば全部のテキストが消えるのか、どなたかご指導よろしくお願いします。

    • ベストアンサー
    • Flash
  • actionscriptでfor文が正常に動かない

    自分ではどうやっても解決できなかったのでどうかご教授ください。 面倒な作りになっているので大変申し訳ないのですが、少ない数だと機能したものの、数を増やしたことで上手く動かなくなってしまいまして… ご面倒だとは思いますが、どうか教えていただきたいです。 actionscript2.0で、Photo0~23のMCがあり、各MCの中には5フレームを作っています。 Photo0~23をクリックすることでnextFrameで1ずつフレームが進むよう設定していています。 問題はここからなのですが、ボタンを押したら各MCの今現在表示しているフレームごとにリネームをしようと考えています。 例)()内表示されているフレーム数 Photo0(5),Photo1(3),Photo2(3),Photo3(1),Photo4(4),Photo5(2) ↓ Photo0(5),Photo4(4),Photo1(3),Photo2(3),Photo5(2),Photo3(1) (フレームの表示番号が多い順番に並べ替える(調べる)) ↓リネーム Photo0(元Photo0),Photo1(元P4),Photo2(元P3),Photo3(元P2),Photo4(元P5),Photo5(元3) 現在表示しているフレーム番号をMCの番号順(Photo0~23)順に調べるスクリプトは下記で出来ています。 しかし、いざリネームをさせると20や21までしかリネームできずに困っています。 var clip_addr:MovieClip = _root; Change_b.onPress= function(){ _global.px = 0; Clip_Align(); } function Clip_Align():Void { var i:Number, j:Number, px:Number; var ref:MovieClip; //表示フレームを順に調べる for (i=5; i>=1; i--) { //全てのMCをチェック for (j=0, px=0; j<=23; j++) { //走査するMCの参照を作成 ref = clip_addr["Photo"+j]; //該当するMCがあった場合、順にリネームする if (ref._currentframe == i) { ref._name= "Photo"+_global.px; //5から1の順に出てくるかを調べる/正常(しかし↓で21しか出ていない場合は21個しか出てこない) trace(i) //ちゃんとリネームされているか調べる/ここで毎回20や21などバラバラな数字が… trace(ref) //次のためにpxを更新 _global.px++; } } } } ここからずっと進めずに立ち往生してしまっている状態で、困っています… どこをどう直せば希望の動作をしてくれるのか、 もしくは、記述しているスクリプトがそもそもこれでは出来ないようでしたら、どう改変したらいいのか教えていただきたいです。 何卒よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • atttachmovie で配置エリアの限定

    actionscript 初心者です。 for文の中で var x:Number = Math.floor(Math.random()*1000)-500; var y:Number = Math.floor(Math.random()*650)-325; _root.space.attachMovie("btn_mc1", "btn_mc"+i,0-i, init); _root.["btn_mc"+i]._x = x; _root.["btn_mc"+i]._y = y; というスクリプトで、btn_mcというmcをランダムに配置しています。 (このスクリプト、間違っているかもです。すみません) 配置位置は今1000px×650pxのステージ中でランダムになっているのですが これを、このステージいっぱいの楕円形があると仮定して その中にだけ、配置するということをスクリプトでできるでしょうか?? つまり、mcがぼんやりと楕円形に集まっている。。というような状態に したいのです。 楕円のマスクをかける、という方法ですと、mcが欠けてしまい、 見栄えがよろしくないです。。 よろしければ、お教えいただけると、幸いです。 お願いいたします m(__)m

    • ベストアンサー
    • Flash
  • for文を使ったボタン

    for文を使ったボタン ボタンが2つあり、そのボタンをロールオーバー、ロールアウトでそれぞれ違うmcを動かしたいのですが、うまくいきません。ボタンを「maru1、maru2」として動かしたいmcを「btn1、btn2」とインスタンス名をつけて以下のスクリプトを書きました。 maru1.addEventListener(MouseEvent.ROLL_OVER,onMouse1); maru1.addEventListener(MouseEvent.ROLL_OUT,outMouse1); maru1.buttonMode = true; maru2.addEventListener(MouseEvent.ROLL_OVER,onMouse2); maru2.addEventListener(MouseEvent.ROLL_OUT,outMouse2); maru2.buttonMode = true; function onMouse1(e:MouseEvent):void{ mc_tween = new Tween(btn1, "scaleX", Elastic.easeOut, 0.7, 1, 1, true); mc_tween.start(); } function outMouse1(e:MouseEvent):void{ mc_tween = new Tween(btn1, "scaleX", Elastic.easeOut, 1, 0.7, 1, true); mc_tween.start(); } function onMouse2(e:MouseEvent):void{ mc_tween = new Tween(btn2, "scaleX", Elastic.easeOut, 0.7, 1, 1, true); mc_tween.start(); } function outMouse2(e:MouseEvent):void{ mc_tween = new Tween(btn2, "scaleX", Elastic.easeOut, 1, 0.7, 1, true); mc_tween.start(); } これでも動くのですが、ボタンが沢山あった場合にfor文を使ってできないかと考え、ttp://www.oro.co.jp/web/creator/flash/actionscript/soft-button.htmlを参考に var mc_tween:Tween; //イベント登録 for(var i:int = 1; i < 3; i++){ this["maru"+i].addEventListener(MouseEvent.ROLL_OVER, rollOverEvent); this["maru"+i].addEventListener(MouseEvent.ROLL_OUT, rollOutEvent); this["maru"+i].buttonMode = true; } function rollOverEvent(event:Event):void{ var btn:MovieClip = event.target as MovieClip; mc_tween = new Tween(btn, "scaleX", Elastic.easeOut, btn.scaleX, 1.5, 1, true); mc_tween = new Tween(btn, "scaleY", Elastic.easeOut, btn.scaleY, 1.5, 1, true); addChildAt(btn, 5); } function rollOutEvent(event:Event):void{ var btn:MovieClip = event.target as MovieClip; mc_tween = new Tween(btn, "scaleX", Elastic.easeOut, btn.scaleX, 1, 1, true); mc_tween = new Tween(btn, "scaleY", Elastic.easeOut, btn.scaleY, 1, 1, true); } と書いたのですが、上手く行きません。<var btn:MovieClip = event.target as MovieClip;>の部分でどのように「btn1、btn2」を参照したらいいのでしょうか。 作業環境はmacOSX flashCS5 actionscript3です。よろしくお願い致します。

    • ベストアンサー
    • Flash
  • AS2 for文内のfunctionがうまくいきません

    今までフレームアクションと配布されているActionScriptの簡単なカスタマイズ程度しかしたことがないActionScript初心者です。 現在ActionScriptを使いこなせるようになるように勉強中なのですが、途中で躓いている部分があり、先に進めません。 ご存知の方、ご教授して頂けると幸いです。 ■したいこと 1.ライブラリから横一列にMC(btn_mc)を配置 2.btn_mc内にそれぞれサムネイル画像を読み込む 3.btn_mcをクリックするとサムネイルの拡大画像がnull_bgに読み込まれる といった簡易的なアルバムを作っている途中です。 ■スクリプト bar = menu_mc.content_mc.menu_bar; objA = new Array (); i = 0; sx = 0; for (x = 0; x < 33; x++) { str = "btn_mc" + String (i); objA[i] = bar.attachMovie ("btn_mc", str, i + 1); objA[i]._x = sx; sx += 80; var mc_name = "img/" + x + ".jpg"; bar[str].null_mc.loadMovie (mc_name); bar["btn_mc" + i].onRelease = function () { null_bg.loadMovie (mc_name); }; i++; } ■参考URL http://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=%A5%E0%A1%BC%A5%D3%A1%BC%A5%AF%A5%EA%A5%C3%A5%D7%A4%CE%CA%A3%C0%BD_Flash こちらの「敷き詰め」を参考にしています。 ■環境 WINDOWS XP Adobe FLASH CS3 Professional ■躓いている点 したいこと2のサムネイル画像を読み込むところまでは成功したのですが、その先の「btn_mcをクリックするとサムネイルの拡大画像がnull_bgに読み込まれる」がうまくいきません。 traceで調べてみると、クリックしたMC・読み込み画像がどちらも「x」が33になってしまっているのですが、これはどうしてなのでしょうか? 初めての質問なので、文章に解り辛い点・不備があるかもしれませんが、どうぞよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • removeChild()についてご教授願います。

    AS3.0の初心者です。 Stratボタン、Stopボタンで以下のスクリプトで表示と非表示を繰返ししたいのですが、 Stopボタンで、単にremoveChild();にしますと、 「#2025: 指定した DisplayObject は呼び出し元の子でなければなりません。」 とエラーとなります。 色々と調べてみたのですが、よく判判りません。 Stopボタンの記述をどの様にすればよいのでしょうか? 初歩的質問で大変恐縮ですが、どうかご教授お願い致します。 [メインスクリプト] var stageH = stage.stageHeight; var stageW = stage.stageWidth; //Stratボタン start.addEventListener(MouseEvent.MOUSE_DOWN,gene); function gene(e:Event):void { for (var i = 0; i < 20; i++) { var mc:Candy = new Candy(); mc.x = Math.random()*stageW + 10; mc.y = Math.random()*stageH + 10; addChild(mc); } } //Stopボタン stop.addEventListener(MouseEvent.MOUSE_DOWN,stp); function stp(e:Event):void { removeChild(mc); この部分がよく判らないのですが、 どの様に記述したら良いのでしょうか? } --------------------------------------- [mc のスクリプト] var mcH:int = this.height; var mcW:int = this.width; var stageH = stage.stageHeight; var stageW = stage.stageWidth; var speedY:uint = Math.random() * 5 + 5; var speedX:uint = Math.random() * 2; addEventListener(Event.ENTER_FRAME,loop); function loop(Event):void { y += speedY; x += speedX; if ( y > stageH ) { y = - mcH; } if ( x > stageW ) { x = - mcW; } } -----------------------------------------

    • ベストアンサー
    • Flash
  • ステージ外へカーソルが出た事を感知させるには

    宜しくお願いします。 FlashMX2004 MacOS:tiger AS1.0 Player6 ステージサイズ100x100ピクセルの上に、80x80ピクセルのMCが配置してあります。 上下左右に10ピクセルの余白がある状態です。 カーソルがステージ外へ出た事を感知したいのですが、カーソルを素早く動かすと、rollOutを感知してくれません。 MCには以下のscriptが書いてあります。 on(rollOver){ trace("over"); } on(rollOut, releaseOutside, dragOut) { trace("out"); } 宜しくお願いします。

  • AS3.0 ループを利用したムービークリップ生成

    お世話になります。 ソフトはFlashCS3を使用しています。Actionscript3.0で書き出そうと思っています。Actionscript3.0初心者ですがよろしくお願いします。 ライブラリーに Mc01,Mc02,Mc03,Mc04とクラスを指定したムービークリップを準備した状態でステージにムービークリップを生成しようと考えています。その際、for文を使って短く書きたいと思っています。 for (var i=0; i>4; i++){ var "Mc0"+i:"Mc0"+i = new "Mc0"+i(); "Mc0"+i.x = 10*i; "Mc0"+i.y = 10*i; this.addChild("Mc0"+1); } 上記のように書くと「1086:シンタックスエラー:identifierがMcの前に必要です。」とエラーが出てうまく作動しません。 参考までに現在は以下のようにすべて書き出しています。 //ムービクリップ01 var Mc01:Mc01 = new Mc01(); Mc01.x = 0; Mc01.y = 0; this.addChild(Mc01); //ムービクリップ02 var Mc02:Mc02 = new Mc02(); Mc02.x = 10; Mc02.y = 10; this.addChild(Mc02); …… 以下省略 特にfor文にこだわっててはいません。ループで生成できればOKです。 どなたかわかる方よろしくお願いします。

    • ベストアンサー
    • Flash

専門家に質問してみよう