Chapter 30 Example 2

by actionscriptbible
♥2 | Line 81 | Modified 2010-02-04 18:27:54 | MIT License
play

ActionScript3 source code

/**
 * Copyright actionscriptbible ( http://wonderfl.net/user/actionscriptbible )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/Auda
 */

package {
  import flash.display.Sprite;
  import flash.events.*;
  import flash.net.*;
  import flash.text.*;
  public class ch30ex2 extends Sprite {
    protected var fileRef:FileReference;
    protected var uploadButton:TestButton;
    protected var tf:TextField;
    protected const YOUR_UPLOAD_URL:String = "upload.php";
    
    public function ch30ex2() {
      fileRef = new FileReference();
      fileRef.addEventListener(Event.SELECT, selectHandler);
      fileRef.addEventListener(Event.CANCEL, cancelHandler);
      fileRef.addEventListener(ProgressEvent.PROGRESS, progressHandler);
      fileRef.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
      fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
      fileRef.addEventListener(Event.COMPLETE, completeHandler);
      
      var btn:TestButton;
      btn = new TestButton(100, 25, "Browse...");
      btn.addEventListener(MouseEvent.CLICK, function(event:Event):void {
        fileRef.browse();
      });
      btn.x = btn.y = 20;
      addChild(btn);

      uploadButton = btn = new TestButton(100, 25, "Upload");
      btn.addEventListener(MouseEvent.CLICK, function(event:Event):void {
        fileRef.upload(new URLRequest(YOUR_UPLOAD_URL));
      });
      btn.x = 20; btn.y = 55;
      addChild(btn);
      
      tf = new TextField();
      tf.defaultTextFormat = new TextFormat("_sans", 11, 0);
      tf.multiline = tf.wordWrap = true;
      tf.autoSize = TextFieldAutoSize.LEFT;
      tf.width = 300; tf.x = 130; tf.y = 58;
      addChild(tf);
      
      cancelHandler(null);
    }
    protected function selectHandler(event:Event):void {
      tf.text = fileRef.name;
      uploadButton.mouseEnabled = uploadButton.tabEnabled = true;
      uploadButton.alpha = 1;
    }
    protected function cancelHandler(event:Event):void {
      tf.text = "";
      uploadButton.mouseEnabled = uploadButton.tabEnabled = false;
      uploadButton.alpha = 0.3;
    }
    protected function progressHandler(event:ProgressEvent):void {
      tf.text = "Uploading " + 
        event.bytesLoaded + " / " + event.bytesTotal + "bytes ...";
    }
    protected function errorHandler(event:ErrorEvent):void {
      tf.text = event.text;
    }
    protected function completeHandler(event:Event):void {
      tf.text = "Upload complete!";
    }
  }
}
import flash.display.*;
import flash.text.*;
class TestButton extends Sprite {
  public var label:TextField;
  public function TestButton(w:Number, h:Number, labelText:String) {
    graphics.lineStyle(0.5, 0, 0, true);
    graphics.beginFill(0xa0a0a0);
    graphics.drawRoundRect(0, 0, w, h, 8);
    label = new TextField();
    addChild(label);
    label.defaultTextFormat = new TextFormat("_sans", 11, 0, true, false,
      false, null, null, "center");
    label.width = w;
    label.height = h;
    label.text = labelText;
    label.y = (h - label.textHeight)/2 - 2;
    buttonMode = true;
    mouseChildren = false;
  }
}