
複数の写真をランダムで水平に回転させたいのですが、
ActionScript でどの function を使えば良いかご存知ですか?
ムービークリックでも試してみたのですが、
画像が時計周りに回転するのを防ぐ方法はありますでしょうか?
作りたいものは Apple の Core Animation のビデオで
残り1分40秒に出てくるようなイメージです。
http://www.news.com/1606-2_3-6103330.html
No.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行目は必要ないかもしれませんね。けど一応・・。)
試してみたところ、完璧に動きました。
また一つプログラミングの面白さを体験出来て感謝です。
今月末に出る Leopard でも こんなことが簡単に出来るそうなので、
とても楽しみです。 ありがとうございました。
No.1
- 回答日時:
~単調に回す方法~
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で実現できます。
丁寧な解説本当にありがとうございます。
ここで三角関数を使うとは夢にも思いませんでした。
コードを見ても半分しか理解してないのですが。。
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);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SPREAD(GrapeCity)のセルにフォ...
-
レーザのスポット径の計算式
-
DataGridViewで入力チェック後...
-
DAMのデンモクの使い方
-
メッセージボックスを前面に表...
-
至急です。 トイレに行きたいな...
-
TDSマジックランプシアター 箱...
-
初期状態でのフォーカスの解除
-
テレビ ビエラでネット接続
-
Macのウィンドウが透ける
-
マイクロソフト エディでのお...
-
精神疾患持ちに日記を書いたら...
-
【至急】フォトショップの「自...
-
CapCutで、人の目からビームを...
-
"判定"の英語表現について
-
トップページの上部の広告宣伝...
-
油性マジックで書いたサインを...
-
至急!! ノートパソコンを3年...
-
Adobe Premiereでのコマ落とし
-
アフターエフェクトで電車の揺...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスを前面に表...
-
SPREAD(GrapeCity)のセルにフォ...
-
C#でButtonのフォーカス枠を消...
-
Chrome フォーカス時に枠が表示...
-
Excelのマクロで実行時エラー”1...
-
コンボボックスの開いたリスト...
-
レーザのスポット径の計算式
-
雷のようなアニメーションをウ...
-
DataGridViewで入力チェック後...
-
初期フォーカスについて
-
PowershellでCLIとISEの結果が違う
-
DAMのデンモクの使い方
-
コンボボックスの三角を一時的...
-
フォトショのアクションを別のM...
-
[化学基礎] μmのμはどうして...
-
iPhoneのクイックアクションを...
-
ウインドウの最前面表示
-
ComboBoxのフォーカスをはずす
-
パソコンで音楽を聞くときのHDD...
-
ふわっと色が変わるボタンを作...
おすすめ情報