home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Puzzle / filler.swf / scripts / mx / controls / scrollClasses / ScrollThumb.as < prev   
Encoding:
Text File  |  2008-09-02  |  3.6 KB  |  118 lines

  1. package mx.controls.scrollClasses
  2. {
  3.    import flash.events.MouseEvent;
  4.    import flash.geom.Point;
  5.    import mx.controls.Button;
  6.    import mx.core.mx_internal;
  7.    import mx.events.ScrollEventDetail;
  8.    
  9.    use namespace mx_internal;
  10.    
  11.    public class ScrollThumb extends Button
  12.    {
  13.       
  14.       mx_internal static const VERSION:String = "2.0.1.0";
  15.        
  16.       
  17.       private var lastY:Number;
  18.       
  19.       private var datamax:Number;
  20.       
  21.       private var datamin:Number;
  22.       
  23.       private var ymax:Number;
  24.       
  25.       private var ymin:Number;
  26.       
  27.       public function ScrollThumb()
  28.       {
  29.          super();
  30.          explicitMinHeight = 10;
  31.          stickyHighlighting = true;
  32.       }
  33.       
  34.       private function mouseMoveHandler(param1:MouseEvent) : void
  35.       {
  36.          var _loc2_:Point = null;
  37.          var _loc3_:Number = NaN;
  38.          var _loc4_:ScrollBar = null;
  39.          var _loc5_:Number = NaN;
  40.          var _loc6_:Number = NaN;
  41.          if(ymin == ymax)
  42.          {
  43.             return;
  44.          }
  45.          _loc2_ = new Point(param1.stageX,param1.stageY);
  46.          _loc2_ = globalToLocal(_loc2_);
  47.          _loc3_ = _loc2_.y - lastY;
  48.          _loc3_ += y;
  49.          if(_loc3_ < ymin)
  50.          {
  51.             _loc3_ = ymin;
  52.          }
  53.          else if(_loc3_ > ymax)
  54.          {
  55.             _loc3_ = ymax;
  56.          }
  57.          (_loc4_ = ScrollBar(parent)).mx_internal::isScrolling = true;
  58.          mx_internal::$y = _loc3_;
  59.          _loc5_ = _loc4_.scrollPosition;
  60.          _loc6_ = Math.round((datamax - datamin) * (y - ymin) / (ymax - ymin)) + datamin;
  61.          _loc4_.scrollPosition = _loc6_;
  62.          _loc4_.mx_internal::dispatchScrollEvent(_loc5_,ScrollEventDetail.THUMB_TRACK);
  63.       }
  64.       
  65.       override protected function measure() : void
  66.       {
  67.          super.measure();
  68.          measuredWidth = 14;
  69.          measuredHeight = 10;
  70.       }
  71.       
  72.       mx_internal function setRange(param1:Number, param2:Number, param3:Number, param4:Number) : void
  73.       {
  74.          this.ymin = param1;
  75.          this.ymax = param2;
  76.          this.datamin = param3;
  77.          this.datamax = param4;
  78.       }
  79.       
  80.       override protected function mouseDownHandler(param1:MouseEvent) : void
  81.       {
  82.          var _loc2_:ScrollBar = null;
  83.          super.mouseDownHandler(param1);
  84.          _loc2_ = ScrollBar(parent);
  85.          _loc2_.mx_internal::oldPosition = _loc2_.scrollPosition;
  86.          lastY = param1.localY;
  87.          systemManager.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler,true);
  88.          systemManager.stage.addEventListener(MouseEvent.MOUSE_MOVE,stage_mouseMoveHandler);
  89.       }
  90.       
  91.       override mx_internal function buttonReleased() : void
  92.       {
  93.          super.mx_internal::buttonReleased();
  94.          stopDragThumb();
  95.       }
  96.       
  97.       private function stopDragThumb() : void
  98.       {
  99.          var _loc1_:ScrollBar = null;
  100.          _loc1_ = ScrollBar(parent);
  101.          _loc1_.mx_internal::isScrolling = false;
  102.          _loc1_.mx_internal::dispatchScrollEvent(_loc1_.mx_internal::oldPosition,ScrollEventDetail.THUMB_POSITION);
  103.          _loc1_.mx_internal::oldPosition = NaN;
  104.          systemManager.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler,true);
  105.          systemManager.stage.removeEventListener(MouseEvent.MOUSE_MOVE,stage_mouseMoveHandler);
  106.       }
  107.       
  108.       private function stage_mouseMoveHandler(param1:MouseEvent) : void
  109.       {
  110.          if(param1.target != stage)
  111.          {
  112.             return;
  113.          }
  114.          mouseMoveHandler(param1);
  115.       }
  116.    }
  117. }
  118.