重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

横長の画像(1000px)をボタン(←→)により左右に動かそうとしています。

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

A 回答 (2件)

とりあえず,


幅1000px の画像を ムービークリップ に変換するわけですが,
このときの基準点に気を付けておきます。
基準点とはムービークリップなどの基準座標になる点です。
例えば,
 ムービークリップのx座標を100にする。
  =ムービークリップの基準点のx座標を100にする。
という意味になります。

「インスタンスの基準点」
http://homepage3.nifty.com/ginga-b/MX/inst_refpo …

このご質問の場合,基準点はどこにあっても良いのですが,
基準点の位置によってスクリプト(スクリプトの数値)が変わります。
どこにあっても良いのですが気を付けておなないとならないということです。
一応この回答では
幅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 でも同様のことはできますが,
スクリプトを書く場所などが変わります。
    • good
    • 0

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
    • good
    • 0

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