• ベストアンサー

Flash作成について、大きな画像をクリックしてクリックした方向に画面がスライドする作り

Flash作成をしているのですが、大きな画像、イラストをクリックして画像をスライドさせるような作りはどのようにすればできるでしょうか? 開発ツールはAdobe Flash CS4で作成しています。 参考サイトは下記になります。下記サイトのMAP画面に近い作りになると思います。 http://gackt.com/jp/dears/index.html よろしくお願いします。

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

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

ご質問に ActionScript や SWF のバージョン指定などが書かれていらっしゃいませんので, Flash CS4 ということから ActionScript3.0 で回答します。 まず, ActionScript3.0 用ドキュメントを作成し, そのステージ上に大きな画像を配置します。 その大きな画像を選択して, 「修正」→「シンボルに変換」より 「ムービークリップ」 に変換しますが そのときの 「基準点」 を左の上に設定して 「OK」 します。 (わからない場合は下の図↓の 図1 を見てください。) 次にそのステージ上のムービークリップにインスタンス名を付けます。 この説明では 「pic_mc」 というインスタンス名にしたとしておきます。 (わからない場合は下の図↓の 図2 を見てください。) 新規でActionScriptを書くためのレイヤーを追加して, そのレイヤーのフレーム1の空白キーフレームに次のようなスクリプトを書けば(コピペすれば), 一応,画像が動く物は完成です。 ------------------------------------------------------- // 初期中央座標の指定(※適当に指定) var my_x:Number=300; var my_y:Number=300; // 動く速さの指定(※0~1の間で指定) var spd:Number=1/5; // pic_mc をその座標に移動 pic_mc.x = -(my_x-stage.stageWidth/2); pic_mc.y = -(my_x-stage.stageHeight/2); //イベントリスナーを登録(イベント:マウスアップ,実行関数:setPoint) addEventListener(MouseEvent.MOUSE_UP,setPoint); // 関数 setPoint の定義(イベント) 戻り値:なし function setPoint(evt:Event):void { // 中央座標をクリックした座標に変更 my_x=pic_mc.mouseX; my_y=pic_mc.mouseY; } //イベントリスナーを登録(イベント:毎フレーム実行,実行関数:movePoint) addEventListener(Event.ENTER_FRAME,movePoint); // 関数 movePoint の定義(イベント) 戻り値:なし function movePoint(evt:Event):void { // pic_mcのx座標を -(my_x-stage.stageWidth/2) に spd ずつ近づける pic_mc.x+=(-(my_x-stage.stageWidth/2)-pic_mc.x)*spd; // pic_mcのx座標を -(my_y-stage.stageHeight/2) に spd ずつ近づける pic_mc.y+=(-(my_y-stage.stageHeight/2)-pic_mc.y)*spd; // // もし pic_mc の x 座標が左に行き過ぎれば if (pic_mc.x<stage.stageWidth-pic_mc.width) { // pic_mc の x 座標を左限度で固定 pic_mc.x=stage.stageWidth-pic_mc.width; // もし pic_mc の x 座標が右に行き過ぎれば } else if (pic_mc.x>0) { // pic_mc の x 座標を右限度で固定 pic_mc.x=0; } // もし pic_mc の y 座標が上に行き過ぎれば if (pic_mc.y<stage.stageHeight-pic_mc.height) { // pic_mc の y 座標を上限度で固定 pic_mc.y=stage.stageHeight-pic_mc.height; // もし pic_mc の y 座標が下に行き過ぎれば } else if (pic_mc.y>0) { // pic_mc の y 座標を下限度で固定 pic_mc.y=0; } } ------------------------------------------------------- 最初の3行  // 初期中央座標の指定(※適当に指定)  var my_x:Number=300;  var my_y:Number=300;  // 動く速さの指定(※0~1の間で指定)  var spd:Number=1/5; この部分の数を好みなどによって書き換えるだけで 一応のものはできると思います。 最後の動く範囲指定のif文の箇所が,作る物によって変わる可能性はあります。  

flashman77
質問者

お礼

>BlurFiltanさん とても丁寧にありがとうございます。 とても助かりました。 まだ試していませんが、やってみたいと思います。

flashman77
質問者

補足

試してみたところ求めていた動作になりました。 とても助かりました。ありがとうございます。 一点だけ補足なのですが、Flashを起動させた時、ウインドウサイズを変更できないようにするにはどうすればいいでしょうか? 質問ばかりで申し訳ありません。

その他の回答 (1)

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

#1 です。 > Flashを起動させた時、ウインドウサイズを変更できないようにするには > どうすればいいでしょうか? 最初のご質問と全くジャンルが違います。 私の専門ではない JavaScript 領域です。  Flashを起動させた時、ウインドウサイズを変更できないようにする     ↓変更↓  Flashが貼ってあるページを開いた時、ウインドウサイズを変更できないようにする この路線で研究してみてください。 ActionScript には window クラスなどありません。 Docment クラスならありますが,これは HTML 内の Document を示すものではなく, FLA や SWF を Docment とした場合の Docment クラス です。 ケーキ屋さんにケーキの皿を特注するようなものです。 皿は皿屋さんに注文すべきです。

flashman77
質問者

お礼

返事が遅れてすいません。 Flashのみの実行形式で作成しようと思っていたのですが、 実行形式でFlashを起動した場合のウインドウサイズを固定にする というのはできないんですね・・・。 勉強になりました。ありがとうございます。

関連するQ&A