D0812031 ガイドによる回転
Name miru
Date 2008年12月03日 (水) 11時16分
Message 憲ちゃんさん、みなさん こんにちは

いつも拝見させて頂いております。
今回、中心の円の周りを衛星が回転するものを作成したかったのですが
衛星の下部が常に円に向いて回る
という事をしたくて、試行錯誤していたのですが
どうも、スムーズに回転してくれなくてギクシャクした感じになってしまいます。

お忙しいと思いますがどうぞご教授下さいませ。


作成品
Response 01
2008年12月04日 (木) 00時20分> joy 
miruさん、
モーションガイドだと、精度が悪いので、ここは、三角関数を使ったscriptで記載すると、動きが安定します。
Flash MX以上ですと、フレームアクションが使えますので、第一フレームのscriptレイヤーに以下のように記載します。

//ここから
this.stop();
var degree:Number = 0;
var angle:Number;
var r:Number = 200;//該当MCが廻る、半径、少ない数字にすると、小さい円軌道を描きます。ご自分のお好きな数値にしてください。
var centerX:Number = Stage.width/2;//ステージの中央のX座標をcenterXに代入
var centerY:Number = Stage.height/2;//同様に、Y座標も

mc.onEnterFrame = function() {//廻る対象MCのインスタンス名を、mcとして、
degree += 10;//廻る速度調整値で、大きくするおt、速く廻ります
radian = Math.PI/180*degree;//度数をradianに変換
this._x = centerX+r*Math.cos(radian);//ステージの中央から半径rの円のcosの位置
this._y = centerY+r*Math.sin(radian);//ステージの中央から半径rの円のsinの位置
angle=Math.atan2(this._y-centerY,this._x-centerX)*180/Math.PI;//ステージ中央からmcまでの角度を、度数で算出し、
this._rotation=angle+90;//90度回転させて、angleを加算して、回転させる
};
//ここまで

となります。
Response 02
2008年12月04日 (木) 03時16分> miru   
joyさん、お忙しい中ありがとうございます。

本当に初心者で申し訳ないのですが

>フレームアクションが使えますので、第一フレームのscriptレイヤーに以下のように記載します。

上記の部分がよく理解できていないようで
衛星にはインスタンス名を mc としたのですが
全く回転しなくなってしまいました。


三角関数を使ったscript という言葉も初めて聞いたので…

お手数をお掛けしますが、もう少しご教授願えればと思います
本当にすみません。
Response 03
2008年12月05日 (金) 02時31分> joy 
miruさん、
以下にサンプルを置きました。professional 8で保存してます。
今日は、飲み会があって、酔っ払ってますので、デザインは、出鱈目ですが、動きは、分かるかと思います。

尚、
>フレームアクションが使えますので、第一フレームのscriptレイヤーに以下のように記載します。

シーン上でも、シンボル編集画面上でもいいのですが、レイヤー名をscript(任意名)として、scriptを記載する方法を、俗称、フレームアクションと言います。
これに対して、MCやBTNに直接記載する方法を、クリップアクション、ボタンアクションと言います。
好き好きですが、機能の範囲が広いのと、scriptの一覧性という観点から、私は、フレームアクションと使います。AS3.0では、クリップアクションやボタアクションは使えませんので、AS3.0まで幅を広げたいと思ってるなら、フレームアクションに慣れていた方が、いいでしょう。
http://homepage2.nifty.com/joys/answers/satellite/satellite.html
Response 04
2008年12月06日 (土) 16時58分> miru 
joyさん

お忙しい中、サンプルまで作成して頂いて本当にありがとうございます。
ずっと、ガイドだけを使用してきたのでとても勉強になります。
ASに関しては、 joyさんから頂いたサンプルを元に勉強していきたいと思います。

ありがとうございました。

<参考>
◎回転のメカニズム

このページの先頭へ