アプリ版:「スタンプのみでお礼する」機能のリリースについて

複数の写真をランダムで水平に回転させたいのですが、
ActionScript でどの function を使えば良いかご存知ですか?

ムービークリックでも試してみたのですが、
画像が時計周りに回転するのを防ぐ方法はありますでしょうか?

作りたいものは Apple の Core Animation のビデオで
残り1分40秒に出てくるようなイメージです。

http://www.news.com/1606-2_3-6103330.html

A 回答 (2件)

僕の記述が悪かったようです。

申し訳ありません;;
xRotation関数を↓のと置き換えてください。

function xRotation (tar:MovieClip) {
tar.loc1 = 0;
tar.loc3 = tar._width / -2;
tar.loc4 = tar._x - tar.loc3;
tar.onEnterFrame = function () {
this.loc1 += 5;
if (this.loc1 > 360) {
this._xscale = 100;
this._x = this.loc3+this.loc4;
delete this.onEnterFrame;
} else {
this.loc2 = this.loc1 * Math.PI / 180;
this._xscale = Math.cos (this.loc2) * 100;
this._x = Math.cos (this.loc2) * this.loc3 + this.loc4;
}
};
}

回転を終了するときに最初のサイズ・位置に戻すようにしています。
また、deleteでonEnterFrameを削除してもその回にサイズ・位置変更が行われてしまっていたのでelseでくくってます。(ひょっとしたら8、9行目は必要ないかもしれませんね。けど一応・・。)
    • good
    • 0
この回答へのお礼

試してみたところ、完璧に動きました。
また一つプログラミングの面白さを体験出来て感謝です。

今月末に出る Leopard でも こんなことが簡単に出来るそうなので、
とても楽しみです。 ありがとうございました。

お礼日時:2007/10/09 18:21

~単調に回す方法~


1.新規にムービークリップを作成し、回したい写真をその中に入れて座標を(0,0)にし、ステージに配置します。
2.配置した写真入りムービークリップをクリックしてアクションパネルを出し、以下を記述します。

onClipEvent (enterFrame) {
this.loc1 += 5;
if (this.loc1 > 360) {
this.loc1 -= 360;
}
this.loc2 = this.loc1 * Math.PI / 180;
this._xscale = Math.cos (this.loc2) * 100;
this._x = Math.cos (this.loc2) * this.loc3 + this.loc4;
}
onClipEvent (load) {
this.loc1 = 0;
this.loc3 = this._width / -2;
this.loc4 = this._x - this.loc3;
}

3.プレビューすれば横方向に回転します。
二行目の「5」は回転速度です。値が大きくなるほど速く回ります。
また、スクリプト内の「_xscale」、「_x」、「_width」をそれぞれ「_yscale」、「_y」、「_height」にそれぞれ変更すれば縦方向に回ります。

~好きなタイミングに指定したムービークリップを一回だけ回転させる方法~
1.(上の1.の手順)
2.フレームアクションで

function xRotation (tar:MovieClip) {
tar.loc1 = 0;
tar.loc3 = tar._width / -2;
tar.loc4 = tar._x - tar.loc3;
tar.onEnterFrame = function () {
this.loc1 += 5;
if (this.loc1 > 360) {
delete this.onEnterFrame;
}
this.loc2 = this.loc1 * Math.PI / 180;
this._xscale = Math.cos (this.loc2) * 100;
this._x = Math.cos (this.loc2) * this.loc3 +this.loc4;
};

}

を記述します。上のアクションは、
xRotation(***);
という風に実行して一度だけ回すアクションです。「***」には回転させるムービークリップのインスタンス名(ターゲット)が入ります。(↓参考)
3.配置した写真入りムービークリップのインスタンス名を「photo1」にし、フレームアクション

xRotation(_root.photo1);

を2.の下に追加します。
4.プレビューすれば一度だけ回転して止まります。
このアクションを利用すれば、参照映像のようなものがFlashで実現できます。
    • good
    • 0
この回答へのお礼

丁寧な解説本当にありがとうございます。
ここで三角関数を使うとは夢にも思いませんでした。
コードを見ても半分しか理解してないのですが。。

5 x 3 の15枚ほど並べてみまして、
とてもシャレた感じに仕上がり感動です。

よろしければ一つだけお伺いしたいのですが、
10分ほどグルグル回してると ほんの1,2ミリだけ ずれてしまうのですが、
解決策ありますでしょうか?
定期的に this._x をオリジナルの位置に戻すのも一つの手ですね。

私がセットアップに使ったコードはこんな感じです。

function xRotation2() {
hit = Math.floor(Math.random() * 15) + 1;
trace(hit);
if(hit<10)
xRotation(eval('mc00' + hit));
else
xRotation(eval('mc0' + hit));
}

setInterval(xRotation2, 5000);

お礼日時:2007/10/08 18:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!