'탄성'에 해당되는 글 1건

  1. 2009.09.02 부드러운 움직임 공식 / 탄성 공식
Flex/AIR/AS3/Tweener2009.09.02 18:00
1. 부드러운 움직임

이동될 위치 = 현재 위치 + (목표 위치 - 현재 위치) * 속도

2. 탄성 효과

이동 거리 = (목표 위치 - 현재 위치) * 속도 + (이동거리 * 탄성계수)
이동될 위치 = 현재위치 + 이동 거리


※ 속도는 0부터 1사이의 소숫점으로 표현 ( 0 < 속도 < 1)

예제)
package {
	import flash.display.MovieClip;
	import flash.events.*;

	public class MenuAction extends MovieClip {
		private var _mouseXpos:Number;
		private var _oriXpos:Number;
		private var _oriWidth:Number;
		private var _oriHeight:Number;
		private var _targetXpos:Number;
		private var _targetWidth:Number;
		private var _targetHeight:Number;
		
		private var _speed:Number = .9;
		private var _damp:Number = .4;
		
		private var _disXpos:Number = 0;
		private var _disWidth:Number = 0;
		private var _disHeight:Number = 0;
		
		public function MenuAction():void {
			_oriXpos = _targetXpos = x;
			_oriWidth = _targetWidth = width;
			_oriHeight = _targetHeight = height;
			addEventListener(Event.ENTER_FRAME,onEnterFrame);
		}
		
		public function set mouseXpos(value:Number):void {
			_mouseXpos = value;
			
			if (value > x) {
				_targetXpos = _oriXpos-20;
			} else if (value < x) {
				_targetXpos = _oriXpos+20;
			} else {
				_targetWidth = _oriWidth * 1.6;
				_targetHeight = _oriHeight * 1.6;
			}
		}
		
		public function mouseOut():void {
			_targetXpos = _oriXpos;
			_targetWidth = _oriWidth;
			_targetHeight = _oriHeight;
		}
		
		private function onEnterFrame(e:Event):void {
			_disXpos = (_targetXpos-x) * _speed + (_disXpos*_damp);
			_disWidth = (_targetWidth-width) * _speed;
			_disHeight = (_targetHeight-height) * _speed;
			
			x = x + _disXpos;
			width = width + _disWidth;
			height = height + _disHeight;
		}
	}
}
저작자 표시 비영리 변경 금지
신고

'Flex/AIR/AS3 > Tweener' 카테고리의 다른 글

BetweenAS3 Tweener  (0) 2009.11.05
TweenMax 사용하기  (0) 2009.09.04
부드러운 움직임 공식 / 탄성 공식  (0) 2009.09.02
Posted by 코멧'★

티스토리 툴바