1 package net.systemeD.potlatch2 {
2 import flash.display.DisplayObject;
3 import flash.display.GradientType;
4 import flash.display.Sprite;
5 import flash.display.Bitmap;
6 import flash.display.BitmapData;
7 import flash.filters.DropShadowFilter;
8 import flash.geom.Matrix;
9 import flash.text.TextField;
10 import flash.text.TextFormat;
11 import flash.events.TimerEvent;
12 import flash.utils.Timer;
13 import net.systemeD.halcyon.FileBank;
15 public class Preloader extends net.systemeD.potlatch2.PreloaderDisplayBase {
17 [Embed("../../../embedded/potlatch2logo.png") ] [Bindable] public var Preloader_Logo:Class;
18 [Embed("../../../embedded/zebra.png") ] private var Preloader_Zebra:Class;
20 private var t:TextField;
21 private var f:DropShadowFilter=new DropShadowFilter(2,45,0x000000,0.5)
22 private var p2Logo:DisplayObject;
23 private var bar:Sprite=new Sprite();
24 private var barFrame:Sprite;
25 private var mainColor:uint=0x045966;
26 private var zebra:BitmapData;
27 private var zebraTimer:Timer;
28 private var offset:uint=0;
30 public function Preloader()
35 // This is called when the preloader has been created as a child on the stage.
36 // Put all real initialization here.
37 override public function initialize():void
41 clear(); // clear here, rather than in draw(), to speed up the drawing
43 var b:Bitmap=new Preloader_Zebra();
44 zebra=new BitmapData(b.width,b.height); zebra.draw(b);
49 //creates all visual elements
53 if (loaderInfo.parameters['assets']) {
54 for each (var file:String in loaderInfo.parameters['assets'].split(';')) {
55 var asset:Array=file.split('=');
56 if (asset.length == 1) {
57 FileBank.getInstance().addFromZip(asset[0]);
59 FileBank.getInstance().addFromZip(asset[0], asset[1]);
65 //this is our "animation" bit
66 override protected function draw():void {
67 if (_fractionLoaded==1) {
68 if (zebraTimer) { return; }
69 zebraTimer = new Timer(20);
70 zebraTimer.addEventListener(TimerEvent.TIMER, zebraHandler);
72 t.text="Preparing...";
74 //make objects below follow loading progress
75 //positions are completely arbitrary
76 //d tells us the x value of where the loading bar is at
77 bar.graphics.beginFill(0xffffff,1)
78 bar.graphics.drawRoundRectComplex(0,0,bar.width * _fractionLoaded,15,12,0,0,12);
79 bar.graphics.endFill();
80 t.text = int(_fractionLoaded*100).toString()+"%";
82 var d:Number=barFrame.x + barFrame.width * _fractionLoaded;
83 t.x = d - t.width - 5;
86 private function zebraHandler(e:Event):void {
87 if (_IsInitComplete) {
90 var matrix:Matrix=new Matrix();
91 matrix.translate(offset,0);
92 bar.graphics.beginBitmapFill(zebra,matrix);
93 bar.graphics.drawRoundRectComplex(0,0,bar.width,15,12,0,0,12);
94 bar.graphics.endFill();
95 offset=(offset+1) % 25;
99 protected function createAssets():void
102 p2Logo = new Preloader_Logo();
103 p2Logo.y = stageHeight/2 - p2Logo.height/2;
104 p2Logo.x = stageWidth/2 - p2Logo.width/2;
105 //p2Logo.filters = [f];
110 bar.graphics.drawRoundRectComplex(0,0,400,15,12,0,0,12);
111 bar.x = stageWidth/2 - bar.width/2;
112 bar.y = stageHeight/1.2 - bar.height/2;
117 barFrame = new Sprite();
118 barFrame.graphics.lineStyle(2,0xFFFFFF,1)
119 barFrame.graphics.drawRoundRectComplex(0,0,400,15,12,0,0,12);
120 barFrame.graphics.endFill();
121 barFrame.x = stageWidth/2 - barFrame.width/2;
122 barFrame.y = stageHeight/1.2 - barFrame.height/2;
123 barFrame.filters = [f];
126 //create text field to show percentage of loading
131 //we can format our text
132 var s:TextFormat=new TextFormat("Verdana",null,0xFFFFFF,null,null,null,null,null,"right");
133 t.defaultTextFormat=s;
136 protected function clear():void
138 // Draw gradient background
139 var b:Sprite = new Sprite;
140 var matrix:Matrix = new Matrix();
141 matrix.createGradientBox(stageWidth, stageHeight, Math.PI/2);
142 b.graphics.beginGradientFill(GradientType.LINEAR,
143 [mainColor, mainColor],
148 b.graphics.drawRect(0, 0, stageWidth, stageHeight);
149 b.graphics.endFill();