マウス位置によって画像を切り替える
ステージ上のマウス位置を読み取り、その座標によって画像を切り替えるFlashを作成中なのですが、上手くいきません。
流れとしては
画像のファイルを読み込む
↓
画像のファイル分だけムービークリップを作成
↓
マウスの座標に応じて画像(ムービークリップを切り替える)
というものです。
下記のようにかいています。
●1フレーム目
//各画像の変数読み込み
jpg1 = "test1.jpg";
jpg2 = "test2.jpg";
jpg3 = "test3.jpg";
jpg4 = "test4.jpg";
//初期配置
//空のMCを作成し、その中に画像変数を読み込ませる。
_root.createEmptyMovieClip("image_mc0",4);
_root.createEmptyMovieClip("image_mc1",3);
_root.createEmptyMovieClip("image_mc2",2);
_root.createEmptyMovieClip("image_mc3",1);
_root.image_mc0.loadMovie(_root.jpg1);
_root.image_mc1.loadMovie(_root.jpg2);
_root.image_mc2.loadMovie(_root.jpg3);
_root.image_mc3.loadMovie(_root.jpg4);
//マウスが押されたときに変数MCclickをオンにする
_root.mouse_mc.onPress = function() {
MCclick = true;
trace( "押された時の変数 " +_root.MCclick);
}
//マウスが離れた時に変数MCclickをオフにする
_root.mouse_mc.onRelease = function() {
MCclick = false;
trace( "離れた時の変数 " +_root.MCclick);
nowpoint = (_root._xmouse);
trace( "今の位置" + nowpoint);
}
//マウスがボタン領域外にいった時に変数MCclickをオフにする
_root.mouse_mc.dragOut = function() {
MCclick = false;
trace( "どっかいった時の変数 " +_root.MCclick);
}
stop();
●ステージ上にかぶせている透明なMC(mouse_mc)
//MCclickがオンの時変数mc_xの値をとり続ける
onClipEvent (mouseMove) {
if (_root.MCclick) {
_root.mc_x = (_root._xmouse);
trace( "押された時の変数mc_xの位置 " + _root.mc_x);
trace( "マウスを押したままの変数 " + _root.MCclick);
//100以下の時に画像1を表示
if((_root.mc_x >= 0) || (_root.mc_x <= 100)){
_root.image_mc0._visible = true;
_root.image_mc1._visible = false;
_root.image_mc2._visible = false;
} else if((_root.mc_x >= 100) || (_root.mc_x <= 200)){
_root.image_mc0._visible = false;
_root.image_mc1._visible = true;
_root.image_mc2._visible = false;
} else if((_root.mc_x >= 200) || (_root.mc_x <= 300)){
_root.image_mc0._visible = false;
_root.image_mc1._visible = false;
_root.image_mc2._visible = true;
}
}
}
この書き方で一応動作はするのですが、1枚目と2枚目の画像の切り返しか動作が行われなくて困っています。
画像のサイズ、ステージのサイズは両方とも 400*400です。
お礼
早速のご回答ありがとうございます。 BlurFiltanさんの回答は丁寧で分かりやすくいつも見て参考にさせて頂いております。 環境と補足をさせて頂きます。 OSはXPのSP2 Flash 8です。 700x600のステージにimage_boxとtxt_boxというMCがあり、それぞれ外部から変数をもらって表示するようになっています。 トータル120フレームの80フレーム目に読み込ませるように actionレイヤーの80フレームに if (this.image_box == Number(this.image_box)) { loadMovieNum("../image/gazou/"+_root.hensuu+".gif", this.image_box); } else { this.image_box.loadMovie("../image/gazou/"+_root.hensuu+".gif"); } と書いて、 MCに onClipEvent (load) で座標を指示出来ればと考えたわけです。 参考にしたスクリプトはステージの真ん中に配置するもので下記のようになります。 // このムービークリップが読み込まれたとき onClipEvent (load) { // 高さの指定(※可変) var my_h = 200; // 位置の指定(※可変) var my_x = Stage.width/2; var my_y = Stage.height/2; // // サイズの変更 this._width = my_h*this._width/this._height; this._height = my_h; // 座標の移動 // この MC を「指定位置 - MCの幅の半分」に移動 this._x = my_x-(this._width/2); // この MC を「指定位置 - MCの高さの半分」に移動 this._y = my_y-(this._height/2); } これをいじっていて行き詰まってしまいました。 この場合は、image_boxにko_mcを入れ子にするという解釈でよいのですね。 "ムービークリップを親子の入れ子にする" "基準点を「中央」"を守ってチャレンジしたいと思います。 絵のほうから入ったのでスクリプトは全くの初心者です。 また質問することがあるかと思いますが宜しくお願い致します。 ひとつ質問なのですが、"空(カラ)のムービークリップ"というのはどういう状態?のものなのでしょうか。