최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

티스토리 뷰

일차함수의 원리는 전체길이에서 현재길이를 나눈 비율을 현재위치에 곱해서 대응점을 찾는 것이다.


대응점  = 전체너비 / 현재너비 * (위치-A) + C

 

∴ Y.x =  (D-C) / (B-A) * ( X.x - A) + C

 

∴ Y.x = D / B * X.x  (시작점을 0으로 맞추었을경우)

 

A-B에서의 움직임에 대한 C-D의 대응점

A-------B

1---2---4


C-------D

2---4---8


(D-C) / (B-A) * (x - A) + C

6 / 3 * (2 - 1) + 2

(2 * 1) + 2

 

 

 

이미지 출처 : http://blog.naver.com/qqprriy/60149376967

 

 

import flash.events.MouseEvent;
import flash.geom.Rectangle;
import flash.events.Event;

var A:int = 10;
var B:int = 210;

var C:int = -10;
var D:int = 390;

var X_legnth:Number = (B - A);

X.bar.buttonMode = true;
X.bar.addEventListener(MouseEvent.MOUSE_DOWN, down);

function down(e:MouseEvent):void{
 
	var bounds:Rectangle = new Rectangle(A,0,X_legnth,0);
	X.bar.startDrag(true, bounds);

	stage.addEventListener(MouseEvent.MOUSE_UP, up);
	X.bar.addEventListener(Event.ENTER_FRAME, loop);
}

function up(e:MouseEvent):void{
 
	X.bar.stopDrag();
	X.bar.removeEventListener(Event.ENTER_FRAME, loop);
}

function loop(e:Event):void{
 
	var pos:Number;
	//일차함수
	pos = (D-C) / (B-A) * (X.bar.x - A) + C; //공식대입
	//pos = (390 - (-10)) / (210 - 10 ) * (X.bar.x - 10) + (-10); //숫자대입

	//비례식
	//pos = (X.bar.x - A) * (D-C) / (B-A) + C; //공식대입
	//pos = (X.bar.x - 10) * (390 - (-10)) / (210 - 10) + (-10); //숫자대입
	Y.bar.x = pos;
}

 

빨간점을 드래그하여 움직이면 노란색 원이 같이 움직인다.

 

 

댓글