From 79670053c7247d3a49b607960efd284e93f057e5 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Fri, 2 Aug 2013 17:14:26 -0500 Subject: install.pl --- bPod/com/oop/ScrollingMenuFrame.as | 148 +++++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 bPod/com/oop/ScrollingMenuFrame.as (limited to 'bPod/com/oop/ScrollingMenuFrame.as') diff --git a/bPod/com/oop/ScrollingMenuFrame.as b/bPod/com/oop/ScrollingMenuFrame.as new file mode 100644 index 0000000..5c91751 --- /dev/null +++ b/bPod/com/oop/ScrollingMenuFrame.as @@ -0,0 +1,148 @@ + +class com.oop.ScrollingMenuFrame extends MovieClip +{ + private var hotSpot_mc:MovieClip; // used to detect mouse events + private var holder_mc:MovieClip; // holder for the flat-list SelectionSystem + private var hotSpotMask:MovieClip; // bluh .. also used i guess + + private var initY:Number; + private var initX:Number; + + private var initHolderX:Number; + private var initHolderY:Number; + + var intRate:Number = 10; // scroller speed + + + public function ScrollingMenuFrame() { + doInit(); + } + + +/* public function doLoad(_dataArray:Array):Void { + holder_mc.attachMovie("KeywordSelectionSystem", "keywordTiles", 1000); + holder_mc["keywordTiles"].doInit(_dataArray, "KeywordButton"); + } +*/ + public function enableMenu():Void { + initMenuScroll(); + initMouseWatch(); + setHotSpot(true); + } + + + public function disableMenu():Void { + killMouseWatch(); + killMenuScroll(); + setHotSpot(false); + } + + + private function doInit():Void { + + initY = _x; + initX = _y; + + initHolderX = holder_mc._x; + initHolderY = holder_mc._y; + + initMenuScroll(); + + holder_mc.onMouseDown = function() { + if (this.hitTest(_root._xmouse, _root._ymouse, true)) { +// _parent.disableMenu(); + } + } + } + + + private function setHotSpot(_isMenuEnabled:Boolean):Void { + if (_isMenuEnabled) { + hotSpot_mc.onRollOver = undefined; + } else { + hotSpot_mc.onRollOver = function() { + this._parent.enableMenu(); + } + } + } + + + + private function initMouseWatch():Void { + this.onMouseMove = function() { + if (!this.hitTest(_root._xmouse, _root._ymouse, true)) { + disableMenu(); + } + } + } + + + private function killMouseWatch():Void { + this.onMouseMove = undefined; + } + + + private function initMenuScroll():Void { + this.onEnterFrame = function() { + if ((holder_mc._height >= hotSpotMask._height) || (holder_mc._width >= hotSpotMask._width)) { + doMenuScroll(); + } + } + } + + + private function killMenuScroll():Void { + this.onEnterFrame = undefined; + } + + + private function doMenuScroll():Void { + var intTop:Number = initHolderY; + var intLeft:Number = initHolderX; + var intBottom:Number = intTop + hotSpotMask._height; + var intRight:Number = intLeft + hotSpotMask._width; + + + var intZero:Number = (intBottom + intTop) / 2; + var intZeroW:Number = (intRight + intLeft) / 2; + + var intMousePos:Number = _ymouse - intZero; + var intMousePosW:Number = _xmouse - intZeroW; + + var intMaxUp:Number = intTop - intZero; + var intMaxLeft:Number = intLeft - intZeroW; + var intMaxDown:Number = intBottom - intZero; + var intMaxRight:Number = intRight - intZeroW; + + var _isHit:Boolean = this.hitTest(_root._xmouse, _root._ymouse, true); + + if (_isHit) { + + if (holder_mc._height > hotSpotMask._height ) { + + // top & bottom bounds check + + if (intMousePos > 0) { // below intZero? scroll up + holder_mc._y = Math.max(holder_mc._y - intRate * Math.pow((intMousePos/intMaxDown),2), intBottom - holder_mc._height) ; + } + else if (intMousePos < 0) { // above intZero? scroll down + holder_mc._y = Math.min(holder_mc._y + intRate * Math.pow((intMousePos/intMaxUp),2), intTop ); + } + + + // left & right bounds check + +/* if (intMousePosW > 0) { // right of intZero? scroll left + holder_mc._x = Math.max(holder_mc._x - intRate * Math.pow((intMousePosW/intMaxRight),2), intRight - holder_mc._width); + } + else if (intMousePosW < 0) { // left of intZero? scroll right + holder_mc._x = Math.min(holder_mc._x + intRate * Math.pow((intMousePosW/intMaxLeft),2), intLeft); + } +*/ + + } + + } + + } +} -- cgit v1.2.3-70-g09d2