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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     マウスカーソル位置で拡大・縮小
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ゲスト
Åê¹ÆNo.35915
投稿日時: 2007-11-1 17:56
マウスカーソル位置で拡大・縮小
ビットマップ画像をマウスのカーソル位置を中心に
ホイールで拡大・縮小したいのですが、
スケールを変更した後にマウスを動かすと、
相対的に画像が動いてしまいます。

今は「photoMC」の中に「BMP」というMCを入れ子にし、
強制的に基準点がマウスのカーソル位置にくるよう作っています。

stage.addEventListener(Event.ENTER_FRAME,enterFrame);
stage.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheel);

function enterFrame(event:Event):void {
photoMC.x = mouseX;
photoMC.y = mouseY;
photoMC.BMP.x = -mouseX;
photoMC.BMP.y = -mouseY;
}

function mouseWheel(event:MouseEvent):void {
photoMC.scaleX = photoMC.scaleX + event.delta / 50;
photoMC.scaleY = photoMC.scaleY + event.delta / 50;
}

画像を常に見た目の上では固定された状態で
スケールを変更するにはどうすればいいのでしょうか?

以下が現状のファイルです。
http://tmdf.s276.xrea.com/test.swf
http://tmdf.s276.xrea.com/test.fla
永井勝則
Åê¹ÆNo.35935
投稿日時: 2007-11-2 20:28
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: マウスカーソル位置で拡大・縮小
下記の表記がいまいち不明確です。
引用:
スケールを変更した後にマウスを動かすと、
相対的に画像が動いてしまいます。

引用:
画像を常に見た目の上では固定された状態で


下記から察するに、マウスカーソルを動かすと常にその中心に画像(のムービークリップ)を持ってきたいということでしょうか?
引用:
今は「photoMC」の中に「BMP」というMCを入れ子にし、
強制的に基準点がマウスのカーソル位置にくるよう作っています。


そうだとすると、下記2行を実行しなければよいのではと思いますがいかがでしょう?
引用:

//photoMC.BMP.x = -mouseX;
//photoMC.BMP.y = -mouseY;



----------------
永井勝則:
himco.jp :

ゲスト
Åê¹ÆNo.35952
投稿日時: 2007-11-4 17:33
Re: マウスカーソル位置で拡大・縮小
返信ありがとうございます。

引用:

そうだとすると、下記2行を実行しなければよいのではと思いますがいかがでしょう?
引用:

//photoMC.BMP.x = -mouseX;
//photoMC.BMP.y = -mouseY;



ここを削除すると画像がマウスに追随してしまいます。
視覚的には画像は固定されていて、
マウスの位置を中心に拡大・縮小したいのです。
永井勝則
Åê¹ÆNo.35962
投稿日時: 2007-11-4 22:22
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: マウスカーソル位置で拡大・縮小
こちらが「意味がよく分からない」と申し上げた言い方で再び語られてもその意味は通じません。
別の言い方か具体的に表現してみてください。
引用:
ここを削除すると画像がマウスに追随してしまいます。
視覚的には画像は固定されていて、
マウスの位置を中心に拡大・縮小したいのです


・画像はずっと動かない
・画像をマウスでなぞると、マウスの位置を中心に伸縮する

とはどういうことなのでしょう?
たとえば、画像の右上にマウスを持ってくると画像はどういう風に見えるのでしょう?


----------------
永井勝則:
himco.jp :

ゲスト
Åê¹ÆNo.35979
投稿日時: 2007-11-5 21:04
Re: マウスカーソル位置で拡大・縮小
意味が分かりづらくて申し訳ありません。

画像の右上にマウスを持っていっても画像に変化はありません。

ステージに配置したMCは基準点を中心に拡大・縮小しますが、
マウスの位置を中心にホイールで拡大・縮小させたいです。
現状はMCを入れ子にして基準点がマウスに追随するようにしたMCと
動いた分だけ逆に移動するMCを作っています。
スケールが等倍の時は上記で問題なく動くのですが、
拡大すると入れ子にしたMCにズレが生じてしまうようなのです。

このズレを解消する方法を教えて欲しいです。
永井勝則
Åê¹ÆNo.36011
投稿日時: 2007-11-6 23:40
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: マウスカーソル位置で拡大・縮小
ズレについてもどのことをいわれているのかわたしには分かりません。
引用:
スケールが等倍の時は上記で問題なく動くのですが、
拡大すると入れ子にしたMCにズレが生じてしまうようなのです。


希望されている動作はいまだに理解できません。
とはいえ「分からない」というだけではしょうがないので、参考にはならないかもしれませんが、ムービーを1つ作ってみました。
ステージに置いたインスタンス名mcはマウスカーソルの位置にやがて移動し、マウスホイールの回転の向きによって拡大、伸縮します。
時間の刻みがenterFrameイベントなので、コード内に決めうちする数値によってはカクンと固定されます。


var delt:Number;

function doMove(e:MouseEvent):void {
	mc.addEventListener(Event.ENTER_FRAME,mcMove);
	delt=e.delta;
}

function mcMove(e:Event):void {
	var targetX:Number=mouseX;
	var targetY:Number=mouseY;

	var mcX:Number=mc.x;
	var mcY:Number=mc.y;

	var defX:Number=targetX-mcX;
	var defY:Number=targetY-mcY;

	var scale1:Array=[mc.scaleX,mc.scaleY];
	
	if ((Math.abs(defX)>0.2) || (Math.abs(defY)>0.2)) {
		
		if (delt>0) {
			var scale2:Array=[3,3];
		} else {
			scale2=[0.1,0.1];
		}
		var scaleDefX:Number=scale2[1]-mc.scaleX;
		var scaleDefY:Number=scale2[1]-mc.scaleY;

		mc.x+=defX/10;
		mc.y+=defY/10;

		mc.scaleX+=scaleDefX/10;
		mc.scaleY+=scaleDefY/10;
		//mc.alpha=mc.scaleX

	} else {
		mc.x=targetX;
		mc.y=targetY;

		mc.scaleX=scale1[0];
		mc.scaleY=scale1[1];
		
		stage.removeEventListener(MouseEvent.MOUSE_WHEEL,doMove);
		stage.removeEventListener(Event.ENTER_FRAME,mcMove);

		//mc.alpha=mc.scaleX
		//trace("delete");
	}
}

function onMouseMoveHandler(e:MouseEvent):void {
	stage.addEventListener(MouseEvent.MOUSE_WHEEL,doMove);
}

stage.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMoveHandler);



----------------
永井勝則:
himco.jp :

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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