From: Richard K. <ric...@us...> - 2005-07-09 15:53:01
|
Update of /cvsroot/actionstep/actionstep/src/org/actionstep In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32204 Modified Files: ASAnimatedTabView.as Log Message: added easing function support Index: ASAnimatedTabView.as =================================================================== RCS file: /cvsroot/actionstep/actionstep/src/org/actionstep/ASAnimatedTabView.as,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** ASAnimatedTabView.as 9 Jul 2005 04:33:34 -0000 1.6 --- ASAnimatedTabView.as 9 Jul 2005 15:52:49 -0000 1.7 *************** *** 32,36 **** --- 32,38 ---- import org.actionstep.NSView; import org.actionstep.NSRect; + import org.actionstep.NSPoint; import org.actionstep.NSTimer; + import org.actionstep.ASDraw; import org.actionstep.NSTabViewItem; import org.actionstep.constants.NSTabState; *************** *** 44,49 **** --- 46,63 ---- * */ + class org.actionstep.ASAnimatedTabView extends NSTabView { + private var m_tabOutEasingFunction:Function; + private var m_tabInEasingFunction:Function; + private var m_tabOutDuration:Number; + private var m_tabInDuration:Number; + + public function ASAnimatedTabView() { + m_tabOutEasingFunction = ASDraw.easeOutQuad; + m_tabInEasingFunction = ASDraw.easeInQuad; + m_tabInDuration = m_tabOutDuration = 500; + } + public function selectTabViewItem(item:NSTabViewItem) { if (m_delegate != null) { *************** *** 57,76 **** } ! private function removalSpeed():Number { ! return 50; } ! ! private function removalAcceleration():Number { ! return 10; } ! private function addSpeed():Number { ! return 140; } ! private function addAcceleration():Number { ! return -10; } private function _removeOldItem(item:NSTabViewItem) { if (m_selected != null) { --- 71,106 ---- } ! public function tabOutDuration():Number { ! return m_tabOutDuration; } ! ! public function tabInDuration():Number { ! return m_tabInDuration; } ! public function setTabOutDuration(dur:Number) { ! m_tabOutDuration = dur; } ! public function setTabInDuration(dur:Number) { ! m_tabInDuration = dur; ! } ! ! public function tabOutEasingFunction():Function { ! return m_tabOutEasingFunction; ! } ! ! public function setTabOutEasingFunction(func:Function) { ! m_tabOutEasingFunction = func; } + public function tabInEasingFunction():Function { + return m_tabInEasingFunction; + } + + public function setInOutEasingFunction(func:Function) { + m_tabInEasingFunction = func; + } + private function _removeOldItem(item:NSTabViewItem) { if (m_selected != null) { *************** *** 80,86 **** .005, this, "_animateOldItem", { item:item, ! point:m_selected.view().frame().origin.clone(), width:m_selected.view().frame().size.width, ! speed:this.removalSpeed() }, true); --- 110,117 ---- .005, this, "_animateOldItem", { item:item, ! startX:m_selected.view().frame().origin.x, ! y:m_selected.view().frame().origin.y, width:m_selected.view().frame().size.width, ! startTime:getTimer() }, true); *************** *** 91,106 **** private function _animateOldItem(timer:NSTimer) { ! var context = timer.userInfo(); ! context.point.x -= context.speed; ! context.speed+=this.removalAcceleration(); ! if ((-context.point.x) > context.width) { ! context.point.x = -context.width; m_selected.view().removeFromSuperview(); timer.invalidate(); _addNewItem(timer.userInfo().item); - } else { - m_selected.view().setFrameOrigin(context.point); - updateAfterEvent(); } } --- 122,136 ---- private function _animateOldItem(timer:NSTimer) { ! var info = timer.userInfo(); ! var currentTime = getTimer()-info.startTime; ! if (currentTime > m_tabOutDuration) currentTime = m_tabOutDuration; ! var currentX = m_tabOutEasingFunction.call(null, currentTime, info.startX, info.startX-info.width, m_tabOutDuration); ! if (currentTime == m_tabOutDuration) { ! currentX = info.startX-info.width; m_selected.view().removeFromSuperview(); timer.invalidate(); _addNewItem(timer.userInfo().item); } + m_selected.view().setFrameOrigin(new NSPoint(currentX, info.y)); } *************** *** 121,131 **** selectedView.setFrame(rect); setNeedsDisplay(true); - //window().displayIfNeeded(); NSTimer.scheduledTimerWithTimeIntervalTargetSelectorUserInfoRepeats( .005, this, "_animateNewItem", { ! point:rect.origin, ! width: rect.size.width, ! targetX:(rect.origin.x+rect.size.width), ! speed:this.addSpeed() }, true); --- 151,160 ---- selectedView.setFrame(rect); setNeedsDisplay(true); NSTimer.scheduledTimerWithTimeIntervalTargetSelectorUserInfoRepeats( .005, this, "_animateNewItem", { ! startX:rect.origin.x, ! y:rect.origin.y, ! width:rect.size.width, ! startTime:getTimer() }, true); *************** *** 141,156 **** private function _animateNewItem(timer:NSTimer) { ! var context = timer.userInfo(); ! context.point.x += context.speed; ! context.speed+=this.addAcceleration(); ! if (context.point.x > context.targetX) { ! context.point.x = context.targetX; ! m_selected.view().setFrameOrigin(context.point); timer.invalidate(); _finish(); - } else { - m_selected.view().setFrameOrigin(context.point); - updateAfterEvent(); } } --- 170,183 ---- private function _animateNewItem(timer:NSTimer) { ! var info = timer.userInfo(); ! var currentTime = getTimer()-info.startTime; ! if (currentTime > m_tabInDuration) currentTime = m_tabInDuration; ! var currentX = m_tabInEasingFunction.call(null, currentTime, info.startX, info.width, m_tabInDuration); ! if (currentTime == m_tabInDuration) { ! currentX = 0; timer.invalidate(); _finish(); } + m_selected.view().setFrameOrigin(new NSPoint(currentX, info.y)); } |