Section 1
//Dummy (Dummy)
package {
import flash.display.*;
public dynamic class Dummy extends MovieClip {
public function Dummy(){
super();
}
}
}//package
Section 2
//PreloaderSeabass (PreloaderSeabass)
package {
import flash.display.*;
public dynamic class PreloaderSeabass extends MovieClip {
public function PreloaderSeabass(){
super();
}
}
}//package
Section 3
//SkullCreaturesGamePreLoader (SkullCreaturesGamePreLoader)
package {
import flash.events.*;
import flash.display.*;
import flash.system.*;
import flash.net.*;
public class SkullCreaturesGamePreLoader extends MovieClip {
private var m_preloader:Preloader;
public var pos_end:Dummy;
public var pos_start:Dummy;
public var fourmations_link_button:SimpleButton;
public function SkullCreaturesGamePreLoader(){
super();
Security.allowDomain("http://viral.s3.amazonaws.com/tracking/4mations_tracker.swf");
initialiseTracker();
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
private function initialiseTracker():void{
var paramList:Object;
var query_string:String;
var request:URLRequest;
var tracker_loader:Loader;
paramList = this.root.loaderInfo.parameters;
query_string = "";
if (paramList.propertyIsEnumerable("referrer")){
trace(("the referrers file is: " + paramList["referrer"]));
query_string = ("?referrer=" + paramList["referrer"]);
};
request = new URLRequest(("http://viral.s3.amazonaws.com/tracking/4mations_tracker.swf" + query_string));
tracker_loader = new Loader();
tracker_loader.load(request);
addChild(tracker_loader);
}
private function onAddedToStage(ev:Event):void{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
m_preloader = new Preloader(this);
}
}
}//package
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.utils.*;
import flash.system.*;
import flash.net.*;
import flash.filters.*;
class Preloader {
private const MAX_SPEED:Number = 0.00533333333333333;
private const UPDATE_FREQ:Number = 8;
private const MIN_TIME:Number = 1500;
private var m_end:Point;
private var m_fg_gfx:Graphics;
private var m_progress_speed:Number;
private var m_loaded:Boolean;
private var m_seabass:PreloaderSeabass;
private var m_start:Point;
private var m_loader:Loader;
private var m_mc:MovieClip;
private var m_bg_sprite:Sprite;
private var m_fg_sprite:Sprite;
private var m_timer:Timer;
private var m_width:Number;
private var m_height:Number;
private var m_progress:Number;
private function Preloader(mc:SkullCreaturesGamePreLoader){
var load_url:String;
var url:URLRequest;
super();
m_loaded = false;
m_mc = mc;
m_start = new Point(mc.pos_start.x, mc.pos_start.y);
m_end = new Point(mc.pos_end.x, mc.pos_end.y);
m_width = 10;
m_height = Math.abs((m_end.y - m_start.y));
m_progress = 0;
m_progress_speed = 0;
setupBar();
setupSeabass();
m_timer = new Timer(1);
m_timer.addEventListener(TimerEvent.TIMER, onUpdate);
m_timer.start();
load_url = "http://viral.s3.amazonaws.com/4mations/SkullCreaturesGame.swf";
Security.allowDomain(load_url);
url = new URLRequest(load_url);
m_loader = new Loader();
m_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
m_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadProgress);
m_loader.load(url);
}
private function on4MationsButtonClick(ev:MouseEvent):void{
navigateToURL(new URLRequest("http://www.4mations.tv"));
}
private function onLoadComplete(ev:Event):void{
m_loaded = true;
}
private function onUpdate(ev:TimerEvent):void{
var start:int;
var end:int;
var duration:int;
var delay:int;
var button:DisplayObject;
start = getTimer();
if ((((m_loaded == true)) && ((m_progress >= 1)))){
button = (m_mc.getChildByName("fourmations_link_button") as DisplayObject);
if (button != null){
button.addEventListener(MouseEvent.CLICK, on4MationsButtonClick);
};
m_mc.addChild(m_loader);
unbind();
return;
};
animatePreload();
ev.updateAfterEvent();
end = getTimer();
duration = (end - start);
delay = Math.max(1, (UPDATE_FREQ - Math.min(duration, UPDATE_FREQ)));
m_timer.reset();
m_timer.delay = delay;
m_timer.start();
}
private function setupSeabass():void{
m_seabass = new PreloaderSeabass();
m_seabass.x = (m_start.x + 36);
m_seabass.y = m_start.y;
m_mc.addChild(m_seabass);
}
private function onLoadProgress(ev:ProgressEvent):void{
var load_progress:Number;
if (ev.bytesTotal == 0){
return;
};
if (m_progress_speed == 0){
m_progress_speed = MAX_SPEED;
};
load_progress = (ev.bytesLoaded / ev.bytesTotal);
if (load_progress < m_progress){
m_progress_speed = (m_progress_speed * 0.75);
} else {
m_progress_speed = (m_progress_speed * 1.25);
};
m_progress_speed = Math.min(m_progress_speed, MAX_SPEED);
m_progress_speed = Math.max(m_progress_speed, (MAX_SPEED * 0.25));
}
private function unbind():void{
m_mc.removeChild(m_seabass);
m_mc.removeChild(m_bg_sprite);
m_mc.removeChild(m_fg_sprite);
m_timer.stop();
m_timer.removeEventListener(TimerEvent.TIMER, onUpdate);
m_timer = null;
m_mc = null;
m_loader = null;
m_start = null;
m_end = null;
m_seabass = null;
m_bg_sprite = null;
m_fg_sprite = null;
m_fg_gfx = null;
}
private function setupBar():void{
var gfx:Graphics;
m_bg_sprite = new Sprite();
m_fg_sprite = new Sprite();
m_fg_gfx = m_fg_sprite.graphics;
gfx = m_bg_sprite.graphics;
gfx.clear();
gfx.beginFill(0);
gfx.drawRect(m_start.x, m_start.y, m_width, (m_height * -1));
gfx.endFill();
m_fg_sprite.filters = new Array(new GlowFilter(0xFFFF, 1, 16, 16, 5, 3, false, false));
m_mc.addChild(m_bg_sprite);
m_mc.addChild(m_fg_sprite);
}
private function animatePreload():void{
var mod:Number;
var sb_height:Number;
var bar_height:Number;
m_progress = (m_progress + m_progress_speed);
if (m_progress > 1){
return;
};
mod = (m_progress * m_progress);
sb_height = (m_height * mod);
bar_height = ((m_height - 4) * mod);
m_seabass.y = (m_start.y - sb_height);
m_fg_gfx.clear();
m_fg_gfx.beginFill(0xFFFFFF);
m_fg_gfx.drawRect((m_start.x + 2), (m_start.y - 2), (m_width - 4), (bar_height * -1));
m_fg_gfx.endFill();
}
}