• ベストアンサー

ActionScript

ActionScript3.0でムービクリップ(たとえば丸)をA点からB点に移動し、その後C点、さらにD点という具合に移動させたい場合、どのようにスクリプトを書くのが一般的なのでしょうか?やはりif文などを使うのでしょうか? ものすごく初歩的なことのようですが、わからずにいます。何卒よろしくお願いします。

  • Flash
  • 回答数2
  • ありがとう数2

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

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

現在広く一般に使用されているのはTweenerというライブラリです。移動のスクリプトはこれ一つ覚えれば大抵のことはできるようになります。 Tweenerで検索してみてください。 ※Tweenという用語は必ずしもタイムライン上で設定するモーショントゥイーンを指すものではないです。Flashにも標準でTweenクラスが用意されているので、ヘルプなどで調べてみるとよいと思います。

gototei
質問者

お礼

cspl様、さっそくTweenerで検索してみました。ライブラリのことは知ってはいたのですが、初心者の私はよく意味がわからずにいました。こんなに便利なものなのですね。今はまだネット上にあるサンプルのコードをコピーして試してる段階ですが、私が求めていた答えはここにあるようです。適切な回答をいただき有り難うございました。

その他の回答 (1)

回答No.1

Tweenを使いましょう 1.A->Bへ移動するTweenイベントを設定する 2.上のイベントが終了したらB->Cへ移動するTweenイベントを設定する 3.以下略 こうすれば、移動タイミングなども先に設定できるので楽です

gototei
質問者

補足

qau puzzlerさんから回答をいただきましたが、私の質問の書き方が悪かったようです。私が希望するのはTweenを使ってではなく、ActionScriptのみで、まさにTweenを使ったときと同様な動きにするにはどのようにスクリプトを書けばよいのかということです。四角形の左上の角を出発点にして右上の角へ、そこから右下、さらに左下、そこから出発点へ戻る、というような場合は水平移動はx座標、垂直移動はy座標のみの移動なので理解出来るのですが、たとえばA点(x:50,y:50)からB点(x:200,y:350)へ、そこからC点(x:100,y:150)というような移動をさせたい場合です。やはりif文を使うのだと思うのですが、初心者なので思いつきません。ActionScript3.0で往復運動とか加速、減速、とかはある程度わかるようになったのですが、こんな簡単そうなことが出来ずに悩んでおります。どうかよろしくお願いします!

