トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     (続)MAPの拡大縮小・移動
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
harman
Åê¹ÆNo.7455
投稿日時: 2004-5-21 11:00
半人前
居住地:
投稿: 32
使用環境:
win7,Flash CS5
(続)MAPの拡大縮小・移動
 今Flashで地図のような設定を作っています。ボタンでマップの移動や拡大などです。scaleで拡大・縮小をやっていたんですが、MCの原点が中心となって拡大しますよね。
 だいたい原点は(0,0)に合わせるようにしてるんですが、常にウィンドウ表示枠の中心で拡大縮小がしたいんです。
 でないと縮小などでどんどんマップがずれるような感じになるからです。それはちょっと苦しいので・・・

原点を動かすように設定しないといけないんでしょうか?
でもそうすると移動が苦しくなります
前回、森さんに教えて頂いたMCを入れ子にして拡大・縮小と移動を分けるやり方を行ったんですが、自分の力不足でどちらか一方がうまくいっても、もう片方が不完全になります。

どなたか自分にもう一度知恵を与えてくださいm(__)m
野中文雄
Åê¹ÆNo.7458
投稿日時: 2004-5-21 11:47
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: (続)MAPの拡大縮小・移動
前回のご質問を、そのままコピー&ペーストしていませんか?そうすると、前回のご質問と同じような回答が返りますよ。それとも、回答者に前回のスレッドを予め確認してほしいということですか?
引用:
harmanさんは書きました:
 今Flashで地図のような設定を作っています。[後略]

可能性としては、ふたつです。

第1は、森さんの回答が、harmanさんの作成されているムービーの仕様や目的と合っていなかったという場合です。それは、前回のご質問のご説明が不十分で、森さんに意図を正しく伝えられなかったことを意味します。

第2は、森さんの回答された内容を、正しく実行できていないということです。しかし、どのように実行されたかの具体的な情報はありませんので、特殊な能力がないかぎり、誤りを指摘することは困難です。
引用:
前回、森さんに教えて頂いたMCを入れ子にして拡大・縮小と移動を分けるやり方を行ったんですが、自分の力不足でどちらか一方がうまくいっても、もう片方が不完全になります。

もう1度、実現したい動作とそのために行った操作・処理、および実際の結果を具体的かつ客観的にご説明ください。ただし、問題の切分けは必要です。
引用:
どなたか自分にもう一度知恵を与えてくださいm(__)m


----------------
 

harman
Åê¹ÆNo.7460
投稿日時: 2004-5-21 12:51
半人前
居住地:
投稿: 32
使用環境:
win7,Flash CS5
Re: (続)MAPの拡大縮小・移動
野中さん、すみません。そのままコピペしてます。詳しく書きますと、移動の際、最後までMAPが移動したら止まる設定にしています。

onClipEvent (enterFrame) {
if (mapMove) {
 if(_root.map.map1._y -(_root.map._yscale/100)*200< 0){
_root.map.map1._y += 10;
  }
 }
}

MCの原点(x,y)が(300,200)と言う設定です。
MC名mapが拡大用、map1が移動用です。ifの制限(y頂点の抽出をしています)で綺麗に止まるようにしてるんですが、
拡大縮小を行うとずれが生じるといった感じです。MCを1つにまとめていたときは大丈夫だったんですが、中心で拡大がなってないので分けました。
if内の制限を変更すればできそうなんですが、いくらいじってもずれが生じます(綺麗にとまらず、移動するんです)。
野中文雄
Åê¹ÆNo.7469
投稿日時: 2004-5-21 14:10
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: (続)MAPの拡大縮小・移動
以下のスクリプトで行われている処理の意味がわかりかねます。拡大・縮小はできたけれども、移動が意図どおりにできなくなったということですか?
引用:
harmanさんは書きました:
onClipEvent (enterFrame) {
if (mapMove) {
 if(_root.map.map1._y -(_root.map._yscale/100)*200< 0){
	_root.map.map1._y += 10;
  }
 }
}

MovieClipは_root.mapと_root.map.map1のふたつありますから、どちらの「原点」のお話をされているのかわかりません。いずれにしても、_root.mapの基準点は「ウィンドウ枠」の中心に固定して動かさないというのが、森さんのアイデアです。
引用:
MCの原点(x,y)が(300,200)と言う設定です。

_root.mapを拡大・縮小するかぎりにおいて、基準点はずれないはずです。今度は移動の処理で問題が生じているということであれば、移動先座標をどう設定して、その移動処理をどのように行い、結果どのようにずれるのかをご説明ください。

上記のスクリプトが「移動処理」だとしても、「移動先座標」がどこなのか、「結果」としてどのようにずれるのかをご説明いただかなければ、内容がわかりません(スクリプトは特別なバグの影響がなければ、いわれたとおりの処理をしているはずです。それが意図と異なるのならそのご説明が必要です)。
引用:
拡大縮小を行うとずれが生じるといった感じです。MCを1つにまとめていたときは大丈夫だったんですが、中心で拡大がなってないので分けました。


