본문 바로가기

ActionScript/AS3.0

간단한 비율계산

플래시로 작업을 할 때 싫어도 비율에 대한 계산을 해야하는 경우가 있다.

하기싫어도 별수있나... 해야지 ㅠㅠ

할때마다 다시 머리를 굴려야되는 경우가 많아 이참에 포스팅해둬야겠다;;


보통의 경우 비율,비례값등에 해당하는 계산의 경우 두가지 경우로 나뉜다.




1. 몇퍼센트인가?


최소값과 최대값의 범위내에서 특정값이 어느정도의 위치인지를 알아야할때가 있다.
어떻게 구해야 할까? 간단하다.

① 총범위 = 최대값 - 최소값
② 특정값 = 범위내 값 - 최소값
③ 퍼센테이지 = 특정값 / 총범위



function getRatePer(min:Number,max:Number,value:Number):Number {
   var range:Number = max - min;
   var tg:Number = value - min;
   var per:Number = tg/range;
   return per;
 }


예)

getRatePer(0,100,45.5);         // 0.455
getRatePer(-100,100,50);       // 0.75
getRatePer(1000,2000,1200);  //0.2


백분율의 값을 원하면 반환된 값에 100을 곱한뒤 소수점을 날리거나
초기에 소수둘째자리이하를 날려버리고 100을 곱하면 되겠다.



2. 얼마인가?



또다른 경우는 반대의 경우다.
최소값과 최대값이 주어진 범위내에서 특정퍼센트에 위치하는 범위내값이 얼마인지를
알아내야 할일도 있을 것이다. 위의 공식을 이용해 조금만 바꾸면 된다.


① 총범위 = 최대값 - 최소값
② 특정값 = 총범위 * 퍼센테이지;
③ 범위내값 = 특정값 + 최소값



function getRateValue(min:Number,max:Number,per:Number):Number {
   var range:Number = max - min;
   var tg:Number = range * per;
   var value:Number = tg+min;
   return value;
 }


예)

getRateValue(0,100,0.455);       //45.5
getRateValue(-100,100,0.75);    //50
getRateValue(1000,2000,0.2);    //1200



3.활용

위 두가지 함수를 적절히 이용하여 앞서 만들었던 원형드래그를 바탕으로
volume 과 pan이 조절되도록 만들었다.

volume ->  0~2 사이
pan -> ->  -1 ~1 사이

[Flash] http://lpesign.tistory.com/attachment/jk060000000002.swf