関連するQ&A

  • ActionScript3.0の記述が長い・・・

    ActionScript3.0の記述が長い・・・ お世話になっています。 最近Flashを始めました初心者です。 現在FlashCS5である値を計算する計算機のようなFlashを制作しています。 ・・・と、やりたいことは実現できましたので、 このことは質問と直接関係ないのですが。。 質問は、スクリプトのまとめ方(?)についてです。 というのも、初心者だけに知っていることしかできないので、 絶対に一緒に出来るだろうと言うような、同じような記述がたくさん出てきます。 それを配列や演算子を使用し、ソースをすっきりさせたいのです。 無理なものもあるかもしれませんが、 以下のまとめ方をお教えください。 -- (1) -- a.restrict = "0-9"; b.restrict = "0-9"; c.restrict = "0-9"; d.restrict = "0-9"; e.restrict = "0-9"; -- (2) -- var A:Number = Number(a.text); var B:Number = Number(b.text); var C:Number = Number(c.text); var D:Number = Number(d.text); var E:Number = Number(e.text); -- (3) -- var A = B - 100 if(A < 0){ A = 0; }; var C = A / B if(C < 0){ C = 0; }; var D = C * B if(D < 0){ D = 0; } if(D > 0){ D = Math.round(D); }; -- (3) -- F.text = String(A); G.text = String(B); H.text = String(C); I.text = String(D); J.text = String(E); 変数は適当に当てはめています。 お分かりになる方がいらっしゃいましたらご教授ください。 よろしくお願い致します。

    • ベストアンサー
    • Flash
  • Actionscriptでのフレーム間の移動

    // ここで実際に○を移動させる Pofmaru1(l); Pofmaru2(r); // maru1を移動させる関数Pofmaru1 function Pofmaru1(l) { if (l == 1) { gotoAndPlay("maru1",2); }else if (l == 2) { ・・・・・・ // maru2を移動させる関数Pofmaru2 function Pofmaru2(r) { if (r == 1) { gotoAndPlay("maru2",2); }else if (r == 2) { ........ maru1を移動させる処理を呼んで、gotoAndplayでmaru1レイヤーの2フレーム目へ飛び、2フレーム目が再生されたら、次にクイックソートのプログラムに戻り、関数 Pofmaru2(r); を処理するようにしたいのですが、うまくいきません。C言語であれば普通if文の処理がされたら自動でプログラムに戻ってきて、Pofmaru2(r);の処理へ移ると思うのですが....Actionscriptはそうならないのでしょうか? ネットや本などで色々調べてみたのですが解決策が見つからず行き詰ってしまって困っています。 flash mxでプログラム通りにフレーム間を移動するようにするのは無理なのでしょうか?

  • ActionScriptで思うような動きを出せず、困っています

    *質問* 現在、ActionScriptを基本的な勉強から初めているのですが、 どうしても分からないところがあり戸惑っております。 皆さんお助言をどうぞお願い致します。 x座標:0.0、y座標:536.5から減速をしながら平行に移動し、 x座標が650以上になったら、x座標:35、y座標:25に向かい、 後方斜め上に移動するという動きを、作っていたのですが、 なかなかうまくいきません。 Scriptは下記の通りに記載致しました。 ============================ onLoad = function(){ maru1.Gox = 700; maru1.Goy = 25; flg = false; } maru1.onEnterFrame = function(){ this._x += (maru1.Gox - this._x)/10; if(this._x >= 650){ maru1.Gox = 35; flg = true; } if(flg = ture){ this._y += (maru1.Goy - this._y)/10; } } ============================ 初歩的な質問で大変申し訳ございませんが、 助言をどうぞよろしくお願い致します。 “環境”Mac OS 10.4、Flash8

  • flashのActionscriptでのムービーとのタイミング処理

    スクリプトの途中だけの部分ですが 再帰の中で // ここで実際に○を移動させる Pofmaru1(l); Pofmaru2(r); 再帰の外で // maru1を移動させる関数Pofmaru1 function Pofmaru1(l) { if (l == 1) { gotoAndPlay("maru1",2); }else if (l == 2) { ・・・・・・ // maru2を移動させる関数Pofmaru2 function Pofmaru2(r) { if (r == 1) { gotoAndPlay("maru2",2); }else if (r == 2) { ........ として、移動先のフレームにmaru1,maru2を目的の場所へ移動するムービーを呼び出して再生するようにしたいと思いました。 しかし、最後のムービーだけしか表示さえれない状態です。if文で指定のフレームへ移動してそのムービーが再生されてから、次のプログラムの動きへ移るようにしたいと思いました。そこでタイミング処理をすればいいのではないかと思ったのですが、いろいろ調べてみたのですが、プログラムがあまり得意では無く、再帰の中でフレーム移動の関数を呼び出しているので、どうしたらいいのかわからず行き詰ってしまい困っています。Actionscriptとムービー再生のタイミング処理はどうしたらいいのでしょうか? アドバイスください。お願いします。

  • ActionScript 3.0 について

    最近Flash、ActionScript 3.0のゲーム制作に興味を持って、 自分でパズルゲームをつくってみたいと思いました。 表示されるパズルを押したら得点が追加される形式で、 Aを押したら2点、Bを押したら3点、Cを押したら4点、といったものです。 初めてでどこから手をつけていいのかわからないので、まずどのようなものを理解すればいいのか、どういった土台を作ればいいのか教えてください。

    • ベストアンサー
    • Flash
  • if文の演算子について

    if文の演算子について int a=0,b=1,c=1,d=1; if(a==1 && b==1 && c==1 ||d==1){ Printf("yes"); }else{ Printf("no"); } if((a==1 && b==1 && c==1 )||d==1){ Printf("yes2"); }else{ Printf("no2"); } } 上記のif文で出力結果が異なります。 if((a==1 && b==1 && c==1 )||d==1)の方はa=1、b=1、c=1の時もしくはd=1の時と 理解できるのですが、 if(a==1 && b==1 && c==1 ||d==1)の方は、どういう条件の時が当てはまるのでしょうか?

  • 振り分けがうまくいきません

    チェックした項目をスクリプトでhidden属性に書き込み、そのデータ(a,b,c,d)によって飛ばすページを振り分けているのですがどのデータが来ても「a」のページに飛んでしまいます。 if文に間違えがあるようなのですがよくわかりません。 ご指導いただけますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • actionscript2.0で動的な位置変化

    actionscript2.0を使い、bg0~bg9と配列で並んだムービークリップに対して、hit判定があった場合、hitしたムービークリップの数の分だけ、位置がずれていくという動的なムービークリップの移動と配置をさせたいと考えています。(画像参照) また、「hitBar」を外した際に、元いた位置に戻ってほしいです。 ムービークリップの配置の配列は、下記のスクリプトを使用しています。 objA = new Array(2* 5); D = 0; sy = 112; for (y = 0; y < 2; y++) { sx = 70; for (x = 0; x < 5; x++) { objA[D] = _root.attachMovie("bg" , "bg" + D, D + 100); objA[D]._x = sx; objA[D]._y = sy; D++; sx += 36; } sy += 36; } actionscriptはまだまだ未熟なもので、いろいろと試してみたのですが、どうにも上手くいかずに困っています… どうかお知恵を貸していただけたら幸いです。 画像のような動きができれば、上記のスクリプトを用いらずともまったくかまいません。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 現在の表示HTMLに合わせて画像を一部変化させる

    立て続けですみません(^^ゞ もしかするとActionScriptでできるのでは?と思ったのですが、ご教授いただけたら嬉しいです。 タイトルの表現がわかりにくいと思いますが…。 複数ページに同じFlashのメニューを設置します。 メニューはA,B,C…となっていて、サブメニューがそれぞれ01.html,02.html,03.htmlとあるとします。 Flashメニューで、現在表示されているhtmlのページを判断して該当するメニューのボタンの色を変化させたいのです。 例えば、Bの02.htmlのページが現在開かれているのならBのボタンを水色から濃い青に、Cの01.htmlが表示されているのならCのボタンを…という感じにしたいのですが、ActionScriptをまだかじり始めの私には「フレームアクションの1フレーム目に」なにかしらのスクリプトを埋め込むだけで可能ではないか?という予測ぐらいしかできません。(if文?みたいなものを埋めるのかな…と) どうかご指導賜りたく存じます。

    • ベストアンサー
    • Flash
  • 数学C

    一次変換fによって点(1,2)が点(8,16)に移動し、点(2,1)が点(13,-1)に移動するとき、fによって点(1,1)は点(□,□)に移動する。 を解いたのですが、答えが(8,-1)と、なり□は、正の数という決まりなので、答えが合いません。助けて下さい。 回答 fを表す行列をA=(a b c d)として、 (a b c d)(1 2)=(8 16) と(a b c d)(5 2)=(2 4)に分けて、 {a+b=8,2c+d=16 {2a+b=13,c+d=-1 連立方程式の形にして、解くとa=5,b=3,c=17,d=-18と、なって A=(5 3 17 -18)(1 1)=(8 -1)となります。 このやり方が間違っているのですか。学校に数学Cの授業がなく独学で、やっています。間違い有れば御指摘お願いします。