home *** CD-ROM | disk | FTP | other *** search
/ Computer Active 2010 August / CA08.iso / Multimedija / shufflr.air / ShufflrClient.swf / scripts / qs / controls / BitmapTile.as next >
Encoding:
Text File  |  2010-06-23  |  6.8 KB  |  205 lines

  1. package qs.controls
  2. {
  3.    import flash.display.*;
  4.    import flash.events.Event;
  5.    import flash.events.IOErrorEvent;
  6.    import flash.events.ProgressEvent;
  7.    import flash.geom.Rectangle;
  8.    import flash.net.URLRequest;
  9.    import flash.utils.*;
  10.    import mx.core.IDataRenderer;
  11.    import mx.core.UIComponent;
  12.    import mx.effects.*;
  13.    import mx.events.PropertyChangeEvent;
  14.    
  15.    public class BitmapTile extends UIComponent implements IDataRenderer
  16.    {
  17.       private static var _nextId:int = 0;
  18.       
  19.       private var _data:Object;
  20.       
  21.       private var _imageWidth:Number = 100;
  22.       
  23.       private var _border:Shape;
  24.       
  25.       private const BORDER_WIDTH:Number = 1;
  26.       
  27.       private var _fadeValue:Number = 1;
  28.       
  29.       private var title:String = "hello";
  30.       
  31.       private var _imageHeight:Number = 100;
  32.       
  33.       private var _loaded:Boolean = false;
  34.       
  35.       private var _loader:Loader;
  36.       
  37.       private var _publicAlpha:Number = 1;
  38.       
  39.       private var _1001078227progress:Number = 0;
  40.       
  41.       private var _id:int;
  42.       
  43.       public function BitmapTile()
  44.       {
  45.          super();
  46.          this._id = _nextId++;
  47.          this._loader = new Loader();
  48.          this._border = new Shape();
  49.          addChild(this._border);
  50.       }
  51.       
  52.       public function set fadeValue(param1:Number) : void
  53.       {
  54.          this._fadeValue = param1;
  55.          super.alpha = this._publicAlpha * this._fadeValue;
  56.       }
  57.       
  58.       override public function set alpha(param1:Number) : void
  59.       {
  60.          this._publicAlpha = param1;
  61.          super.alpha = this._publicAlpha * this._fadeValue;
  62.       }
  63.       
  64.       public function get loaded() : Boolean
  65.       {
  66.          return this._loaded;
  67.       }
  68.       
  69.       [Bindable(event="propertyChange")]
  70.       public function get progress() : Number
  71.       {
  72.          return this._1001078227progress;
  73.       }
  74.       
  75.       public function get fadeValue() : Number
  76.       {
  77.          return this._fadeValue;
  78.       }
  79.       
  80.       public function set progress(param1:Number) : void
  81.       {
  82.          var _loc2_:Object = this._1001078227progress;
  83.          if(_loc2_ !== param1)
  84.          {
  85.             this._1001078227progress = param1;
  86.             this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,"progress",_loc2_,param1));
  87.          }
  88.       }
  89.       
  90.       public function set data(param1:Object) : void
  91.       {
  92.          this._loaded = false;
  93.          this.progress = 0;
  94.          this._data = param1;
  95.          var _loc2_:String = String(this._data is String ? this._data : this._data.thumbnail.url);
  96.          this.title = this._data.title;
  97.          this._loader.load(new URLRequest(_loc2_));
  98.          this._loader.contentLoaderInfo.addEventListener(Event.COMPLETE,this.loadComplete);
  99.          this._loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,this.updateProgress);
  100.          this._loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,this.errorHandler);
  101.          invalidateDisplayList();
  102.          invalidateSize();
  103.       }
  104.       
  105.       private function errorHandler(param1:IOErrorEvent) : void
  106.       {
  107.          trace("[error]: " + param1.text);
  108.       }
  109.       
  110.       private function updateProgress(param1:ProgressEvent) : void
  111.       {
  112.          this.progress = param1.bytesLoaded / param1.bytesTotal;
  113.       }
  114.       
  115.       public function get data() : Object
  116.       {
  117.          return this._data;
  118.       }
  119.       
  120.       override protected function measure() : void
  121.       {
  122.          measuredWidth = this._imageWidth + 2;
  123.          measuredHeight = this._imageHeight + 2;
  124.       }
  125.       
  126.       public function get imageBounds() : Rectangle
  127.       {
  128.          var _loc1_:Number = this.unscaledWidth - 2;
  129.          var _loc2_:Number = this.unscaledHeight - 2;
  130.          var _loc3_:Number = _loc1_ / this._imageWidth;
  131.          var _loc4_:Number = _loc2_ / this._imageHeight;
  132.          var _loc5_:Number = Math.min(_loc3_,_loc4_);
  133.          var _loc6_:Number = 1 + _loc1_ / 2 - this._imageWidth / 2 * _loc5_;
  134.          var _loc7_:Number = 1 + _loc2_ / 2 - this._imageHeight / 2 * _loc5_;
  135.          return new Rectangle(_loc6_,_loc7_,this._imageWidth * _loc5_,this._imageHeight * _loc5_);
  136.       }
  137.       
  138.       override protected function updateDisplayList(param1:Number, param2:Number) : void
  139.       {
  140.          var _loc3_:Graphics = this._border.graphics;
  141.          _loc3_.clear();
  142.          if(this._loaded == false)
  143.          {
  144.             return;
  145.          }
  146.          var _loc4_:* = getStyle("borderColor");
  147.          var _loc5_:* = getStyle("borderAlpha");
  148.          var _loc6_:* = getStyle("borderWidth");
  149.          if(isNaN(_loc4_) || _loc4_ == null)
  150.          {
  151.             _loc4_ = 12303291;
  152.          }
  153.          if(isNaN(_loc5_) || _loc5_ == null)
  154.          {
  155.             _loc5_ = 1;
  156.          }
  157.          if(isNaN(_loc6_) || _loc6_ == null)
  158.          {
  159.             _loc6_ = this.BORDER_WIDTH;
  160.          }
  161.          param1 -= 2;
  162.          param2 -= 2;
  163.          var _loc7_:Number = param1 / this._imageWidth;
  164.          var _loc8_:Number = param2 / this._imageHeight;
  165.          var _loc9_:Number = Math.min(_loc7_,_loc8_);
  166.          var _loc10_:Number = 1 + param1 / 2 - this._imageWidth / 2 * _loc9_;
  167.          var _loc11_:Number = 1 + param2 / 2 - this._imageHeight / 2 * _loc9_;
  168.          this._loader.width = this._imageWidth * _loc9_;
  169.          this._loader.height = this._imageHeight * _loc9_;
  170.          this._loader.x = _loc10_;
  171.          this._loader.y = _loc11_;
  172.          _loc3_.lineStyle(_loc6_,_loc4_,_loc5_,false,"normal",CapsStyle.NONE,JointStyle.MITER);
  173.          _loc3_.moveTo(_loc10_ + _loc6_ / 2,_loc11_ + _loc6_ / 2);
  174.          _loc3_.lineTo(_loc10_ + this._loader.width - _loc6_ / 2,_loc11_ + _loc6_ / 2);
  175.          _loc3_.lineTo(_loc10_ + this._loader.width - _loc6_ / 2,_loc11_ + this._loader.height - _loc6_ / 2);
  176.          _loc3_.lineTo(_loc10_ + _loc6_ / 2,_loc11_ + this._loader.height - _loc6_ / 2);
  177.          _loc3_.lineTo(_loc10_ + _loc6_ / 2,_loc11_ + _loc6_ / 2);
  178.       }
  179.       
  180.       private function loadComplete(param1:Event) : void
  181.       {
  182.          this._loaded = true;
  183.          if(this._loader.width > 110)
  184.          {
  185.             this._loader.width = 110;
  186.          }
  187.          if(this._loader.height > 90)
  188.          {
  189.             this._loader.height = 90;
  190.          }
  191.          this._imageWidth = this._loader.width;
  192.          this._imageHeight = this._loader.height;
  193.          var _loc2_:BitmapData = new BitmapData(this._imageWidth,this._imageHeight,true,0);
  194.          _loc2_.draw(this._loader);
  195.          var _loc3_:Bitmap = new Bitmap(_loc2_,"auto",true);
  196.          addChildAt(_loc3_,0);
  197.          invalidateSize();
  198.          invalidateDisplayList();
  199.          invalidateSize();
  200.          dispatchEvent(new Event("loaded"));
  201.       }
  202.    }
  203. }
  204.  
  205.