package {
import br.com.stimuli.loading.BulkErrorEvent;
import br.com.stimuli.loading.BulkLoader;
import br.com.stimuli.loading.BulkProgressEvent;
import com.adobe.viewsource.ViewSource;
import com.eccheung4.portfolio.controller.Portfolio;
import com.eccheung4.portfolio.views.Preloader;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.text.StyleSheet;
import flash.text.TextField;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
import caurina.transitions.Tweener;
/**
* Portfolio - Main file
*
* @author Edwin Cheung
*
*/
[SWF(backgroundColor='#000000', frameRate='30')]
public class Eccheung extends Sprite {
private var scene:Scene3D;
private var camera:Camera3D;
private var viewport:Viewport3D;
private var renderer:BasicRenderEngine;
private var doRotation:Boolean = false;
private var canRotate:Boolean = true;
private var lastMouseX:int;
private var lastMouseY:int;
private var cameraPitch:Number = 60;
private var cameraYaw:Number = -60;
private var title:TextField = new TextField();
private var blog:TextField = new TextField();
private var portfolio:Portfolio;
public var bulkInstance:BulkLoader;
public var preloader:Preloader;
public function Eccheung():void {
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
bulkInstance = new BulkLoader("main");
bulkInstance.add("projects.xml", {id:"projects"});
bulkInstance.get("projects").addEventListener(Event.COMPLETE, onProjectXMLLoaded);
bulkInstance.addEventListener(BulkLoader.ERROR,onError);
bulkInstance.addEventListener(BulkProgressEvent.PROGRESS, onProgress);
bulkInstance.start();
var css:StyleSheet = new StyleSheet();
var cssTitle:Object = new Object();
cssTitle.fontSize = 16;
cssTitle.fontFamily = "Verdana";
cssTitle.color = "#FFFFFF";
cssTitle.fontWeight = "bold";
css.setStyle(".title", cssTitle);
title.styleSheet = css;
title.autoSize = "left";
title.selectable = false;
title.htmlText = "<span class='title'>edwin c cheung portfolio</span>";
title.x = -title.width;
title.y = stage.stageHeight - 50;
var blogCSS:StyleSheet = new StyleSheet();
var cssBlog:Object = new Object();
cssBlog.fontSize = 16;
cssBlog.fontFamily = "Verdana";
cssBlog.color = "#398EBF";
cssBlog.fontWeight = "bold";
var cssBlogHover:Object = new Object();
cssBlogHover.fontSize = 16;
cssBlogHover.fontFamily = "Verdana";
cssBlogHover.color = "#00CCFF";
cssBlogHover.fontWeight = "bold";
blogCSS.setStyle(".blog", cssBlog);
blogCSS.setStyle("a:hover", cssBlogHover);
blog.styleSheet = blogCSS;
blog.autoSize = "left";
blog.selectable = false;
blog.htmlText = "<span class='blog'><a href='http://eccheung.wordpress.com'>visit blog</a></span>";
blog.x = -blog.width;
blog.y = stage.stageHeight - 30;
preloader = new Preloader(100, 100);
preloader.x = (stage.stageWidth - preloader.width)/2 - 50;
preloader.y = stage.stageHeight/2 - 50;
addChild(preloader);
ViewSource.addMenuItem(this, "srcview/index.html");
}
private function initPortfolio():void {
portfolio = new Portfolio(this);
addChild(portfolio);
addChild(title);
addChild(blog);
Tweener.addTween(title, {x:(stage.stageWidth/2 - title.width/2), time:2, transition:"easeOutBack"});
Tweener.addTween(blog, {x:(stage.stageWidth/2 - blog.width/2), time:2, delay:1, transition:"easeOutBack"});
}
private function onProgress(evt : BulkProgressEvent ) :void {
preloader.progress();
}
private function onError(evt : BulkErrorEvent ) : void{
trace("an error ocurred when loading");
for each (var loadingItem:String in evt.errors){
trace(loadingItem, "has failed to load");
}
}
private function onProjectXMLLoaded(evt: Event):void {
initPortfolio();
}
}
}