----------------
 

森 巧尚
Åê¹ÆNo.7471
投稿日時: 2004-5-21 16:42
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: (続)MAPの拡大縮小・移動
意味がわからなかったので、harmanさんの過去の発言履歴を見たのですが、どうやら「範囲内での移動」と「マップの中心からの拡大」を同時にプログラムしようとしているようですね。

「範囲内での移動」は以前できておられるようですから、今度は「マップの中心からの拡大だけ」を別にまず作ってみてはいかがでしょうか。
2つ作って最後に合体させるので三度手間にはなりますが、それぞれの機能が別々ではちゃんと動くことが確認できるので、合体させたままいろいろいじるより原因が明確になるので確実です。

#野中さんの言われる(^_^)「問題の切分け」を、頭の中だけじゃなくて、
#実際に手で作ってみるということですね。
#頭の中だけで問題を解決できない人(私もですが)は、
#「めんどくさがらずにたくさん作る」ことが近道ですよ。


----------------
森 巧尚
http://www.ymori.com

harman
Åê¹ÆNo.7473
投稿日時: 2004-5-21 18:20
半人前
居住地:
投稿: 32
使用環境:
win7,Flash CS5
Re: (続)MAPの拡大縮小・移動
返事が遅くりました。野中さん、森さんありがとうございます。
親切に相談にのっていただいてm(__)m
うっすらと完成の変貌が見えてきました。

まだ初心者なんで、もっといろいろ作っていきます(^_^;)
野中文雄
Åê¹ÆNo.7475
投稿日時: 2004-5-21 20:41
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: (続)MAPの拡大縮小・移動
では、ご参考までに、前回私がご提案した方法のサンプルスクリプトです。
引用:
harmanさんは書きました:
まだ初心者なんで、もっといろいろ作っていきます(^_^;)

ドラッグで移動、[command]/[Ctrl]+クリックでその点を中心に10%拡大、[shift]+クリックで同10%縮小します。移動/拡大/縮小をしたいMovieClipシンボルの第1フレームアクションとして設定します。
// MovieClip: 移動/拡大/縮小したいシンボル
// 第1フレームアクション
var nZoomRate = 10;
this.onPress = function() {
    var nX = _xmouse;
    var nY = _ymouse;
    if (Key.isDown(Key.CONTROL)) {
        this.xZoomIn(nX, nY);
    } else if (Key.isDown(Key.SHIFT)) {
        this.xZoomOut(nX, nY);
    } else {
        this.startDrag();
    }
};
this.onRelease = this.onReleaseOutside=function () {
    this.stopDrag();
};
function xZoomIn(nX, nY) {
    this.xZoom(nZoomRate, nX, nY);
}
function xZoomOut(nX, nY) {
    this.xZoom(-nZoomRate, nX, nY);
}
function xZoom(nZoom, nX, nY) {
    var oStart = {x:nX, y:nY};
    this.localToGlobal(oStart);
    _xscale = _yscale += nZoom;
    var oEnd = {x:nX, y:nY};
    this.localToGlobal(oEnd);
    _x += oStart.x-oEnd.x;
    _y += oStart.y-oEnd.y;
}


----------------
 

hide3
Åê¹ÆNo.8173
投稿日時: 2004-6-9 23:04
新米
居住地:
投稿: 1
使用環境:
Re: (続)MAPの拡大縮小・移動
初めての投稿です。お力になれるかわかりませんが、ご参考まで。
MCを入れ子にせずに、画面の中心をzoomされたい様ですが、私は以下のようにしました。

地図の画面上の大きさが200x200ピクセルとします。
画面中央は、画面左上からXが100、Yも100の位置ですね。
地図MCの移動で、_xや_yが動きまくってると思います。
そのままの位置で地図MCを拡大すると、MCの原点が中心となって拡大されてしまうので、画面中心を中心に拡大されないということですね。
ですから、拡大時に、地図MCの_xと_yを移動させたらいいと思います。
拡大ボタンに下記のように記述しました。
/////////////////////////////////////////////
nowXscale=this.map._xscale;//現在の地図MCの拡大率を保管
this.map.zoom=200;//200%に拡大したい
this.map._x=-((100-this.map._x)*this.map.zoom/nowXscale-100);
this.map._y=-((100-this.map._y)*this.map.zoom/nowXscale-100);
//////////////////////////////////////////////
で、地図MC上で
this._xscale =this.zoom;
this._yscale =this.zoom;としてやったらOKでした。
フラッシュ自体あまり触ったことないんでヘンな書き方かもしれません・・・。
あくまでご参考まで。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops