• ベストアンサー

アクションスクリプト教えて下さい

http://exyz.cocolog-nifty.com/good_sleep/2009/01/flash-40e7.html ↑このサイトを参考にさせていただいてるんですが、 写真が縦にスライドしているのを横にし、 尚かつ http://www.sony.co.jp/の様に上の写真がめくれて、下の写真を表示させたいのですが知識が乏しくお力をお借りしたいのですが、簡単な事なのか、難しい事なのかすら分かりません。 欲を言えばアクションスクリプトを記述していただけると嬉しいのですが... どなたかご教授お願いできませんでしょうか。 //初期設定 SlideNum = 0; Speed = 10; //スライド targetY = new Array(); targetY = [0,-150,-300,-450]; imgGr.onEnterFrame = yMove; function yMove(){ var Dist = targetY[SlideNum]-this._y; if(Math.abs(nDest) < 0.5){ this._y = targetY[SlideNum]; }else{ this._y += Dist/Speed; } }

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

Sonyサイトのものは比較的簡単なことです。 細かいところを突っ込まなければすごく簡単なことです。 しかしここではサンプルも提示できませんし 画像も限られていますから十分な説明はできません。 また ActionScript で解決できるような単純なものでもないです。   簡単だけど単純ではない。 です。 少なくとも多分(絶対), 参考にされているサイト( http://exyz.cocolog-nifty.com/good_sleep/2009/01/flash-40e7.html )を間違っています。 まったく違う方向からアプローチする必要があります。 原理だけを説明すると, 「画像がめくれる」というアニメーションをムービークリップの中に作成します。 それも画像の枚数だけ複数作成します。 そしてそのムービークリップ内アニメーションが自動再生しないように stop() などで止めておきます。 そして ボタンの onRelease または on(release) によって, その「画像がめくれる」アニメーション入りムービークリップを 最高深度に移動させるとともに再生を開始させます。 そしてその次の深度に 指示通り のムービークリップを配置します。 このムービークリップ自体も表示された段階では stop() などで自動再生しないように止めておきます。 また, setInterval で同じく 「画像がめくれる」アニメーション入りムービークリップを 最高深度に移動させでも良いと思います。 なお「画像がめくれる」という動作自体は モーショントゥイーン で作成しても良いですし ActionScript で作成しても良いと思います。 書かれていらっしゃる雰囲気からすると モーショントゥイーン で作成する方を強くお勧めします。 「Flashゲーム講座&ASサンプル集【深度について】」 http://hakuhin.hp.infoseek.co.jp/main/as/z.html こちらの方↑が参考になります。 どちらが良いという問題ではなくて Sony サイトを作る上での方向性の問題です。

m-----c
質問者

お礼

ご回答ありがとうございます。 原理だけでも知ることができて満足しています。 もう少し勉強してみます。 ありがとうございました。

その他の回答 (1)

  • ikeike77
  • ベストアンサー率37% (18/48)
回答No.2

”簡単”、”難しい”はどれほどFlash(他の言語でも)の習熟度によっても異なります。 さて、サンプルをざっと見ていってこれを横スクロール(?)に変えるには、Sprite3の4連ムービークリップを縦並びから横並びにする必要があります。 この下準備をしたところで、Action Scriptを以下のように変えます。 //初期設定 SlideNum = 0; Speed = 10; //スライド targetX = new Array(); targetX = [150,-240+150,-240*2+150,-240*3+150]; imgGr.onEnterFrame = xMove; function xMove(){ var Dist = targetX[SlideNum]-this._x; if(Math.abs(nDest) < 0.5){ this._x = targetY[SlideNum]; }else{ this._x += Dist/Speed; } } 要は_yのY座標を動かすところを_x(X座標)に変更します。 例では240*150の画像4枚ですから、X座標で動かすなら1枚の横の長さ、つまり240pxを動かさなければなりません。 わかりやすいように式で書いてありますが、計算して数値を求めてもいいです。 後はこれらの例に載っているAction ScriptやFlashのソースを見て頑張ってください。

m-----c
質問者

お礼

なるほど!為に成ります! もっと精進していきます。 ご回答ありがとうございました

関連するQ&A