問答収集 カテゴリ:Flashプログラミング
現在のスレッド一覧 / 新規に質問を投稿
レス数:10 / 状態:解決済み / No:70 / ATOM
1 名前:スコル 日付:2010/10/12(火)22:07:50 ID:0RnBQtRePVag
はじめまして。よろしくお願いします。

下記ページの『マウスでスクロールするマップ』を参考に
flashを作っています。
http://hakuhin.jp/as/scroll.html
このマップの中で、マウスを止めた時に、マップも静止させるには、
どのように記述すればいいのでしょうか?
このマップですと、マウスを止めたり、マップ上からマウスを外しても
マップがずっとゆっくり動いています。

クリックした場所でマップの動きを止めるか
マウスを止めた位置でマップの動きも止まるようにしたいです。

自分では上手くいかなかったため質問させていただきました。
ご回答よろしくお願いいたします。
2 日付:2010/10/12(火)23:18:24 ID:vWZfJ/Iu.7sO
「マウスを止めた位置」とは具体的にどういう操作でしょうか?


移動量を背景の座標に加算しているのが以下の部分になります。
-----------------------------------
// 座標に加算
_x += posx;
_y += posy;
-----------------------------------

クリックしたときに移動を止めたいのであればクリックを検出してから
この部分の処理が通らないようにします。

マウスをクリックしたか調べたい場合、mouseDown イベントハンドラを使用します。
-----------------------------------
onClipEvent (mouseDown) {
trace("クリック");
}
-----------------------------------
3 名前:スコル 日付:2010/10/13(水)21:45:12 ID:0RnBQtRePVag
ご回答ありがとうございます!!

分かりにくい説明ですみませんでした;
「マウスを止めた位置」の感じですが...
理想は下記のサイトのように、
マウスの動きを止めると、画面(マップ)も静止する感じです。
http://amanaimages.com/findout-corbis/

クリックすると止まるように・・・とも思ったのですが、
マップ内にボタンを置きたいので
上記のような方法を教えていただければ大変嬉しいです。

よろしくお願いいたします。
4 日付:2010/10/13(水)23:18:08 ID:vWZfJ/Iu.7sO
マウスカーソルのステージ上の絶対位置が背景の絶対位置となっていますね。
------------------------------------------------------------
onClipEvent (load) {
var map_width = _width;// マップの横幅
var map_height = _height;// マップの縦幅

var stage_width = 400;// Flash の縦幅
var stage_height = 300;// Flash の横幅

var px = -(map_width - stage_width) / 2;
var py = -(map_height-stage_height) / 2;
}
onClipEvent (enterFrame) {
// マウスカーソル位置を 0.0 ~ 1.0 な値に変換
var fx = _root._xmouse / stage_width;
var fy = _root._ymouse / stage_height;

// スクロールしたい位置
_x = fx * -(map_width - stage_width);
_y = fy * -(map_height- stage_height);
}

5 日付:2010/10/13(水)23:18:19 ID:vWZfJ/Iu.7sO
滑らかに移動するパターンです。
------------------------------------------------------------
onClipEvent (load) {

var map_width = _width;// マップの横幅
var map_height = _height;// マップの縦幅

var stage_width = 400;// Flash の縦幅
var stage_height = 300;// Flash の横幅

var px = -(map_width - stage_width) / 2;
var py = -(map_height-stage_height) / 2;
}
onClipEvent (enterFrame) {

// マウスカーソル位置を 0.0 ~ 1.0 な値に変換
var fx = _root._xmouse / stage_width;
var fy = _root._ymouse / stage_height;

// スクロールしたい位置
var tx = fx * -(map_width - stage_width);
var ty = fy * -(map_height- stage_height);

// 座標をスクロールしたい位置に少し近づける
px += (tx - px) * 0.1;
py += (ty - py) * 0.1;

// 座標に反映
_x = px;
_y = py;

}
6 名前:k 日付:2010/10/13(水)23:25:40 ID:9kJEWPZA4knz
はじめまして。

恐らくですが、
http://hakuhin.jp/as/scroll.htmlのサイトでは、
マウスの位置によってマップの"移動量"を決めていますが、
http://amanaimages.com/findout-corbis/のサイトでは、
マウスの位置によってマップの"座標"を決めています。

「マウスを止めた時に、マップも静止させる」のは、
後者のやり方のほうが向いているかと思います。

後者のやり方でする際の、簡単なサンプルを提示しておきます。

onClipEvent(load) {

MapWidth = 800;// マップの横幅
MapHeight = 400;// マップの縦幅

MapSpeed = 0.2;// マップの移動速度(0<MapSpeed<=1)

FlashWidth = 400;// Flashの縦幅
FlashHeight = 300;// Flashの横幅

}
onClipEvent(enterFrame) {

// 原点にもっていく座標
var posx = (MapWidth - FlashWidth) / FlashWidth * _root._xmouse;
var posy = (MapHeight - FlashHeight) / FlashHeight * _root._ymouse;

// 移動
_x = _x * (1 - MapSpeed) - posx * MapSpeed;
_y = _y * (1 - MapSpeed) - posy * MapSpeed;

}
7 名前:k 日付:2010/10/13(水)23:27:46 ID:9kJEWPZA4knz
すみません…
ゆっくり書いていたので、vWZfJ/Iu.7sOさんと被ってしまいましたorz
>>6は無視して頂いて結構です。
8 名前:スコル 日付:2010/10/14(木)23:13:04 ID:0RnBQtRePVag
思い通りなのができました(T_T)☆

vWZfJ/Iu.7sOさん
9kJEWPZA4knzさん

ご丁寧なご回答頂きありがとうございました!
お二方に本当に感謝です!
聞いてよかった^^、
9 名前:スコル 日付:2010/10/14(木)23:14:49 ID:0RnBQtRePVag
あっ
kさんでした;
すみません。。。。
改めて、
ありがとうございました!
10 名前:状態変更 日付:2010/10/15(金)12:05:27 ID:JXDZqa39tdMV
この質問の状態を『解決』に変更しました。
このスレッドについて
質問の状態 :
解決済み
投稿開始日 :
2010/10/12(火)22:07:50
投稿終了日 :
2010/10/15(金)12:05:27
投稿者 :
スコル
レス総数 :
10
スレッド番号 :
70
MondoCollectionSystem ver.0x00020000 by Hakuhin