• ベストアンサー

画像のスクロール

横長の画像(1000px)をボタン(←→)により左右に動かそうとしています。 ボタンに on (release) { _root.main._x -= 250; } と記述すれば動くのですが、スライドするように動かしたいと考えています。 どのようにすればよいでしょうか? また、250ずつ動かしているので、3回ほど押すと当然画像が切れてしまいます。最大の移動値の設定もしたいと思っています。 何かいい方法か、参考サイトを教えてください。お願いします。

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

  • ベストアンサー
noname#35109
noname#35109
回答No.2

とりあえず, 幅1000px の画像を ムービークリップ に変換するわけですが, このときの基準点に気を付けておきます。 基準点とはムービークリップなどの基準座標になる点です。 例えば,  ムービークリップのx座標を100にする。   =ムービークリップの基準点のx座標を100にする。 という意味になります。 「インスタンスの基準点」 http://homepage3.nifty.com/ginga-b/MX/inst_refpoint.html このご質問の場合,基準点はどこにあっても良いのですが, 基準点の位置によってスクリプト(スクリプトの数値)が変わります。 どこにあっても良いのですが気を付けておなないとならないということです。 一応この回答では 幅1000px の画像をムーービークリップに変換するときに, 基準点は 「左上」 にしておいたとして書きます。  ---シンボルに変換----------   基準点: ■□□          □□□          □□□  -------------------------- また,x座標についてしか考えないので, 「左中」 もしくは 「左下」 でもかまいません。 > _root.main._x -= 250; と書かれていらっしゃるところから考えて, ムービークリップには 「main」 というインスタンス名を付けていらっしゃるのですね。 そのインスタンス名はそのまま使うとします。 上で基準点を左上にした画像のムービークリップに, 「main」 というインスタンス名を付けます。 さて,スクリプトですが, > スライドするように動かしたいと考えています。 と書かれていらっしゃる部分のプログラムを, _root のタイムラインのフレームに用意しておきます。 また,動く範囲が良くわからなかったので, ステージの範囲で動くというスクリプトにしています。 main が存在する _root の フレーム に書くスクリプト ------------------------------------ // 変数 zahyouX の初期値を設定 ※可変 zahyouX = 0; // 変数 speed (動くスピード)の設定 ※可変 speed = 2/10; // // 1フレーム進む時間ごとに毎回実行 _root.main.onEnterFrame = function() { // この(_root.main.の) x座標を zahyouX に近づける this._x += (zahyouX-this._x)*speed; }; ------------------------------------ それで, 上で用意した変数 zahyouX の値をボタンによって変えてやると, スライドするように動きます。 また,zahyouX の値に上限と下限を付ければ良いわけです。 「←」(左へ動かすボタン)のスクリプト ---------------------------------------- on (release) { // とりあえず zahyouX の値を 250 減算してみる _root.zahyouX -= 250; // もし zahyouX がステージ幅-画像の幅-の値より小さければ if (_root.zahyouX<Stage.width-_root.main._width) { // zahyouX の値を ステージ幅-画像の幅 にする _root.zahyouX = Stage.width-_root.main._width; } } ---------------------------------------- 「→」(右へ動かすボタン)のスクリプト ---------------------------------------- on (release) { // とりあえず zahyouX の値を 250 加算してみる _root.zahyouX += 250; // もし zahyouX が 0 より大きければ if (_root.zahyouX>0) { // zahyouX の値を 0 にする _root.zahyouX = 0; } } ---------------------------------------- Flash のバージョンを書かれていらっしゃいませんが, 上のようなスクリプトが使えるのは Flash MX 以降のバージョンです。 Flash 5 でも同様のことはできますが, スクリプトを書く場所などが変わります。

その他の回答 (1)

回答No.1

Aという画像(ムービークリップ)を Bというボタンで左右にスライドさせる場合 var houkou = 1; ←(ボタン外で設定) 以下のスクリプトをBボタンに設定 on (release){ if(houkou == 1) { _root.A._x += 250; } else { _root.A._x -= 250; } if(_root.A._x >= 750 || _root.A._x <= -750) { houkou *= -1; } -------------------------------------------------------- houkou という変数を宣言して1を入れる (注) ボタン内で宣言すると、押すたびに向きがプラスになるので、 ボタン外のスクリプトで設定する。 houkouが1であれば、_root.A._xを+250、 houkouが1以外であれば、、_root.A._xを-250。 _root.A._xが750以上または750-以下になったら、 houkouに-1をかける。 --------------------------------------------------------- ちなみにボタンを押したときにボタン自身が動くようにする場合は、 _root.A._x を_xに変えて、ボタン自身に設定すれば大丈夫です。 自分も最近アクションスクリプトを始めたばかりなので、 自身の勉強も兼ねて丁寧に回答しました^^ 下記のサイトで主に勉強しました。 http://www.geocities.jp/para_core/kouza/index.html http://hakuhin.hp.infoseek.co.jp/main/as.html

関連するQ&A

専門家に質問してみよう