Section 1
//BaseButton (fl.controls.BaseButton)
package fl.controls {
import flash.display.*;
import fl.core.*;
import flash.events.*;
import flash.utils.*;
import fl.events.*;
public class BaseButton extends UIComponent {
protected var _selected:Boolean;// = false
private var unlockedMouseState:String;
protected var pressTimer:Timer;
protected var mouseState:String;
protected var background:DisplayObject;
private var _mouseStateLocked:Boolean;// = false
protected var _autoRepeat:Boolean;// = false
private static var defaultStyles:Object = {upSkin:"Button_upSkin", downSkin:"Button_downSkin", overSkin:"Button_overSkin", disabledSkin:"Button_disabledSkin", selectedDisabledSkin:"Button_selectedDisabledSkin", selectedUpSkin:"Button_selectedUpSkin", selectedDownSkin:"Button_selectedDownSkin", selectedOverSkin:"Button_selectedOverSkin", focusRectSkin:null, focusRectPadding:null, repeatDelay:500, repeatInterval:35};
public function BaseButton(){
_selected = false;
_autoRepeat = false;
_mouseStateLocked = false;
super();
buttonMode = true;
mouseChildren = false;
useHandCursor = false;
setupMouseEvents();
setMouseState("up");
pressTimer = new Timer(1, 0);
pressTimer.addEventListener(TimerEvent.TIMER, buttonDown, false, 0, true);
}
protected function endPress():void{
pressTimer.reset();
}
public function set mouseStateLocked(_arg1:Boolean):void{
_mouseStateLocked = _arg1;
if (_arg1 == false){
setMouseState(unlockedMouseState);
} else {
unlockedMouseState = mouseState;
};
}
public function get autoRepeat():Boolean{
return (_autoRepeat);
}
public function set autoRepeat(_arg1:Boolean):void{
_autoRepeat = _arg1;
}
override public function set enabled(_arg1:Boolean):void{
super.enabled = _arg1;
mouseEnabled = _arg1;
}
public function get selected():Boolean{
return (_selected);
}
protected function mouseEventHandler(_arg1:MouseEvent):void{
if (_arg1.type == MouseEvent.MOUSE_DOWN){
setMouseState("down");
startPress();
} else {
if ((((_arg1.type == MouseEvent.ROLL_OVER)) || ((_arg1.type == MouseEvent.MOUSE_UP)))){
setMouseState("over");
endPress();
} else {
if (_arg1.type == MouseEvent.ROLL_OUT){
setMouseState("up");
endPress();
};
};
};
}
public function setMouseState(_arg1:String):void{
if (_mouseStateLocked){
unlockedMouseState = _arg1;
return;
};
if (mouseState == _arg1){
return;
};
mouseState = _arg1;
invalidate(InvalidationType.STATE);
}
protected function startPress():void{
if (_autoRepeat){
pressTimer.delay = Number(getStyleValue("repeatDelay"));
pressTimer.start();
};
dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true));
}
protected function buttonDown(_arg1:TimerEvent):void{
if (!_autoRepeat){
endPress();
return;
};
if (pressTimer.currentCount == 1){
pressTimer.delay = Number(getStyleValue("repeatInterval"));
};
dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true));
}
public function set selected(_arg1:Boolean):void{
if (_selected == _arg1){
return;
};
_selected = _arg1;
invalidate(InvalidationType.STATE);
}
override public function get enabled():Boolean{
return (super.enabled);
}
override protected function draw():void{
if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
drawBackground();
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.SIZE)){
drawLayout();
};
super.draw();
}
protected function setupMouseEvents():void{
addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler, false, 0, true);
addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, false, 0, true);
addEventListener(MouseEvent.MOUSE_UP, mouseEventHandler, false, 0, true);
addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler, false, 0, true);
}
protected function drawLayout():void{
background.width = width;
background.height = height;
}
protected function drawBackground():void{
var _local1:String;
var _local2:DisplayObject;
_local1 = (enabled) ? mouseState : "disabled";
if (selected){
_local1 = (("selected" + _local1.substr(0, 1).toUpperCase()) + _local1.substr(1));
};
_local1 = (_local1 + "Skin");
_local2 = background;
background = getDisplayObjectInstance(getStyleValue(_local1));
addChildAt(background, 0);
if (((!((_local2 == null))) && (!((_local2 == background))))){
removeChild(_local2);
};
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
}
}//package fl.controls
Section 2
//Button (fl.controls.Button)
package fl.controls {
import flash.display.*;
import fl.core.*;
import fl.managers.*;
public class Button extends LabelButton implements IFocusManagerComponent {
protected var emphasizedBorder:DisplayObject;
protected var _emphasized:Boolean;// = false
private static var defaultStyles:Object = {emphasizedSkin:"Button_emphasizedSkin", emphasizedPadding:2};
public static var createAccessibilityImplementation:Function;
public function Button(){
_emphasized = false;
super();
}
override public function drawFocus(_arg1:Boolean):void{
var _local2:Number;
var _local3:*;
super.drawFocus(_arg1);
if (_arg1){
_local2 = Number(getStyleValue("emphasizedPadding"));
if ((((_local2 < 0)) || (!(_emphasized)))){
_local2 = 0;
};
_local3 = getStyleValue("focusRectPadding");
_local3 = ((_local3)==null) ? 2 : _local3;
_local3 = (_local3 + _local2);
uiFocusRect.x = -(_local3);
uiFocusRect.y = -(_local3);
uiFocusRect.width = (width + (_local3 * 2));
uiFocusRect.height = (height + (_local3 * 2));
};
}
public function set emphasized(_arg1:Boolean):void{
_emphasized = _arg1;
invalidate(InvalidationType.STYLES);
}
override protected function draw():void{
if (((isInvalid(InvalidationType.STYLES)) || (isInvalid(InvalidationType.SIZE)))){
drawEmphasized();
};
super.draw();
if (emphasizedBorder != null){
setChildIndex(emphasizedBorder, (numChildren - 1));
};
}
public function get emphasized():Boolean{
return (_emphasized);
}
override protected function initializeAccessibility():void{
if (Button.createAccessibilityImplementation != null){
Button.createAccessibilityImplementation(this);
};
}
protected function drawEmphasized():void{
var _local1:Object;
var _local2:Number;
if (emphasizedBorder != null){
removeChild(emphasizedBorder);
};
emphasizedBorder = null;
if (!_emphasized){
return;
};
_local1 = getStyleValue("emphasizedSkin");
if (_local1 != null){
emphasizedBorder = getDisplayObjectInstance(_local1);
};
if (emphasizedBorder != null){
addChildAt(emphasizedBorder, 0);
_local2 = Number(getStyleValue("emphasizedPadding"));
emphasizedBorder.x = (emphasizedBorder.y = -(_local2));
emphasizedBorder.width = (width + (_local2 * 2));
emphasizedBorder.height = (height + (_local2 * 2));
};
}
public static function getStyleDefinition():Object{
return (UIComponent.mergeStyles(LabelButton.getStyleDefinition(), defaultStyles));
}
}
}//package fl.controls
Section 3
//ButtonLabelPlacement (fl.controls.ButtonLabelPlacement)
package fl.controls {
public class ButtonLabelPlacement {
public static const TOP:String = "top";
public static const LEFT:String = "left";
public static const BOTTOM:String = "bottom";
public static const RIGHT:String = "right";
}
}//package fl.controls
Section 4
//LabelButton (fl.controls.LabelButton)
package fl.controls {
import flash.display.*;
import fl.core.*;
import flash.events.*;
import fl.managers.*;
import flash.text.*;
import fl.events.*;
import flash.ui.*;
public class LabelButton extends BaseButton implements IFocusManagerComponent {
protected var _labelPlacement:String;// = "right"
protected var _toggle:Boolean;// = false
protected var icon:DisplayObject;
protected var oldMouseState:String;
protected var mode:String;// = "center"
public var textField:TextField;
protected var _label:String;// = "Label"
private static var defaultStyles:Object = {icon:null, upIcon:null, downIcon:null, overIcon:null, disabledIcon:null, selectedDisabledIcon:null, selectedUpIcon:null, selectedDownIcon:null, selectedOverIcon:null, textFormat:null, disabledTextFormat:null, textPadding:5, embedFonts:false};
public static var createAccessibilityImplementation:Function;
public function LabelButton(){
_labelPlacement = ButtonLabelPlacement.RIGHT;
_toggle = false;
_label = "Label";
mode = "center";
super();
}
protected function toggleSelected(_arg1:MouseEvent):void{
selected = !(selected);
dispatchEvent(new Event(Event.CHANGE, true));
}
public function get labelPlacement():String{
return (_labelPlacement);
}
override protected function keyDownHandler(_arg1:KeyboardEvent):void{
if (!enabled){
return;
};
if (_arg1.keyCode == Keyboard.SPACE){
if (oldMouseState == null){
oldMouseState = mouseState;
};
setMouseState("down");
startPress();
};
}
protected function setEmbedFont(){
var _local1:Object;
_local1 = getStyleValue("embedFonts");
if (_local1 != null){
textField.embedFonts = _local1;
};
}
override protected function keyUpHandler(_arg1:KeyboardEvent):void{
if (!enabled){
return;
};
if (_arg1.keyCode == Keyboard.SPACE){
setMouseState(oldMouseState);
oldMouseState = null;
endPress();
dispatchEvent(new MouseEvent(MouseEvent.CLICK));
};
}
override public function get selected():Boolean{
return ((_toggle) ? _selected : false);
}
public function set labelPlacement(_arg1:String):void{
_labelPlacement = _arg1;
invalidate(InvalidationType.SIZE);
}
public function set toggle(_arg1:Boolean):void{
if (((!(_arg1)) && (super.selected))){
selected = false;
};
_toggle = _arg1;
if (_toggle){
addEventListener(MouseEvent.CLICK, toggleSelected, false, 0, true);
} else {
removeEventListener(MouseEvent.CLICK, toggleSelected);
};
invalidate(InvalidationType.STATE);
}
public function get label():String{
return (_label);
}
override public function set selected(_arg1:Boolean):void{
_selected = _arg1;
if (_toggle){
invalidate(InvalidationType.STATE);
};
}
override protected function draw():void{
if (textField.text != _label){
label = _label;
};
if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
drawBackground();
drawIcon();
drawTextFormat();
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.SIZE)){
drawLayout();
};
if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){
if (((isFocused) && (focusManager.showFocusIndicator))){
drawFocus(true);
};
};
validate();
}
public function get toggle():Boolean{
return (_toggle);
}
override protected function configUI():void{
super.configUI();
textField = new TextField();
textField.type = TextFieldType.DYNAMIC;
textField.selectable = false;
addChild(textField);
}
override protected function drawLayout():void{
var _local1:Number;
var _local2:String;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
_local1 = Number(getStyleValue("textPadding"));
_local2 = ((((icon == null)) && ((mode == "center")))) ? ButtonLabelPlacement.TOP : _labelPlacement;
textField.height = (textField.textHeight + 4);
_local3 = (textField.textWidth + 4);
_local4 = (textField.textHeight + 4);
_local5 = ((icon)==null) ? 0 : (icon.width + _local1);
_local6 = ((icon)==null) ? 0 : (icon.height + _local1);
textField.visible = (label.length > 0);
if (icon != null){
icon.x = Math.round(((width - icon.width) / 2));
icon.y = Math.round(((height - icon.height) / 2));
};
if (textField.visible == false){
textField.width = 0;
textField.height = 0;
} else {
if ((((_local2 == ButtonLabelPlacement.BOTTOM)) || ((_local2 == ButtonLabelPlacement.TOP)))){
_local7 = Math.max(0, Math.min(_local3, (width - (2 * _local1))));
if ((height - 2) > _local4){
_local8 = _local4;
} else {
_local8 = (height - 2);
};
_local3 = _local7;
textField.width = _local3;
_local4 = _local8;
textField.height = _local4;
textField.x = Math.round(((width - _local3) / 2));
textField.y = Math.round(((((height - textField.height) - _local6) / 2) + ((_local2)==ButtonLabelPlacement.BOTTOM) ? _local6 : 0));
if (icon != null){
icon.y = Math.round(((_local2)==ButtonLabelPlacement.BOTTOM) ? (textField.y - _local6) : ((textField.y + textField.height) + _local1));
};
} else {
_local7 = Math.max(0, Math.min(_local3, ((width - _local5) - (2 * _local1))));
_local3 = _local7;
textField.width = _local3;
textField.x = Math.round(((((width - _local3) - _local5) / 2) + ((_local2)!=ButtonLabelPlacement.LEFT) ? _local5 : 0));
textField.y = Math.round(((height - textField.height) / 2));
if (icon != null){
icon.x = Math.round(((_local2)!=ButtonLabelPlacement.LEFT) ? (textField.x - _local5) : ((textField.x + _local3) + _local1));
};
};
};
super.drawLayout();
}
override protected function initializeAccessibility():void{
if (LabelButton.createAccessibilityImplementation != null){
LabelButton.createAccessibilityImplementation(this);
};
}
protected function drawIcon():void{
var _local1:DisplayObject;
var _local2:String;
var _local3:Object;
_local1 = icon;
_local2 = (enabled) ? mouseState : "disabled";
if (selected){
_local2 = (("selected" + _local2.substr(0, 1).toUpperCase()) + _local2.substr(1));
};
_local2 = (_local2 + "Icon");
_local3 = getStyleValue(_local2);
if (_local3 == null){
_local3 = getStyleValue("icon");
};
if (_local3 != null){
icon = getDisplayObjectInstance(_local3);
};
if (icon != null){
addChildAt(icon, 1);
};
if (((!((_local1 == null))) && (!((_local1 == icon))))){
removeChild(_local1);
};
}
public function set label(_arg1:String):void{
_label = _arg1;
if (textField.text != _label){
textField.text = _label;
dispatchEvent(new ComponentEvent(ComponentEvent.LABEL_CHANGE));
};
invalidate(InvalidationType.SIZE);
invalidate(InvalidationType.STYLES);
}
protected function drawTextFormat():void{
var _local1:Object;
var _local2:TextFormat;
var _local3:TextFormat;
_local1 = UIComponent.getStyleDefinition();
_local2 = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat);
textField.setTextFormat(_local2);
_local3 = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat);
if (_local3 != null){
textField.setTextFormat(_local3);
} else {
_local3 = _local2;
};
textField.defaultTextFormat = _local3;
setEmbedFont();
}
public static function getStyleDefinition():Object{
return (mergeStyles(defaultStyles, BaseButton.getStyleDefinition()));
}
}
}//package fl.controls
Section 5
//RadioButton (fl.controls.RadioButton)
package fl.controls {
import flash.display.*;
import flash.events.*;
import fl.managers.*;
import flash.ui.*;
public class RadioButton extends LabelButton implements IFocusManagerGroup {
protected var _value:Object;
protected var defaultGroupName:String;// = "RadioButtonGroup"
protected var _group:RadioButtonGroup;
private static var defaultStyles:Object = {icon:null, upIcon:"RadioButton_upIcon", downIcon:"RadioButton_downIcon", overIcon:"RadioButton_overIcon", disabledIcon:"RadioButton_disabledIcon", selectedDisabledIcon:"RadioButton_selectedDisabledIcon", selectedUpIcon:"RadioButton_selectedUpIcon", selectedDownIcon:"RadioButton_selectedDownIcon", selectedOverIcon:"RadioButton_selectedOverIcon", focusRectSkin:null, focusRectPadding:null, textFormat:null, disabledTextFormat:null, embedFonts:null, textPadding:5};
public static var createAccessibilityImplementation:Function;
public function RadioButton(){
defaultGroupName = "RadioButtonGroup";
super();
mode = "border";
groupName = defaultGroupName;
}
override public function drawFocus(_arg1:Boolean):void{
var _local2:Number;
super.drawFocus(_arg1);
if (_arg1){
_local2 = Number(getStyleValue("focusRectPadding"));
uiFocusRect.x = (background.x - _local2);
uiFocusRect.y = (background.y - _local2);
uiFocusRect.width = (background.width + (_local2 * 2));
uiFocusRect.height = (background.height + (_local2 * 2));
};
}
private function setThis():void{
var _local1:RadioButtonGroup;
_local1 = _group;
if (_local1 != null){
if (_local1.selection != this){
_local1.selection = this;
};
} else {
super.selected = true;
};
}
override public function get autoRepeat():Boolean{
return (false);
}
override public function set autoRepeat(_arg1:Boolean):void{
}
protected function handleClick(_arg1:MouseEvent):void{
if (_group == null){
return;
};
_group.dispatchEvent(new MouseEvent(MouseEvent.CLICK, true));
}
override protected function keyDownHandler(_arg1:KeyboardEvent):void{
switch (_arg1.keyCode){
case Keyboard.DOWN:
setNext(!(_arg1.ctrlKey));
_arg1.stopPropagation();
break;
case Keyboard.UP:
setPrev(!(_arg1.ctrlKey));
_arg1.stopPropagation();
break;
case Keyboard.LEFT:
setPrev(!(_arg1.ctrlKey));
_arg1.stopPropagation();
break;
case Keyboard.RIGHT:
setNext(!(_arg1.ctrlKey));
_arg1.stopPropagation();
break;
case Keyboard.SPACE:
setThis();
_toggle = false;
default:
super.keyDownHandler(_arg1);
break;
};
}
private function setNext(_arg1:Boolean=true):void{
var _local2:RadioButtonGroup;
var _local3:IFocusManager;
var _local4:int;
var _local5:Number;
var _local6:int;
var _local7:*;
_local2 = _group;
if (_local2 == null){
return;
};
_local3 = focusManager;
if (_local3){
_local3.showFocusIndicator = true;
};
_local4 = _local2.getRadioButtonIndex(this);
_local5 = _local2.numRadioButtons;
_local6 = _local4;
if (_local4 != -1){
do {
_local6++;
_local6 = ((_local6)>(_local2.numRadioButtons - 1)) ? 0 : _local6;
_local7 = _local2.getRadioButtonAt(_local6);
if (((_local7) && (_local7.enabled))){
if (_arg1){
_local2.selection = _local7;
};
_local7.setFocus();
return;
};
if (((_arg1) && (!((_local2.getRadioButtonAt(_local6) == _local2.selection))))){
_local2.selection = this;
};
this.drawFocus(true);
} while (_local6 != _local4);
};
}
public function get group():RadioButtonGroup{
return (_group);
}
override protected function keyUpHandler(_arg1:KeyboardEvent):void{
super.keyUpHandler(_arg1);
if ((((_arg1.keyCode == Keyboard.SPACE)) && (!(_toggle)))){
_toggle = true;
};
}
override public function get selected():Boolean{
return (super.selected);
}
override public function set toggle(_arg1:Boolean):void{
throw (new Error("Warning: You cannot change a RadioButtons toggle."));
}
public function set value(_arg1:Object):void{
_value = _arg1;
}
public function set group(_arg1:RadioButtonGroup):void{
groupName = _arg1.name;
}
override public function set selected(_arg1:Boolean):void{
if ((((_arg1 == false)) || (selected))){
return;
};
if (_group != null){
_group.selection = this;
} else {
super.selected = _arg1;
};
}
override protected function draw():void{
super.draw();
}
override public function get toggle():Boolean{
return (true);
}
override protected function configUI():void{
var _local1:Shape;
var _local2:Graphics;
super.configUI();
super.toggle = true;
_local1 = new Shape();
_local2 = _local1.graphics;
_local2.beginFill(0, 0);
_local2.drawRect(0, 0, 100, 100);
_local2.endFill();
background = (_local1 as DisplayObject);
addChildAt(background, 0);
addEventListener(MouseEvent.CLICK, handleClick, false, 0, true);
}
public function set groupName(_arg1:String):void{
if (_group != null){
_group.removeRadioButton(this);
_group.removeEventListener(Event.CHANGE, handleChange);
};
_group = ((_arg1)==null) ? null : RadioButtonGroup.getGroup(_arg1);
if (_group != null){
_group.addRadioButton(this);
_group.addEventListener(Event.CHANGE, handleChange, false, 0, true);
};
}
public function get value():Object{
return (_value);
}
override protected function drawLayout():void{
var _local1:Number;
super.drawLayout();
_local1 = Number(getStyleValue("textPadding"));
switch (_labelPlacement){
case ButtonLabelPlacement.RIGHT:
icon.x = _local1;
textField.x = (icon.x + (icon.width + _local1));
background.width = ((textField.x + textField.width) + _local1);
background.height = (Math.max(textField.height, icon.height) + (_local1 * 2));
break;
case ButtonLabelPlacement.LEFT:
icon.x = ((width - icon.width) - _local1);
textField.x = (((width - icon.width) - (_local1 * 2)) - textField.width);
background.width = ((textField.width + icon.width) + (_local1 * 3));
background.height = (Math.max(textField.height, icon.height) + (_local1 * 2));
break;
case ButtonLabelPlacement.TOP:
case ButtonLabelPlacement.BOTTOM:
background.width = (Math.max(textField.width, icon.width) + (_local1 * 2));
background.height = ((textField.height + icon.height) + (_local1 * 3));
break;
};
background.x = Math.min((icon.x - _local1), (textField.x - _local1));
background.y = Math.min((icon.y - _local1), (textField.y - _local1));
}
override protected function drawBackground():void{
}
override protected function initializeAccessibility():void{
if (RadioButton.createAccessibilityImplementation != null){
RadioButton.createAccessibilityImplementation(this);
};
}
public function get groupName():String{
return (((_group)==null) ? null : _group.name);
}
private function setPrev(_arg1:Boolean=true):void{
var _local2:RadioButtonGroup;
var _local3:IFocusManager;
var _local4:int;
var _local5:int;
var _local6:*;
_local2 = _group;
if (_local2 == null){
return;
};
_local3 = focusManager;
if (_local3){
_local3.showFocusIndicator = true;
};
_local4 = _local2.getRadioButtonIndex(this);
_local5 = _local4;
if (_local4 != -1){
do {
--_local5;
_local5 = ((_local5)==-1) ? (_local2.numRadioButtons - 1) : _local5;
_local6 = _local2.getRadioButtonAt(_local5);
if (((_local6) && (_local6.enabled))){
if (_arg1){
_local2.selection = _local6;
};
_local6.setFocus();
return;
};
if (((_arg1) && (!((_local2.getRadioButtonAt(_local5) == _local2.selection))))){
_local2.selection = this;
};
this.drawFocus(true);
} while (_local5 != _local4);
};
}
protected function handleChange(_arg1:Event):void{
super.selected = (_group.selection == this);
dispatchEvent(new Event(Event.CHANGE, true));
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
}
}//package fl.controls
Section 6
//RadioButtonGroup (fl.controls.RadioButtonGroup)
package fl.controls {
import flash.events.*;
public class RadioButtonGroup extends EventDispatcher {
protected var _selection:RadioButton;
protected var radioButtons:Array;
protected var _name:String;
private static var groups:Object;
private static var groupCount:uint = 0;
public function RadioButtonGroup(_arg1:String){
_name = _arg1;
radioButtons = [];
registerGroup(this);
}
public function getRadioButtonIndex(_arg1:RadioButton):int{
var _local2:int;
var _local3:RadioButton;
_local2 = 0;
while (_local2 < radioButtons.length) {
_local3 = (radioButtons[_local2] as RadioButton);
if (_local3 == _arg1){
return (_local2);
};
_local2++;
};
return (-1);
}
public function get numRadioButtons():int{
return (radioButtons.length);
}
public function get name():String{
return (_name);
}
public function get selection():RadioButton{
return (_selection);
}
public function set selection(_arg1:RadioButton):void{
if ((((((_selection == _arg1)) || ((_arg1 == null)))) || ((getRadioButtonIndex(_arg1) == -1)))){
return;
};
_selection = _arg1;
dispatchEvent(new Event(Event.CHANGE, true));
}
public function set selectedData(_arg1:Object):void{
var _local2:int;
var _local3:RadioButton;
_local2 = 0;
while (_local2 < radioButtons.length) {
_local3 = (radioButtons[_local2] as RadioButton);
if (_local3.value == _arg1){
selection = _local3;
return;
};
_local2++;
};
}
public function removeRadioButton(_arg1:RadioButton):void{
var _local2:int;
_local2 = getRadioButtonIndex(_arg1);
if (_local2 != -1){
radioButtons.splice(_local2, 1);
};
if (_selection == _arg1){
_selection = null;
};
}
public function addRadioButton(_arg1:RadioButton):void{
if (_arg1.groupName != name){
_arg1.groupName = name;
return;
};
radioButtons.push(_arg1);
if (_arg1.selected){
selection = _arg1;
};
}
public function getRadioButtonAt(_arg1:int):RadioButton{
return (RadioButton(radioButtons[_arg1]));
}
public function get selectedData():Object{
var _local1:RadioButton;
_local1 = _selection;
return (((_local1)==null) ? null : _local1.value);
}
public static function getGroup(_arg1:String):RadioButtonGroup{
var _local2:RadioButtonGroup;
if (groups == null){
groups = {};
};
_local2 = (groups[_arg1] as RadioButtonGroup);
if (_local2 == null){
_local2 = new RadioButtonGroup(_arg1);
if ((++groupCount % 20) == 0){
cleanUpGroups();
};
};
return (_local2);
}
private static function registerGroup(_arg1:RadioButtonGroup):void{
if (groups == null){
groups = {};
};
groups[_arg1.name] = _arg1;
}
private static function cleanUpGroups():void{
var _local1:String;
var _local2:RadioButtonGroup;
for (_local1 in groups) {
_local2 = (groups[_local1] as RadioButtonGroup);
if (_local2.radioButtons.length == 0){
delete groups[_local1];
};
};
}
}
}//package fl.controls
Section 7
//ComponentShim (fl.core.ComponentShim)
package fl.core {
import flash.display.*;
public dynamic class ComponentShim extends MovieClip {
}
}//package fl.core
Section 8
//InvalidationType (fl.core.InvalidationType)
package fl.core {
public class InvalidationType {
public static const SIZE:String = "size";
public static const ALL:String = "all";
public static const DATA:String = "data";
public static const SCROLL:String = "scroll";
public static const STATE:String = "state";
public static const STYLES:String = "styles";
public static const SELECTED:String = "selected";
public static const RENDERER_STYLES:String = "rendererStyles";
}
}//package fl.core
Section 9
//UIComponent (fl.core.UIComponent)
package fl.core {
import flash.display.*;
import flash.events.*;
import fl.managers.*;
import flash.text.*;
import flash.utils.*;
import fl.events.*;
import flash.system.*;
public class UIComponent extends Sprite {
protected var _enabled:Boolean;// = true
private var _mouseFocusEnabled:Boolean;// = true
protected var startHeight:Number;
protected var _height:Number;
protected var _oldIMEMode:String;// = null
protected var startWidth:Number;
public var focusTarget:IFocusManagerComponent;
protected var errorCaught:Boolean;// = false
protected var uiFocusRect:DisplayObject;
protected var _width:Number;
public var version:String;// = "3.0.0.15"
protected var isFocused:Boolean;// = false
protected var callLaterMethods:Dictionary;
private var _focusEnabled:Boolean;// = true
private var tempText:TextField;
protected var invalidateFlag:Boolean;// = false
protected var _inspector:Boolean;// = false
protected var sharedStyles:Object;
protected var invalidHash:Object;
protected var isLivePreview:Boolean;// = false
protected var _imeMode:String;// = null
protected var instanceStyles:Object;
protected var _x:Number;
protected var _y:Number;
public static var inCallLaterPhase:Boolean = false;
private static var defaultStyles:Object = {focusRectSkin:"focusRectSkin", focusRectPadding:2, textFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), disabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultTextFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultDisabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0)};
public static var createAccessibilityImplementation:Function;
private static var focusManagers:Dictionary = new Dictionary(false);
public function UIComponent(){
version = "3.0.0.15";
isLivePreview = false;
invalidateFlag = false;
_enabled = true;
isFocused = false;
_focusEnabled = true;
_mouseFocusEnabled = true;
_imeMode = null;
_oldIMEMode = null;
errorCaught = false;
_inspector = false;
super();
instanceStyles = {};
sharedStyles = {};
invalidHash = {};
callLaterMethods = new Dictionary();
StyleManager.registerInstance(this);
configUI();
invalidate(InvalidationType.ALL);
tabEnabled = (this is IFocusManagerComponent);
focusRect = false;
if (tabEnabled){
addEventListener(FocusEvent.FOCUS_IN, focusInHandler);
addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler);
addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
};
initializeFocusManager();
addEventListener(Event.ENTER_FRAME, hookAccessibility, false, 0, true);
}
public function drawFocus(_arg1:Boolean):void{
var _local2:Number;
isFocused = _arg1;
if (((!((uiFocusRect == null))) && (contains(uiFocusRect)))){
removeChild(uiFocusRect);
uiFocusRect = null;
};
if (_arg1){
uiFocusRect = (getDisplayObjectInstance(getStyleValue("focusRectSkin")) as Sprite);
if (uiFocusRect == null){
return;
};
_local2 = Number(getStyleValue("focusRectPadding"));
uiFocusRect.x = -(_local2);
uiFocusRect.y = -(_local2);
uiFocusRect.width = (width + (_local2 * 2));
uiFocusRect.height = (height + (_local2 * 2));
addChildAt(uiFocusRect, 0);
};
}
private function callLaterDispatcher(_arg1:Event):void{
var _local2:Dictionary;
var _local3:Object;
if (_arg1.type == Event.ADDED_TO_STAGE){
removeEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher);
stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true);
stage.invalidate();
return;
};
_arg1.target.removeEventListener(Event.RENDER, callLaterDispatcher);
if (stage == null){
addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true);
return;
};
inCallLaterPhase = true;
_local2 = callLaterMethods;
for (_local3 in _local2) {
_local3();
delete _local2[_local3];
};
inCallLaterPhase = false;
}
private function addedHandler(_arg1:Event):void{
removeEventListener("addedToStage", addedHandler);
initializeFocusManager();
}
protected function getStyleValue(_arg1:String):Object{
return (((instanceStyles[_arg1])==null) ? sharedStyles[_arg1] : instanceStyles[_arg1]);
}
protected function isOurFocus(_arg1:DisplayObject):Boolean{
return ((_arg1 == this));
}
override public function get scaleX():Number{
return ((width / startWidth));
}
override public function get scaleY():Number{
return ((height / startHeight));
}
override public function set height(_arg1:Number):void{
if (_height == _arg1){
return;
};
setSize(width, _arg1);
}
protected function keyDownHandler(_arg1:KeyboardEvent):void{
}
protected function focusInHandler(_arg1:FocusEvent):void{
var _local2:IFocusManager;
if (isOurFocus((_arg1.target as DisplayObject))){
_local2 = focusManager;
if (((_local2) && (_local2.showFocusIndicator))){
drawFocus(true);
isFocused = true;
};
};
}
public function setStyle(_arg1:String, _arg2:Object):void{
if ((((instanceStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){
return;
};
instanceStyles[_arg1] = _arg2;
invalidate(InvalidationType.STYLES);
}
override public function get visible():Boolean{
return (super.visible);
}
public function get componentInspectorSetting():Boolean{
return (_inspector);
}
override public function get x():Number{
return ((isNaN(_x)) ? super.x : _x);
}
override public function get y():Number{
return ((isNaN(_y)) ? super.y : _y);
}
protected function setIMEMode(_arg1:Boolean){
var enabled = _arg1;
if (_imeMode != null){
if (enabled){
IME.enabled = true;
_oldIMEMode = IME.conversionMode;
try {
if (((!(errorCaught)) && (!((IME.conversionMode == IMEConversionMode.UNKNOWN))))){
IME.conversionMode = _imeMode;
};
errorCaught = false;
} catch(e:Error) {
errorCaught = true;
throw (new Error(("IME mode not supported: " + _imeMode)));
};
} else {
if (((!((IME.conversionMode == IMEConversionMode.UNKNOWN))) && (!((_oldIMEMode == IMEConversionMode.UNKNOWN))))){
IME.conversionMode = _oldIMEMode;
};
IME.enabled = false;
};
};
}
public function set enabled(_arg1:Boolean):void{
if (_arg1 == _enabled){
return;
};
_enabled = _arg1;
invalidate(InvalidationType.STATE);
}
public function setSharedStyle(_arg1:String, _arg2:Object):void{
if ((((sharedStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){
return;
};
sharedStyles[_arg1] = _arg2;
if (instanceStyles[_arg1] == null){
invalidate(InvalidationType.STYLES);
};
}
protected function keyUpHandler(_arg1:KeyboardEvent):void{
}
public function set focusEnabled(_arg1:Boolean):void{
_focusEnabled = _arg1;
}
override public function set scaleX(_arg1:Number):void{
setSize((startWidth * _arg1), height);
}
public function get mouseFocusEnabled():Boolean{
return (_mouseFocusEnabled);
}
override public function set scaleY(_arg1:Number):void{
setSize(width, (startHeight * _arg1));
}
protected function getDisplayObjectInstance(_arg1:Object):DisplayObject{
var classDef:Object;
var skin = _arg1;
classDef = null;
if ((skin is Class)){
return ((new (skin) as DisplayObject));
};
if ((skin is DisplayObject)){
(skin as DisplayObject).x = 0;
(skin as DisplayObject).y = 0;
return ((skin as DisplayObject));
};
try {
classDef = getDefinitionByName(skin.toString());
} catch(e:Error) {
try {
classDef = (loaderInfo.applicationDomain.getDefinition(skin.toString()) as Object);
} catch(e:Error) {
};
};
if (classDef == null){
return (null);
};
return ((new (classDef) as DisplayObject));
}
protected function copyStylesToChild(_arg1:UIComponent, _arg2:Object):void{
var _local3:String;
for (_local3 in _arg2) {
_arg1.setStyle(_local3, getStyleValue(_arg2[_local3]));
};
}
protected function beforeComponentParameters():void{
}
protected function callLater(_arg1:Function):void{
if (inCallLaterPhase){
return;
};
callLaterMethods[_arg1] = true;
if (stage != null){
stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true);
stage.invalidate();
} else {
addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true);
};
}
protected function createFocusManager():void{
if (focusManagers[stage] == null){
focusManagers[stage] = new FocusManager(stage);
};
}
override public function set visible(_arg1:Boolean):void{
var _local2:String;
if (super.visible == _arg1){
return;
};
super.visible = _arg1;
_local2 = (_arg1) ? ComponentEvent.SHOW : ComponentEvent.HIDE;
dispatchEvent(new ComponentEvent(_local2, true));
}
protected function hookAccessibility(_arg1:Event):void{
removeEventListener(Event.ENTER_FRAME, hookAccessibility);
initializeAccessibility();
}
public function set componentInspectorSetting(_arg1:Boolean):void{
_inspector = _arg1;
if (_inspector){
beforeComponentParameters();
} else {
afterComponentParameters();
};
}
override public function set x(_arg1:Number):void{
move(_arg1, _y);
}
public function drawNow():void{
draw();
}
override public function set y(_arg1:Number):void{
move(_x, _arg1);
}
protected function checkLivePreview():Boolean{
var className:String;
if (parent == null){
return (false);
};
try {
className = getQualifiedClassName(parent);
} catch(e:Error) {
};
return ((className == "fl.livepreview::LivePreviewParent"));
}
protected function focusOutHandler(_arg1:FocusEvent):void{
if (isOurFocus((_arg1.target as DisplayObject))){
drawFocus(false);
isFocused = false;
};
}
public function set mouseFocusEnabled(_arg1:Boolean):void{
_mouseFocusEnabled = _arg1;
}
public function getFocus():InteractiveObject{
if (stage){
return (stage.focus);
};
return (null);
}
protected function validate():void{
invalidHash = {};
}
override public function get height():Number{
return (_height);
}
public function invalidate(_arg1:String="all", _arg2:Boolean=true):void{
invalidHash[_arg1] = true;
if (_arg2){
this.callLater(draw);
};
}
public function get enabled():Boolean{
return (_enabled);
}
protected function getScaleX():Number{
return (super.scaleX);
}
protected function getScaleY():Number{
return (super.scaleY);
}
public function get focusEnabled():Boolean{
return (_focusEnabled);
}
protected function afterComponentParameters():void{
}
protected function draw():void{
if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){
if (((isFocused) && (focusManager.showFocusIndicator))){
drawFocus(true);
};
};
validate();
}
protected function configUI():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
isLivePreview = checkLivePreview();
_local1 = rotation;
rotation = 0;
_local2 = super.width;
_local3 = super.height;
var _local4 = 1;
super.scaleY = _local4;
super.scaleX = _local4;
setSize(_local2, _local3);
move(super.x, super.y);
rotation = _local1;
startWidth = _local2;
startHeight = _local3;
if (numChildren > 0){
removeChildAt(0);
};
}
protected function setScaleX(_arg1:Number):void{
super.scaleX = _arg1;
}
protected function setScaleY(_arg1:Number):void{
super.scaleY = _arg1;
}
private function initializeFocusManager():void{
if (stage == null){
addEventListener(Event.ADDED_TO_STAGE, addedHandler, false, 0, true);
} else {
createFocusManager();
};
}
public function set focusManager(_arg1:IFocusManager):void{
UIComponent.focusManagers[this] = _arg1;
}
public function clearStyle(_arg1:String):void{
setStyle(_arg1, null);
}
protected function isInvalid(_arg1:String, ... _args):Boolean{
if (((invalidHash[_arg1]) || (invalidHash[InvalidationType.ALL]))){
return (true);
};
while (_args.length > 0) {
if (invalidHash[_args.pop()]){
return (true);
};
};
return (false);
}
public function setSize(_arg1:Number, _arg2:Number):void{
_width = _arg1;
_height = _arg2;
invalidate(InvalidationType.SIZE);
dispatchEvent(new ComponentEvent(ComponentEvent.RESIZE, false));
}
override public function set width(_arg1:Number):void{
if (_width == _arg1){
return;
};
setSize(_arg1, height);
}
public function setFocus():void{
if (stage){
stage.focus = this;
};
}
protected function initializeAccessibility():void{
if (UIComponent.createAccessibilityImplementation != null){
UIComponent.createAccessibilityImplementation(this);
};
}
public function get focusManager():IFocusManager{
var _local1:DisplayObject;
_local1 = this;
while (_local1) {
if (UIComponent.focusManagers[_local1] != null){
return (IFocusManager(UIComponent.focusManagers[_local1]));
};
_local1 = _local1.parent;
};
return (null);
}
override public function get width():Number{
return (_width);
}
public function move(_arg1:Number, _arg2:Number):void{
_x = _arg1;
_y = _arg2;
super.x = Math.round(_arg1);
super.y = Math.round(_arg2);
dispatchEvent(new ComponentEvent(ComponentEvent.MOVE));
}
public function validateNow():void{
invalidate(InvalidationType.ALL, false);
draw();
}
public function getStyle(_arg1:String):Object{
return (instanceStyles[_arg1]);
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
public static function mergeStyles(... _args):Object{
var _local2:Object;
var _local3:uint;
var _local4:uint;
var _local5:Object;
var _local6:String;
_local2 = {};
_local3 = _args.length;
_local4 = 0;
while (_local4 < _local3) {
_local5 = _args[_local4];
for (_local6 in _local5) {
if (_local2[_local6] != null){
} else {
_local2[_local6] = _args[_local4][_local6];
};
};
_local4++;
};
return (_local2);
}
}
}//package fl.core
Section 10
//ComponentEvent (fl.events.ComponentEvent)
package fl.events {
import flash.events.*;
public class ComponentEvent extends Event {
public static const HIDE:String = "hide";
public static const BUTTON_DOWN:String = "buttonDown";
public static const MOVE:String = "move";
public static const RESIZE:String = "resize";
public static const ENTER:String = "enter";
public static const LABEL_CHANGE:String = "labelChange";
public static const SHOW:String = "show";
public function ComponentEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("ComponentEvent", "type", "bubbles", "cancelable"));
}
override public function clone():Event{
return (new ComponentEvent(type, bubbles, cancelable));
}
}
}//package fl.events
Section 11
//FocusManager (fl.managers.FocusManager)
package fl.managers {
import fl.controls.*;
import flash.display.*;
import fl.core.*;
import flash.events.*;
import flash.text.*;
import flash.utils.*;
import flash.ui.*;
public class FocusManager implements IFocusManager {
private var focusableObjects:Dictionary;
private var _showFocusIndicator:Boolean;// = true
private var defButton:Button;
private var focusableCandidates:Array;
private var _form:DisplayObjectContainer;
private var _defaultButtonEnabled:Boolean;// = true
private var activated:Boolean;// = false
private var _defaultButton:Button;
private var calculateCandidates:Boolean;// = true
private var lastFocus:InteractiveObject;
private var lastAction:String;
public function FocusManager(_arg1:DisplayObjectContainer){
activated = false;
calculateCandidates = true;
_showFocusIndicator = true;
_defaultButtonEnabled = true;
super();
focusableObjects = new Dictionary(true);
if (_arg1 != null){
_form = _arg1;
addFocusables(DisplayObject(_arg1));
_arg1.addEventListener(Event.ADDED, addedHandler);
_arg1.addEventListener(Event.REMOVED, removedHandler);
activate();
};
}
public function get showFocusIndicator():Boolean{
return (_showFocusIndicator);
}
private function getIndexOfNextObject(_arg1:int, _arg2:Boolean, _arg3:Boolean, _arg4:String):int{
var _local5:int;
var _local6:int;
var _local7:DisplayObject;
var _local8:IFocusManagerGroup;
var _local9:int;
var _local10:DisplayObject;
var _local11:IFocusManagerGroup;
_local5 = focusableCandidates.length;
_local6 = _arg1;
while (true) {
if (_arg2){
_arg1--;
} else {
_arg1++;
};
if (_arg3){
if (((_arg2) && ((_arg1 < 0)))){
break;
};
if (((!(_arg2)) && ((_arg1 == _local5)))){
break;
};
} else {
_arg1 = ((_arg1 + _local5) % _local5);
if (_local6 == _arg1){
break;
};
};
if (isValidFocusCandidate(focusableCandidates[_arg1], _arg4)){
_local7 = DisplayObject(findFocusManagerComponent(focusableCandidates[_arg1]));
if ((_local7 is IFocusManagerGroup)){
_local8 = IFocusManagerGroup(_local7);
_local9 = 0;
while (_local9 < focusableCandidates.length) {
_local10 = focusableCandidates[_local9];
if ((_local10 is IFocusManagerGroup)){
_local11 = IFocusManagerGroup(_local10);
if ((((_local11.groupName == _local8.groupName)) && (_local11.selected))){
_arg1 = _local9;
break;
};
};
_local9++;
};
};
return (_arg1);
};
};
return (_arg1);
}
public function set form(_arg1:DisplayObjectContainer):void{
_form = _arg1;
}
private function addFocusables(_arg1:DisplayObject, _arg2:Boolean=false):void{
var focusable:IFocusManagerComponent;
var io:InteractiveObject;
var doc:DisplayObjectContainer;
var i:int;
var child:DisplayObject;
var o = _arg1;
var skipTopLevel = _arg2;
if (!skipTopLevel){
if ((o is IFocusManagerComponent)){
focusable = IFocusManagerComponent(o);
if (focusable.focusEnabled){
if (((focusable.tabEnabled) && (isTabVisible(o)))){
focusableObjects[o] = true;
calculateCandidates = true;
};
o.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
o.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler);
};
} else {
if ((o is InteractiveObject)){
io = (o as InteractiveObject);
if (((((io) && (io.tabEnabled))) && ((findFocusManagerComponent(io) == io)))){
focusableObjects[io] = true;
calculateCandidates = true;
};
io.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
io.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler);
};
};
};
if ((o is DisplayObjectContainer)){
doc = DisplayObjectContainer(o);
o.addEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler);
if ((((((doc is Stage)) || ((doc.parent is Stage)))) || (doc.tabChildren))){
i = 0;
while (i < doc.numChildren) {
try {
child = doc.getChildAt(i);
if (child != null){
addFocusables(doc.getChildAt(i));
};
} catch(error:SecurityError) {
};
i = (i + 1);
};
};
};
}
private function getChildIndex(_arg1:DisplayObjectContainer, _arg2:DisplayObject):int{
return (_arg1.getChildIndex(_arg2));
}
private function mouseFocusChangeHandler(_arg1:FocusEvent):void{
if ((_arg1.relatedObject is TextField)){
return;
};
_arg1.preventDefault();
}
private function focusOutHandler(_arg1:FocusEvent):void{
var _local2:InteractiveObject;
_local2 = (_arg1.target as InteractiveObject);
}
private function isValidFocusCandidate(_arg1:DisplayObject, _arg2:String):Boolean{
var _local3:IFocusManagerGroup;
if (!isEnabledAndVisible(_arg1)){
return (false);
};
if ((_arg1 is IFocusManagerGroup)){
_local3 = IFocusManagerGroup(_arg1);
if (_arg2 == _local3.groupName){
return (false);
};
};
return (true);
}
public function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject{
var _local2:InteractiveObject;
_local2 = _arg1;
while (_arg1) {
if ((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))){
return (_arg1);
};
_arg1 = _arg1.parent;
};
return (_local2);
}
private function sortFocusableObjectsTabIndex():void{
var _local1:Object;
var _local2:InteractiveObject;
focusableCandidates = [];
for (_local1 in focusableObjects) {
_local2 = InteractiveObject(_local1);
if (((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))){
focusableCandidates.push(_local2);
};
};
focusableCandidates.sort(sortByTabIndex);
}
private function removeFocusables(_arg1:DisplayObject):void{
var _local2:Object;
var _local3:DisplayObject;
if ((_arg1 is DisplayObjectContainer)){
_arg1.removeEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler);
_arg1.removeEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler);
for (_local2 in focusableObjects) {
_local3 = DisplayObject(_local2);
if (DisplayObjectContainer(_arg1).contains(_local3)){
if (_local3 == lastFocus){
lastFocus = null;
};
_local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
delete focusableObjects[_local2];
calculateCandidates = true;
};
};
};
}
private function addedHandler(_arg1:Event):void{
var _local2:DisplayObject;
_local2 = DisplayObject(_arg1.target);
if (_local2.stage){
addFocusables(DisplayObject(_arg1.target));
};
}
private function getTopLevelFocusTarget(_arg1:InteractiveObject):InteractiveObject{
while (_arg1 != InteractiveObject(form)) {
if ((((((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))) && (IFocusManagerComponent(_arg1).mouseFocusEnabled))) && (UIComponent(_arg1).enabled))){
return (_arg1);
};
_arg1 = _arg1.parent;
if (_arg1 == null){
break;
};
};
return (null);
}
private function tabChildrenChangeHandler(_arg1:Event):void{
var _local2:DisplayObjectContainer;
if (_arg1.target != _arg1.currentTarget){
return;
};
calculateCandidates = true;
_local2 = DisplayObjectContainer(_arg1.target);
if (_local2.tabChildren){
addFocusables(_local2, true);
} else {
removeFocusables(_local2);
};
}
public function sendDefaultButtonEvent():void{
defButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
}
public function getFocus():InteractiveObject{
var _local1:InteractiveObject;
_local1 = form.stage.focus;
return (findFocusManagerComponent(_local1));
}
private function isEnabledAndVisible(_arg1:DisplayObject):Boolean{
var _local2:DisplayObjectContainer;
var _local3:TextField;
var _local4:SimpleButton;
_local2 = DisplayObject(form).parent;
while (_arg1 != _local2) {
if ((_arg1 is UIComponent)){
if (!UIComponent(_arg1).enabled){
return (false);
};
} else {
if ((_arg1 is TextField)){
_local3 = TextField(_arg1);
if ((((_local3.type == TextFieldType.DYNAMIC)) || (!(_local3.selectable)))){
return (false);
};
} else {
if ((_arg1 is SimpleButton)){
_local4 = SimpleButton(_arg1);
if (!_local4.enabled){
return (false);
};
};
};
};
if (!_arg1.visible){
return (false);
};
_arg1 = _arg1.parent;
};
return (true);
}
public function set defaultButton(_arg1:Button):void{
var _local2:Button;
_local2 = (_arg1) ? Button(_arg1) : null;
if (_local2 != _defaultButton){
if (_defaultButton){
_defaultButton.emphasized = false;
};
if (defButton){
defButton.emphasized = false;
};
_defaultButton = _local2;
defButton = _local2;
if (_local2){
_local2.emphasized = true;
};
};
}
private function deactivateHandler(_arg1:Event):void{
var _local2:InteractiveObject;
_local2 = InteractiveObject(_arg1.target);
}
public function setFocus(_arg1:InteractiveObject):void{
if ((_arg1 is IFocusManagerComponent)){
IFocusManagerComponent(_arg1).setFocus();
} else {
form.stage.focus = _arg1;
};
}
private function setFocusToNextObject(_arg1:FocusEvent):void{
var _local2:InteractiveObject;
if (!hasFocusableObjects()){
return;
};
_local2 = getNextFocusManagerComponent(_arg1.shiftKey);
if (_local2){
setFocus(_local2);
};
}
private function hasFocusableObjects():Boolean{
var _local1:Object;
for (_local1 in focusableObjects) {
return (true);
};
return (false);
}
private function tabIndexChangeHandler(_arg1:Event):void{
calculateCandidates = true;
}
private function sortFocusableObjects():void{
var _local1:Object;
var _local2:InteractiveObject;
focusableCandidates = [];
for (_local1 in focusableObjects) {
_local2 = InteractiveObject(_local1);
if (((((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))) && ((_local2.tabIndex > 0)))){
sortFocusableObjectsTabIndex();
return;
};
focusableCandidates.push(_local2);
};
focusableCandidates.sort(sortByDepth);
}
private function keyFocusChangeHandler(_arg1:FocusEvent):void{
showFocusIndicator = true;
if ((((((_arg1.keyCode == Keyboard.TAB)) || ((_arg1.keyCode == 0)))) && (!(_arg1.isDefaultPrevented())))){
setFocusToNextObject(_arg1);
_arg1.preventDefault();
};
}
private function getIndexOfFocusedObject(_arg1:DisplayObject):int{
var _local2:int;
var _local3:int;
_local2 = focusableCandidates.length;
_local3 = 0;
_local3 = 0;
while (_local3 < _local2) {
if (focusableCandidates[_local3] == _arg1){
return (_local3);
};
_local3++;
};
return (-1);
}
public function hideFocus():void{
}
private function removedHandler(_arg1:Event):void{
var _local2:int;
var _local3:DisplayObject;
var _local4:InteractiveObject;
_local3 = DisplayObject(_arg1.target);
if ((((_local3 is IFocusManagerComponent)) && ((focusableObjects[_local3] == true)))){
if (_local3 == lastFocus){
IFocusManagerComponent(lastFocus).drawFocus(false);
lastFocus = null;
};
_local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
delete focusableObjects[_local3];
calculateCandidates = true;
} else {
if ((((_local3 is InteractiveObject)) && ((focusableObjects[_local3] == true)))){
_local4 = (_local3 as InteractiveObject);
if (_local4){
if (_local4 == lastFocus){
lastFocus = null;
};
delete focusableObjects[_local4];
calculateCandidates = true;
};
_local3.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
};
};
removeFocusables(_local3);
}
private function sortByDepth(_arg1:InteractiveObject, _arg2:InteractiveObject):Number{
var _local3:String;
var _local4:String;
var _local5:int;
var _local6:String;
var _local7:String;
var _local8:String;
var _local9:DisplayObject;
var _local10:DisplayObject;
_local3 = "";
_local4 = "";
_local8 = "0000";
_local9 = DisplayObject(_arg1);
_local10 = DisplayObject(_arg2);
while (((!((_local9 == DisplayObject(form)))) && (_local9.parent))) {
_local5 = getChildIndex(_local9.parent, _local9);
_local6 = _local5.toString(16);
if (_local6.length < 4){
_local7 = (_local8.substring(0, (4 - _local6.length)) + _local6);
};
_local3 = (_local7 + _local3);
_local9 = _local9.parent;
};
while (((!((_local10 == DisplayObject(form)))) && (_local10.parent))) {
_local5 = getChildIndex(_local10.parent, _local10);
_local6 = _local5.toString(16);
if (_local6.length < 4){
_local7 = (_local8.substring(0, (4 - _local6.length)) + _local6);
};
_local4 = (_local7 + _local4);
_local10 = _local10.parent;
};
return (((_local3 > _local4)) ? 1 : ((_local3 < _local4)) ? -1 : 0);
}
public function get defaultButton():Button{
return (_defaultButton);
}
private function activateHandler(_arg1:Event):void{
var _local2:InteractiveObject;
_local2 = InteractiveObject(_arg1.target);
if (lastFocus){
if ((lastFocus is IFocusManagerComponent)){
IFocusManagerComponent(lastFocus).setFocus();
} else {
form.stage.focus = lastFocus;
};
};
lastAction = "ACTIVATE";
}
public function showFocus():void{
}
public function set defaultButtonEnabled(_arg1:Boolean):void{
_defaultButtonEnabled = _arg1;
}
public function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject{
var _local2:DisplayObject;
var _local3:String;
var _local4:int;
var _local5:Boolean;
var _local6:int;
var _local7:int;
var _local8:IFocusManagerGroup;
if (!hasFocusableObjects()){
return (null);
};
if (calculateCandidates){
sortFocusableObjects();
calculateCandidates = false;
};
_local2 = form.stage.focus;
_local2 = DisplayObject(findFocusManagerComponent(InteractiveObject(_local2)));
_local3 = "";
if ((_local2 is IFocusManagerGroup)){
_local8 = IFocusManagerGroup(_local2);
_local3 = _local8.groupName;
};
_local4 = getIndexOfFocusedObject(_local2);
_local5 = false;
_local6 = _local4;
if (_local4 == -1){
if (_arg1){
_local4 = focusableCandidates.length;
};
_local5 = true;
};
_local7 = getIndexOfNextObject(_local4, _arg1, _local5, _local3);
return (findFocusManagerComponent(focusableCandidates[_local7]));
}
private function mouseDownHandler(_arg1:MouseEvent):void{
var _local2:InteractiveObject;
if (_arg1.isDefaultPrevented()){
return;
};
_local2 = getTopLevelFocusTarget(InteractiveObject(_arg1.target));
if (!_local2){
return;
};
showFocusIndicator = false;
if (((((!((_local2 == lastFocus))) || ((lastAction == "ACTIVATE")))) && (!((_local2 is TextField))))){
setFocus(_local2);
};
lastAction = "MOUSEDOWN";
}
private function isTabVisible(_arg1:DisplayObject):Boolean{
var _local2:DisplayObjectContainer;
_local2 = _arg1.parent;
while (((((_local2) && (!((_local2 is Stage))))) && (!(((_local2.parent) && ((_local2.parent is Stage))))))) {
if (!_local2.tabChildren){
return (false);
};
_local2 = _local2.parent;
};
return (true);
}
public function get nextTabIndex():int{
return (0);
}
private function keyDownHandler(_arg1:KeyboardEvent):void{
if (_arg1.keyCode == Keyboard.TAB){
lastAction = "KEY";
if (calculateCandidates){
sortFocusableObjects();
calculateCandidates = false;
};
};
if (((((((defaultButtonEnabled) && ((_arg1.keyCode == Keyboard.ENTER)))) && (defaultButton))) && (defButton.enabled))){
sendDefaultButtonEvent();
};
}
private function focusInHandler(_arg1:FocusEvent):void{
var _local2:InteractiveObject;
var _local3:Button;
_local2 = InteractiveObject(_arg1.target);
if (form.contains(_local2)){
lastFocus = findFocusManagerComponent(InteractiveObject(_local2));
if ((lastFocus is Button)){
_local3 = Button(lastFocus);
if (defButton){
defButton.emphasized = false;
defButton = _local3;
_local3.emphasized = true;
};
} else {
if (((defButton) && (!((defButton == _defaultButton))))){
defButton.emphasized = false;
defButton = _defaultButton;
_defaultButton.emphasized = true;
};
};
};
}
private function tabEnabledChangeHandler(_arg1:Event):void{
var _local2:InteractiveObject;
var _local3:Boolean;
calculateCandidates = true;
_local2 = InteractiveObject(_arg1.target);
_local3 = (focusableObjects[_local2] == true);
if (_local2.tabEnabled){
if (((!(_local3)) && (isTabVisible(_local2)))){
if (!(_local2 is IFocusManagerComponent)){
_local2.focusRect = false;
};
focusableObjects[_local2] = true;
};
} else {
if (_local3){
delete focusableObjects[_local2];
};
};
}
public function set showFocusIndicator(_arg1:Boolean):void{
_showFocusIndicator = _arg1;
}
public function get form():DisplayObjectContainer{
return (_form);
}
private function sortByTabIndex(_arg1:InteractiveObject, _arg2:InteractiveObject):int{
return (((_arg1.tabIndex > _arg2.tabIndex)) ? 1 : ((_arg1.tabIndex < _arg2.tabIndex)) ? -1 : sortByDepth(_arg1, _arg2));
}
public function activate():void{
if (activated){
return;
};
form.stage.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler, false, 0, true);
form.stage.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler, false, 0, true);
form.addEventListener(FocusEvent.FOCUS_IN, focusInHandler, true);
form.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true);
form.stage.addEventListener(Event.ACTIVATE, activateHandler, false, 0, true);
form.stage.addEventListener(Event.DEACTIVATE, deactivateHandler, false, 0, true);
form.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
form.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true);
activated = true;
if (lastFocus){
setFocus(lastFocus);
};
}
public function deactivate():void{
form.stage.removeEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler);
form.stage.removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler);
form.removeEventListener(FocusEvent.FOCUS_IN, focusInHandler, true);
form.removeEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true);
form.stage.removeEventListener(Event.ACTIVATE, activateHandler);
form.stage.removeEventListener(Event.DEACTIVATE, deactivateHandler);
form.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
form.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true);
activated = false;
}
public function get defaultButtonEnabled():Boolean{
return (_defaultButtonEnabled);
}
}
}//package fl.managers
Section 12
//IFocusManager (fl.managers.IFocusManager)
package fl.managers {
import fl.controls.*;
import flash.display.*;
public interface IFocusManager {
function getFocus():InteractiveObject;
function deactivate():void;
function set defaultButton(_arg1:Button):void;
function set showFocusIndicator(_arg1:Boolean):void;
function get defaultButtonEnabled():Boolean;
function get nextTabIndex():int;
function get defaultButton():Button;
function get showFocusIndicator():Boolean;
function setFocus(_arg1:InteractiveObject):void;
function activate():void;
function showFocus():void;
function set defaultButtonEnabled(_arg1:Boolean):void;
function hideFocus():void;
function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject;
function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject;
}
}//package fl.managers
Section 13
//IFocusManagerComponent (fl.managers.IFocusManagerComponent)
package fl.managers {
public interface IFocusManagerComponent {
function set focusEnabled(_arg1:Boolean):void;
function drawFocus(_arg1:Boolean):void;
function setFocus():void;
function get focusEnabled():Boolean;
function get tabEnabled():Boolean;
function get tabIndex():int;
function get mouseFocusEnabled():Boolean;
}
}//package fl.managers
Section 14
//IFocusManagerGroup (fl.managers.IFocusManagerGroup)
package fl.managers {
public interface IFocusManagerGroup {
function set groupName(_arg1:String):void;
function set selected(_arg1:Boolean):void;
function get groupName():String;
function get selected():Boolean;
}
}//package fl.managers
Section 15
//StyleManager (fl.managers.StyleManager)
package fl.managers {
import fl.core.*;
import flash.text.*;
import flash.utils.*;
public class StyleManager {
private var globalStyles:Object;
private var classToDefaultStylesDict:Dictionary;
private var styleToClassesHash:Object;
private var classToStylesDict:Dictionary;
private var classToInstancesDict:Dictionary;
private static var _instance:StyleManager;
public function StyleManager(){
styleToClassesHash = {};
classToInstancesDict = new Dictionary(true);
classToStylesDict = new Dictionary(true);
classToDefaultStylesDict = new Dictionary(true);
globalStyles = UIComponent.getStyleDefinition();
}
public static function clearComponentStyle(_arg1:Object, _arg2:String):void{
var _local3:Class;
var _local4:Object;
_local3 = getClassDef(_arg1);
_local4 = getInstance().classToStylesDict[_local3];
if (((!((_local4 == null))) && (!((_local4[_arg2] == null))))){
delete _local4[_arg2];
invalidateComponentStyle(_local3, _arg2);
};
}
private static function getClassDef(_arg1:Object):Class{
var component = _arg1;
if ((component is Class)){
return ((component as Class));
};
try {
return ((getDefinitionByName(getQualifiedClassName(component)) as Class));
} catch(e:Error) {
if ((component is UIComponent)){
try {
return ((component.loaderInfo.applicationDomain.getDefinition(getQualifiedClassName(component)) as Class));
} catch(e:Error) {
};
};
};
return (null);
}
public static function clearStyle(_arg1:String):void{
setStyle(_arg1, null);
}
public static function setComponentStyle(_arg1:Object, _arg2:String, _arg3:Object):void{
var _local4:Class;
var _local5:Object;
_local4 = getClassDef(_arg1);
_local5 = getInstance().classToStylesDict[_local4];
if (_local5 == null){
_local5 = (getInstance().classToStylesDict[_local4] = {});
};
if (_local5 == _arg3){
return;
};
_local5[_arg2] = _arg3;
invalidateComponentStyle(_local4, _arg2);
}
private static function setSharedStyles(_arg1:UIComponent):void{
var _local2:StyleManager;
var _local3:Class;
var _local4:Object;
var _local5:String;
_local2 = getInstance();
_local3 = getClassDef(_arg1);
_local4 = _local2.classToDefaultStylesDict[_local3];
for (_local5 in _local4) {
_arg1.setSharedStyle(_local5, getSharedStyle(_arg1, _local5));
};
}
public static function getComponentStyle(_arg1:Object, _arg2:String):Object{
var _local3:Class;
var _local4:Object;
_local3 = getClassDef(_arg1);
_local4 = getInstance().classToStylesDict[_local3];
return (((_local4)==null) ? null : _local4[_arg2]);
}
private static function getInstance(){
if (_instance == null){
_instance = new (StyleManager);
};
return (_instance);
}
private static function invalidateComponentStyle(_arg1:Class, _arg2:String):void{
var _local3:Dictionary;
var _local4:Object;
var _local5:UIComponent;
_local3 = getInstance().classToInstancesDict[_arg1];
if (_local3 == null){
return;
};
for (_local4 in _local3) {
_local5 = (_local4 as UIComponent);
if (_local5 == null){
} else {
_local5.setSharedStyle(_arg2, getSharedStyle(_local5, _arg2));
};
};
}
private static function invalidateStyle(_arg1:String):void{
var _local2:Dictionary;
var _local3:Object;
_local2 = getInstance().styleToClassesHash[_arg1];
if (_local2 == null){
return;
};
for (_local3 in _local2) {
invalidateComponentStyle(Class(_local3), _arg1);
};
}
public static function registerInstance(_arg1:UIComponent):void{
var inst:StyleManager;
var classDef:Class;
var target:Class;
var defaultStyles:Object;
var styleToClasses:Object;
var n:String;
var instance = _arg1;
inst = getInstance();
classDef = getClassDef(instance);
if (classDef == null){
return;
};
if (inst.classToInstancesDict[classDef] == null){
inst.classToInstancesDict[classDef] = new Dictionary(true);
target = classDef;
while (defaultStyles == null) {
if (target["getStyleDefinition"] != null){
defaultStyles = target["getStyleDefinition"]();
break;
};
try {
target = (instance.loaderInfo.applicationDomain.getDefinition(getQualifiedSuperclassName(target)) as Class);
} catch(err:Error) {
try {
target = (getDefinitionByName(getQualifiedSuperclassName(target)) as Class);
} catch(e:Error) {
defaultStyles = UIComponent.getStyleDefinition();
break;
};
};
};
styleToClasses = inst.styleToClassesHash;
for (n in defaultStyles) {
if (styleToClasses[n] == null){
styleToClasses[n] = new Dictionary(true);
};
styleToClasses[n][classDef] = true;
};
inst.classToDefaultStylesDict[classDef] = defaultStyles;
inst.classToStylesDict[classDef] = {};
};
inst.classToInstancesDict[classDef][instance] = true;
setSharedStyles(instance);
}
public static function getStyle(_arg1:String):Object{
return (getInstance().globalStyles[_arg1]);
}
private static function getSharedStyle(_arg1:UIComponent, _arg2:String):Object{
var _local3:Class;
var _local4:StyleManager;
var _local5:Object;
_local3 = getClassDef(_arg1);
_local4 = getInstance();
_local5 = _local4.classToStylesDict[_local3][_arg2];
if (_local5 != null){
return (_local5);
};
_local5 = _local4.globalStyles[_arg2];
if (_local5 != null){
return (_local5);
};
return (_local4.classToDefaultStylesDict[_local3][_arg2]);
}
public static function setStyle(_arg1:String, _arg2:Object):void{
var _local3:Object;
_local3 = getInstance().globalStyles;
if ((((_local3[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){
return;
};
_local3[_arg1] = _arg2;
invalidateStyle(_arg1);
}
}
}//package fl.managers
Section 16
//MochiScores (mochi.MochiScores)
package mochi {
import flash.display.*;
import flash.text.*;
public class MochiScores {
private static var boardID:String;
public static var onErrorHandler:Object;
public static var onCloseHandler:Object;
public function MochiScores(){
super();
}
public static function showLeaderboard(options:Object=null):void{
var options = options;
if (options != null){
if (options.clip != null){
if ((options.clip is Sprite)){
MochiServices.setContainer(options.clip);
};
delete options.clip;
} else {
MochiServices.setContainer();
};
MochiServices.stayOnTop();
if (options.name != null){
if ((options.name is TextField)){
if (options.name.text.length > 0){
options.name = options.name.text;
};
};
};
if (options.score != null){
if ((options.score is TextField)){
if (options.score.text.length > 0){
options.score = options.score.text;
};
};
};
if (options.onDisplay != null){
options.onDisplay();
} else {
if (MochiServices.clip != null){
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
};
} else {
options = {};
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
if (options.onClose != null){
onCloseHandler = options.onClose;
} else {
onCloseHandler = function ():void{
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.play();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onClose.");
};
};
};
if (options.onError != null){
onErrorHandler = options.onError;
} else {
onErrorHandler = null;
};
if (options.boardID == null){
if (MochiScores.boardID != null){
options.boardID = MochiScores.boardID;
};
};
MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose);
}
public static function closeLeaderboard():void{
MochiServices.send("scores_closeLeaderboard");
}
public static function getPlayerInfo(callbackObj:Object, callbackMethod:Object=null):void{
MochiServices.send("scores_getPlayerInfo", null, callbackObj, callbackMethod);
}
public static function requestList(callbackObj:Object, callbackMethod:Object=null):void{
MochiServices.send("scores_requestList", null, callbackObj, callbackMethod);
}
public static function scoresArrayToObjects(scores:Object):Object{
var so:Object;
var i:Number;
var j:Number;
var o:Object;
var row_obj:Object;
var item:String;
var param:String;
so = {};
for (item in scores) {
if (typeof(scores[item]) == "object"){
if (((!((scores[item].cols == null))) && (!((scores[item].rows == null))))){
so[item] = [];
o = scores[item];
j = 0;
while (j < o.rows.length) {
row_obj = {};
i = 0;
while (i < o.cols.length) {
row_obj[o.cols[i]] = o.rows[j][i];
i++;
};
so[item].push(row_obj);
j++;
};
} else {
so[item] = {};
for (param in scores[item]) {
so[item][param] = scores[item][param];
};
};
} else {
so[item] = scores[item];
};
};
return (so);
}
public static function submit(score:Number, name:String, callbackObj:Object=null, callbackMethod:Object=null):void{
MochiServices.send("scores_submit", {score:score, name:name}, callbackObj, callbackMethod);
}
public static function onClose(args:Object=null):void{
if (args != null){
if (args.error != null){
if (args.error == true){
if (onErrorHandler != null){
if (args.errorCode == null){
args.errorCode = "IOError";
};
onErrorHandler(args.errorCode);
MochiServices.doClose();
return;
};
};
};
};
onCloseHandler();
MochiServices.doClose();
}
public static function setBoardID(boardID:String):void{
MochiScores.boardID = boardID;
MochiServices.send("scores_setBoardID", {boardID:boardID});
}
}
}//package mochi
Section 17
//MochiServices (mochi.MochiServices)
package mochi {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.system.*;
public class MochiServices {
private static var _container:Object;
private static var _connected:Boolean = false;
private static var _swfVersion:String;
private static var _sendChannel:LocalConnection;
private static var _rcvChannelName:String;
private static var _gatewayURL:String = "http://www.mochiads.com/static/lib/services/services.swf";
private static var _clip:MovieClip;
private static var _loader:Loader;
private static var _id:String;
private static var _listenChannel:LocalConnection;
private static var _timer:Timer;
private static var _sendChannelName:String;
private static var _startTime:Number;
private static var _connecting:Boolean = false;
public static var onError:Object;
private static var _listenChannelName:String = "__mochiservices";
private static var _rcvChannel:LocalConnection;
public function MochiServices(){
super();
}
public static function isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function send(methodName:String, args:Object=null, callbackObject:Object=null, callbackMethod:Object=null):void{
if (_connected){
_sendChannel.send(_sendChannelName, "onReceive", {methodName:methodName, args:args, callbackID:_clip._nextcallbackID});
} else {
if ((((_clip == null)) || (!(_connecting)))){
onError("NotConnected");
handleError(args, callbackObject, callbackMethod);
flush(true);
return;
};
_clip._queue.push({methodName:methodName, args:args, callbackID:_clip._nextcallbackID});
};
if (_clip != null){
if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){
_clip._callbacks[_clip._nextcallbackID] = {callbackObject:callbackObject, callbackMethod:callbackMethod};
_clip._nextcallbackID++;
};
};
}
public static function get connected():Boolean{
return (_connected);
}
private static function flush(error:Boolean):void{
var request:Object;
var callback:Object;
if (_clip != null){
if (_clip._queue != null){
while (_clip._queue.length > 0) {
request = _clip._queue.shift();
callback = null;
if (request != null){
if (request.callbackID != null){
callback = _clip._callbacks[request.callbackID];
};
delete _clip._callbacks[request.callbackID];
if (((error) && (!((callback == null))))){
handleError(request.args, callback.callbackObject, callback.callbackMethod);
};
};
};
};
};
}
private static function init(id:String, clip:Object):void{
_id = id;
if (clip != null){
_container = clip;
loadCommunicator(id, _container);
};
}
public static function get childClip():Object{
return (_clip);
}
public static function get id():String{
return (_id);
}
public static function stayOnTop():void{
_container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true);
if (_clip != null){
_clip.visible = true;
};
}
public static function getVersion():String{
return ("1.2");
}
public static function disconnect():void{
if (((_connected) || (_connecting))){
if (_clip != null){
if (_clip.parent != null){
if ((_clip.parent is Sprite)){
Sprite(_clip.parent).removeChild(_clip);
_clip = null;
};
};
};
_connecting = (_connected = false);
flush(true);
_listenChannel.close();
_rcvChannel.close();
//unresolved jump
var _slot1 = error;
};
if (_timer != null){
_timer.stop();
//unresolved jump
var _slot1 = error;
};
}
public static function allowDomains(server:String):String{
var hostname:String;
Security.allowDomain("*");
Security.allowInsecureDomain("*");
if (server.indexOf("http://") != -1){
hostname = server.split("/")[2].split(":")[0];
Security.allowDomain(hostname);
Security.allowInsecureDomain(hostname);
};
return (hostname);
}
public static function doClose():void{
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
if (_clip.parent != null){
Sprite(_clip.parent).removeChild(_clip);
};
}
public static function setContainer(container:Object=null, doAdd:Boolean=true):void{
if (container != null){
if ((container is Sprite)){
_container = container;
};
};
if (doAdd){
if ((_container is Sprite)){
Sprite(_container).addChild(_clip);
};
};
}
private static function onStatus(event:StatusEvent):void{
switch (event.level){
case "error":
_connected = false;
_listenChannel.connect(_listenChannelName);
break;
};
}
private static function initComChannels():void{
if (!_connected){
_sendChannel.addEventListener(StatusEvent.STATUS, MochiServices.onStatus);
_sendChannel.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"});
_sendChannel.send(_sendChannelName, "onReceive", {methodName:"registerGame", id:_id, clip:_container, version:getVersion()});
_rcvChannel.addEventListener(StatusEvent.STATUS, MochiServices.onStatus);
_clip.onReceive = function (pkg:Object):void{
var cb:String;
var cblst:Object;
var method:*;
var obj:Object;
var pkg = pkg;
cb = pkg.callbackID;
cblst = this.client._callbacks[cb];
if (!cblst){
return;
};
method = cblst.callbackMethod;
obj = cblst.callbackObject;
if (((obj) && ((typeof(method) == "string")))){
if (obj[method] != null){
method = obj[method];
} else {
trace((("Error: Method " + method) + " does not exist."));
};
};
if (method != undefined){
method.apply(obj, pkg.args);
//unresolved jump
var _slot1 = error;
trace("Unable to invoke callback method.");
} else {
if (obj != null){
obj(pkg.args);
//unresolved jump
var _slot1 = error;
trace("Unable to invoke callback method on object.");
};
};
delete this.client._callbacks[cb];
};
_clip.onError = function ():void{
MochiServices.onError("IOError");
};
_rcvChannel.connect(_rcvChannelName);
trace("connected!");
_connecting = false;
_connected = true;
_listenChannel.close();
while (_clip._queue.length > 0) {
_sendChannel.send(_sendChannelName, "onReceive", _clip._queue.shift());
};
};
}
private static function listen():void{
_listenChannel = new LocalConnection();
_listenChannel.client = _clip;
_clip.handshake = function (args:Object):void{
MochiServices.comChannelName = args.newChannel;
};
_listenChannel.allowDomain("*", "localhost");
_listenChannel.allowInsecureDomain("*", "localhost");
_listenChannel.connect(_listenChannelName);
trace("Waiting for MochiAds services to connect...");
}
private static function handleError(args:Object, callbackObject:Object, callbackMethod:Object):void{
var args = args;
var callbackObject = callbackObject;
var callbackMethod = callbackMethod;
if (args != null){
if (args.onError != null){
args.onError.apply(null, ["NotConnected"]);
};
};
if (callbackMethod != null){
args = {};
args.error = true;
args.errorCode = "NotConnected";
if (((!((callbackObject == null))) && ((callbackMethod is String)))){
var _local5 = callbackObject;
_local5[callbackMethod](args);
//unresolved jump
var _slot1 = error;
} else {
if (callbackMethod != null){
callbackMethod.apply(args);
//unresolved jump
var _slot1 = error;
};
};
};
}
public static function get clip():Object{
return (_container);
}
public static function set comChannelName(val:String):void{
if (val != null){
if (val.length > 3){
_sendChannelName = (val + "_fromgame");
_rcvChannelName = val;
initComChannels();
};
};
}
private static function loadCommunicator(id:String, clip:Object):MovieClip{
var clipname:String;
var f:Function;
var req:URLRequest;
var id = id;
var clip = clip;
clipname = ("_mochiservices_com_" + id);
if (_clip != null){
return (_clip);
};
if (!MochiServices.isNetworkAvailable()){
return (null);
};
MochiServices.allowDomains(_gatewayURL);
_clip = createEmptyMovieClip(clip, clipname, 10336, false);
_loader = new Loader();
_timer = new Timer(1000, 0);
_startTime = getTimer();
_timer.addEventListener(TimerEvent.TIMER, connectWait);
_timer.start();
f = function (ev:Object):void{
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load.");
MochiServices.disconnect();
MochiServices.onError("IOError");
};
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, f);
req = new URLRequest(_gatewayURL);
_loader.load(req);
_clip.addChild(_loader);
_clip._mochiservices_com = _loader;
_sendChannel = new LocalConnection();
_clip._queue = [];
_rcvChannel = new LocalConnection();
_rcvChannel.allowDomain("*", "localhost");
_rcvChannel.allowInsecureDomain("*", "localhost");
_rcvChannel.client = _clip;
_clip._nextcallbackID = 0;
_clip._callbacks = {};
listen();
return (_clip);
}
public static function bringToTop(e:Event):void{
var e = e;
if (MochiServices.clip != null){
if (MochiServices.childClip != null){
if (MochiServices.clip.numChildren > 1){
MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1));
};
//unresolved jump
var _slot1 = errorObject;
trace("Warning: Depth sort error.");
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
};
};
}
public static function connect(id:String, clip:Object, onError:Object=null):void{
var id = id;
var clip = clip;
var onError = onError;
if ((clip is DisplayObject)){
if (((!(_connected)) && ((_clip == null)))){
trace("MochiServices Connecting...");
_connecting = true;
init(id, clip);
};
} else {
trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage.");
};
if (onError != null){
MochiServices.onError = onError;
} else {
if (MochiServices.onError == null){
MochiServices.onError = function (errorCode:String):void{
trace(errorCode);
};
};
};
}
public static function createEmptyMovieClip(parent:Object, name:String, depth:Number, doAdd:Boolean=true):MovieClip{
var mc:MovieClip;
mc = new MovieClip();
if (doAdd){
if (((false) && (depth))){
parent.addChildAt(mc, depth);
} else {
parent.addChild(mc);
};
};
parent[name] = mc;
mc["_name"] = name;
return (mc);
}
public static function connectWait(e:TimerEvent):void{
if ((getTimer() - _startTime) > 10000){
if (!_connected){
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load.");
MochiServices.disconnect();
MochiServices.onError("IOError");
};
_timer.stop();
};
}
}
}//package mochi
Section 18
//BackgroundTileGFX (BackgroundTileGFX)
package {
import flash.display.*;
public dynamic class BackgroundTileGFX extends MovieClip {
public function BackgroundTileGFX(){
super();
}
}
}//package
Section 19
//BeenHitOverlay (BeenHitOverlay)
package {
import flash.display.*;
public dynamic class BeenHitOverlay extends MovieClip {
public function BeenHitOverlay(){
super();
addFrameScript(49, frame50);
}
function frame50(){
stop();
}
}
}//package
Section 20
//BonusExplodeGFX (BonusExplodeGFX)
package {
import flash.display.*;
public dynamic class BonusExplodeGFX extends MovieClip {
public function BonusExplodeGFX(){
super();
}
}
}//package
Section 21
//BonusHealthGFX (BonusHealthGFX)
package {
import flash.display.*;
public dynamic class BonusHealthGFX extends MovieClip {
public function BonusHealthGFX(){
super();
}
}
}//package
Section 22
//BonusScoreGFX (BonusScoreGFX)
package {
import flash.display.*;
public dynamic class BonusScoreGFX extends MovieClip {
public function BonusScoreGFX(){
super();
}
}
}//package
Section 23
//ButtonHighScores (ButtonHighScores)
package {
import flash.display.*;
public dynamic class ButtonHighScores extends SimpleButton {
public function ButtonHighScores(){
super();
}
}
}//package
Section 24
//ButtonStart (ButtonStart)
package {
import flash.display.*;
public dynamic class ButtonStart extends SimpleButton {
public function ButtonStart(){
super();
}
}
}//package
Section 25
//CollectBar (CollectBar)
package {
import flash.display.*;
public dynamic class CollectBar extends MovieClip {
public function CollectBar(){
super();
}
}
}//package
Section 26
//DisplayObj (DisplayObj)
package {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class DisplayObj {
var frames:Array;
public var frame:int;
public function DisplayObj(mc:MovieClip, scale:Number):void{
super();
frame = 0;
CreateBitmapsFromMovieClip(mc, scale);
}
public function GetBitmap():Bitmap{
return (frames[frame].bitmap);
}
public function RenderAt(screenBD:BitmapData, xpos:Number, ypos:Number):void{
frames[frame].RenderAt(screenBD, xpos, ypos);
}
public function SetFrame(f:int){
frame = f;
if (frame < 0){
frame = 0;
};
if (frame >= frames.length){
frame = (frames.length - 1);
};
}
public function CreateBitmapsFromMovieClip(mc:MovieClip, scale:Number):void{
var i:int;
var dof:*;
var rect:Rectangle;
var mat:*;
var cf:*;
var bitmap:Bitmap;
var bd:BitmapData;
var shadowBitmap:Bitmap;
var shadowbd:BitmapData;
frames = new Array();
i = 0;
while (i < mc.totalFrames) {
dof = new DisplayObjFrame();
rect = mc.getBounds(null);
mat = new Matrix();
mat.scale(scale, scale);
mat.tx = (-(rect.left) * scale);
mat.ty = (-(rect.top) * scale);
dof.xoffset = (rect.left * scale);
dof.yoffset = (rect.top * scale);
cf = new ColorTransform(0, 0, 0, 0.5, -255, -255, -255, 1);
bitmap = new Bitmap();
bd = new BitmapData((mc.width * scale), (mc.height * scale), true, 0);
bd.draw(mc, mat);
bitmap.bitmapData = bd;
dof.bitmap = bitmap;
shadowBitmap = new Bitmap();
shadowbd = new BitmapData((mc.width * scale), (mc.height * scale), true, 0);
shadowbd.draw(mc, mat, cf);
shadowBitmap.bitmapData = shadowbd;
dof.shadowBitmap = shadowBitmap;
mc.nextFrame();
frames.push(dof);
i++;
};
}
public function RenderShadowAt(screenBD:BitmapData, xpos:Number, ypos:Number):void{
frames[frame].RenderShadowAt(screenBD, xpos, ypos);
}
public function GetMaxFrames():int{
return (frames.length);
}
public function GetXOffset():Number{
return (frames[frame].xoffset);
}
public function GetYOffset():Number{
return (frames[frame].yoffset);
}
public function GetFrame():int{
return (frame);
}
public function GetWidth():Number{
return (frames[frame].bitmap.width);
}
}
}//package
Section 27
//DisplayObjFrame (DisplayObjFrame)
package {
import flash.display.*;
import flash.geom.*;
public class DisplayObjFrame {
public var xoffset:Number;
public var yoffset:Number;
public var bitmap:Bitmap;
public var shadowBitmap:Bitmap;
public function DisplayObjFrame(){
super();
}
public function RenderAt(screenBD:BitmapData, xpos:Number, ypos:Number):void{
screenBD.copyPixels(bitmap.bitmapData, new Rectangle(0, 0, bitmap.width, bitmap.height), new Point((xpos + xoffset), (ypos + yoffset)));
}
public function RenderShadowAt(screenBD:BitmapData, xpos:Number, ypos:Number):void{
screenBD.copyPixels(shadowBitmap.bitmapData, new Rectangle(0, 0, shadowBitmap.width, shadowBitmap.height), new Point((xpos + xoffset), (ypos + yoffset)));
}
}
}//package
Section 28
//Enemy1GFX (Enemy1GFX)
package {
import flash.display.*;
public dynamic class Enemy1GFX extends MovieClip {
public function Enemy1GFX(){
super();
}
}
}//package
Section 29
//Enemy2GFX (Enemy2GFX)
package {
import flash.display.*;
public dynamic class Enemy2GFX extends MovieClip {
public function Enemy2GFX(){
super();
}
}
}//package
Section 30
//Enemy3GFX (Enemy3GFX)
package {
import flash.display.*;
public dynamic class Enemy3GFX extends MovieClip {
public function Enemy3GFX(){
super();
}
}
}//package
Section 31
//Enemy4GFX (Enemy4GFX)
package {
import flash.display.*;
public dynamic class Enemy4GFX extends MovieClip {
public function Enemy4GFX(){
super();
}
}
}//package
Section 32
//Enemy5GFX (Enemy5GFX)
package {
import flash.display.*;
public dynamic class Enemy5GFX extends MovieClip {
public function Enemy5GFX(){
super();
}
}
}//package
Section 33
//Enemy6GFX (Enemy6GFX)
package {
import flash.display.*;
public dynamic class Enemy6GFX extends MovieClip {
public function Enemy6GFX(){
super();
}
}
}//package
Section 34
//Enemy9GFX (Enemy9GFX)
package {
import flash.display.*;
public dynamic class Enemy9GFX extends MovieClip {
public function Enemy9GFX(){
super();
}
}
}//package
Section 35
//EnemyGFX (EnemyGFX)
package {
import flash.display.*;
public dynamic class EnemyGFX extends MovieClip {
public function EnemyGFX(){
super();
}
}
}//package
Section 36
//Explode1GFX (Explode1GFX)
package {
import flash.display.*;
public dynamic class Explode1GFX extends MovieClip {
public function Explode1GFX(){
super();
}
}
}//package
Section 37
//Explode2GFX (Explode2GFX)
package {
import flash.display.*;
public dynamic class Explode2GFX extends MovieClip {
public function Explode2GFX(){
super();
}
}
}//package
Section 38
//Explode3GFX (Explode3GFX)
package {
import flash.display.*;
public dynamic class Explode3GFX extends MovieClip {
public function Explode3GFX(){
super();
}
}
}//package
Section 39
//focusRectSkin (focusRectSkin)
package {
import flash.display.*;
public dynamic class focusRectSkin extends MovieClip {
public function focusRectSkin(){
super();
}
}
}//package
Section 40
//gameobj (gameobj)
package {
import flash.events.*;
import flash.geom.*;
public class gameobj {
public var bonusType:int;
var graphicID:int;
public var yvel;
public var active:Boolean;
public var xacc;
var xoffset;
var timer1;
public var radius:Number;
public var zpos:Number;
public var dir:Number;
public var controlMode;
public var xvel;
var main;
public var type:int;
public var ypos:Number;
var timer;
var yoffset;
var multiplierFrame:int;
var userVarNumber:Number;
var startx;
public var ypos2:Number;
public var xpos:Number;
public var xpos2:Number;
var starty;
public var hasShadow:Boolean;
public var enemyType:int;
public var handleRender:Boolean;
public var yacc;
var frame:Number;
public var frameVel:Number;
public var visible:Boolean;
public var controlIndex;
var scoreFrame:int;
static const gotype_HEALTHBAR = 11;
static const gotype_BACKGROUND = 1;
static const gotype_SMARTBOMB = 9;
static const gotype_REPOSITORY = 8;
static const gotype_BONUS = 5;
static const gotype_ENEMY = 3;
static const gotype_COLLECTBAR = 10;
static const gotype_SCORE = 6;
static const gotype_EXPLOSION = 7;
static const gotype_PICKUP = 4;
static const gotype_GENERIC = 0;
static const gotype_PLAYER = 2;
public function gameobj(_main, _xpos, _ypos){
super();
xpos = _xpos;
ypos = _ypos;
zpos = 1;
startx = _xpos;
starty = _ypos;
active = false;
main = _main;
zpos = 0;
graphicID = 0;
frame = 0;
frameVel = 0;
controlIndex = 0;
handleRender = true;
timer = 0;
timer1 = 0;
radius = 16;
}
public function LimitVel(maxVel:Number){
var vellen:*;
var unitveldx:*;
var unitveldy:*;
vellen = Math.sqrt(((xvel * xvel) + (yvel * yvel)));
unitveldx = (xvel / vellen);
unitveldy = (yvel / vellen);
if (vellen > maxVel){
xvel = (unitveldx * maxVel);
yvel = (unitveldy * maxVel);
};
}
public function RenderShadow(_main):void{
var m:*;
if (hasShadow == false){
return;
};
m = main;
m.graphicobjs[graphicID].SetFrame(frame);
m.graphicobjs[graphicID].RenderShadowAt(m.screenBD, (xpos + 14), (ypos + 14));
}
public function UpdateEnemy5(){
var gravity:*;
graphicID = Main.gfx_enemy5;
gravity = yacc;
yvel = (yvel + ((gravity * main.ftime) * main.ftime));
xpos = (xpos + (xvel * main.ftime));
ypos = (ypos + (yvel * main.ftime));
frameVel = 0.5;
CycleAnimation();
if (IsOnScreen(80) == false){
active = false;
};
}
public function IsOnScreen(extra:Number):Boolean{
if (xpos < (0 - extra)){
return (false);
};
if (xpos > (0x0200 + extra)){
return (false);
};
if (ypos < (0 - extra)){
return (false);
};
if (ypos > (0x0200 + extra)){
return (false);
};
return (true);
}
public function CycleAnimation():void{
var maxframe:*;
frame = (frame + frameVel);
maxframe = (main.graphicobjs[graphicID].GetMaxFrames() - 1);
if (frame > maxframe){
frame = (frame - maxframe);
};
if (frame < 0){
frame = (frame + maxframe);
};
}
public function MoveToParent(parentgo:gameobj){
var px:*;
var py:*;
var dx:*;
var dy:*;
var len:*;
var unitdx:*;
var unitdy:*;
var length:*;
px = parentgo.xpos;
py = parentgo.ypos;
dx = (px - xpos);
dy = (py - ypos);
len = GetLen(dx, dy);
unitdx = (dx / len);
unitdy = (dy / len);
length = main.linkLength;
unitdx = (unitdx * length);
unitdy = (unitdy * length);
xpos = (px - unitdx);
ypos = (py - unitdy);
}
public function GetVelFromDir(speed:Number){
xvel = (Math.sin(dir) * speed);
yvel = (Math.cos(dir) * speed);
}
public function SetType(_type:int){
type = _type;
controlMode = 0;
xvel = 0;
frame = 0;
frameVel = 0;
hasShadow = true;
if (type == gotype_COLLECTBAR){
graphicID = Main.gfx_collectbar;
};
if (type == gotype_HEALTHBAR){
graphicID = Main.gfx_healthbar;
};
if (type == gotype_GENERIC){
frameVel = 1;
radius = 16;
};
if (type == gotype_REPOSITORY){
frameVel = 1;
radius = 32;
};
if (type == gotype_BACKGROUND){
graphicID = Main.gfx_background;
hasShadow = false;
handleRender = false;
xacc = 0;
xvel = 0;
yacc = 0;
yvel = 0;
xpos = 0;
ypos = 0;
timer = 100;
};
if (type == gotype_SMARTBOMB){
graphicID = Main.gfx_smartbombexplosion;
};
if (type == gotype_PLAYER){
graphicID = Main.gfx_player;
frame = 10;
radius = 16;
};
if (type == gotype_ENEMY){
graphicID = Main.gfx_enemy;
controlMode = 0;
};
if (type == gotype_PICKUP){
radius = 8;
graphicID = Main.gfx_pickup;
timer = 0;
frame = 40;
};
if (type == gotype_BONUS){
radius = 16;
bonusType = 0;
};
if (type == gotype_SCORE){
hasShadow = false;
graphicID = Main.gfx_numbers;
yvel = 4;
xvel = 0;
};
if (type == gotype_EXPLOSION){
frame = 0;
graphicID = Main.gfx_explode1;
frameVel = 1;
};
}
public function RotateTowards(v0:Number, v1:Number, amt:Number):Number{
var pi:*;
var pi2:*;
var dx0:*;
var dy0:*;
var dx1:*;
var dy1:*;
var det:Number;
var retdir:*;
pi = 3.141592658;
pi2 = (pi * 2);
dx0 = Math.sin(v0);
dy0 = Math.cos(v0);
dx1 = Math.sin(v1);
dy1 = Math.cos(v1);
det = ((dx0 * dy1) - (dx1 * dy0));
retdir = v0;
if (det < 0){
retdir = (retdir + amt);
} else {
if (det > 0){
retdir = (retdir - amt);
};
};
if (retdir > pi2){
retdir = (retdir - pi2);
};
if (retdir < 0){
retdir = (retdir + pi2);
};
return (retdir);
}
public function GetDirBetween(x0, y0, x1, y1):Number{
var d:*;
d = Math.atan2((x1 - x0), (y1 - y0));
return (d);
}
public function UpdatePlayer(){
frameVel = 0.5;
CycleAnimation();
}
public function UpdateEnemy1(){
timer1 = (timer1 + main.ftime);
graphicID = Main.gfx_enemy1;
if (controlMode == 0){
timer = (timer - main.ftime);
if (timer < 0){
controlMode = 1;
if (timer1 < (100 * 20)){
VelTowardsPlayer();
};
LimitVel(1);
timer = 0;
yacc = (1 + (Math.random() * 0.5));
};
frameVel = 0.2;
CycleAnimation();
};
if (controlMode == 1){
xacc = (Math.sin(timer) * yacc);
xpos = (xpos + ((xvel * xacc) * main.ftime));
ypos = (ypos + ((yvel * xacc) * main.ftime));
frameVel = (0.2 + xacc);
CycleAnimation();
timer = (timer + (0.01 * main.ftime));
if (timer > 3.14159){
controlMode = 0;
timer = (300 + (Math.random() * 100));
};
};
if (IsOnScreen(32) == false){
active = false;
};
}
public function UpdateEnemy3(){
graphicID = Main.gfx_enemy3;
xpos = (xpos + (xvel * main.ftime));
frameVel = 0.5;
CycleAnimation();
if (IsOnScreen(80) == false){
active = false;
};
}
public function BounceOffWalls():Boolean{
var y0:*;
var y1:*;
var x0:*;
var x1:*;
y0 = 0;
y1 = 0x0200;
x0 = 0;
x1 = 0x0200;
if (xpos < x0){
xvel = (xvel * -1);
xpos = x0;
return (true);
};
if (xpos > x1){
xvel = (xvel * -1);
xpos = x1;
return (true);
};
if (ypos < y0){
yvel = (yvel * -1);
ypos = y0;
return (true);
};
if (ypos > y1){
yvel = (yvel * -1);
ypos = y1;
return (true);
};
return (false);
}
public function CycleAnimationEx(minFrame, maxFrame):Boolean{
var looped:*;
var numFrames:*;
looped = false;
frame = (frame + frameVel);
numFrames = (maxFrame - minFrame);
if (frame > maxFrame){
frame = (frame - numFrames);
looped = true;
};
if (frame < minFrame){
frame = (frame + numFrames);
looped = true;
};
return (looped);
}
public function Render(_main):void{
var xp:Number;
var yp:Number;
var i:int;
var j:int;
var min:int;
var max:int;
var size:*;
if (type == gotype_REPOSITORY){
if (controlMode == 0){
return;
};
};
if (type == gotype_BACKGROUND){
main.graphicobjs[graphicID].SetFrame(0);
min = -1;
max = 3;
size = 0x0100;
i = min;
while (i < max) {
j = min;
while (j < max) {
xp = ((i * size) - (xpos % size));
yp = ((j * size) - (ypos % size));
main.graphicobjs[graphicID].RenderAt(main.screenBD, xp, yp);
j++;
};
i++;
};
main.graphicobjs[graphicID].SetFrame(1);
i = min;
while (i < max) {
j = min;
while (j < max) {
xp = ((i * size) - ((xpos * 2) % size));
yp = ((j * size) - ((ypos * 2) % size));
main.graphicobjs[graphicID].RenderAt(main.screenBD, xp, yp);
j++;
};
i++;
};
return;
};
main.graphicobjs[graphicID].SetFrame(frame);
main.graphicobjs[graphicID].RenderAt(main.screenBD, xpos, ypos);
}
function rand(num0, num1):Number{
var val:*;
val = (Math.random() * (num1 - num0));
val = (val + num0);
return (val);
}
public function GetDirFromVel(){
dir = Math.atan2(xvel, yvel);
}
public function SetScoreObject(score){
graphicID = (Main.gfx_numbers + score);
}
public function GetNumFrames():int{
return (main.graphicobjs[graphicID].GetMaxFrames());
}
public function VelTowardsPlayer(){
xvel = (main.player.xpos - xpos);
yvel = (main.player.ypos - ypos);
}
public function Update():void{
var numFrames:Number;
var numFrames1:Number;
var accel:*;
var maxframe:*;
var maxf:*;
if (type == gotype_PLAYER){
UpdatePlayer();
};
if (type == gotype_BONUS){
frameVel = 0.5;
CycleAnimation();
timer = (timer + main.ftime);
if (timer > (100 * 10)){
active = false;
};
};
if (type == gotype_ENEMY){
if (enemyType == 0){
UpdateEnemy0();
};
if (enemyType == 1){
UpdateEnemy1();
};
if (enemyType == 2){
UpdateEnemy2();
};
if (enemyType == 3){
UpdateEnemy3();
};
if (enemyType == 4){
UpdateEnemy4();
};
if (enemyType == 5){
UpdateEnemy5();
};
if (enemyType == 6){
UpdateEnemy6();
};
};
if (type == gotype_PICKUP){
if (controlMode == 0){
frameVel = 0.4;
frame = (frame + (frameVel * main.ftime));
if (frame > 80){
controlMode = 1;
frame = 80;
};
} else {
if (controlMode == 1){
timer = (timer + main.ftime);
if (timer > 400){
active = false;
};
};
};
};
if (type == gotype_COLLECTBAR){
numFrames = GetNumFrames();
frame = ((numFrames / main.numToOpenRepository) * main.numPickedUp);
};
if (type == gotype_HEALTHBAR){
numFrames1 = GetNumFrames();
frame = ((numFrames1 / main.playerMaxHealth) * main.playerHealth);
};
if (type == gotype_SCORE){
frame = 0;
accel = 0.1;
yvel = (yvel - ((accel * main.ftime) * main.ftime));
xpos = (xpos + (xvel * main.ftime));
ypos = (ypos + (yvel * main.ftime));
if (ypos < -10){
active = false;
};
};
if (type == gotype_EXPLOSION){
frame = (frame + frameVel);
maxframe = (main.graphicobjs[graphicID].GetMaxFrames() - 1);
if (frame > maxframe){
frame = maxframe;
active = false;
};
};
if (type == gotype_GENERIC){
CycleAnimation();
};
if (type == gotype_REPOSITORY){
CycleAnimation();
};
if (type == gotype_SMARTBOMB){
frame = (frame + frameVel);
maxf = (main.graphicobjs[graphicID].GetMaxFrames() - 1);
main.KillAllEnemies(xpos, ypos, yacc);
if (frame > maxf){
frame = maxf;
active = false;
};
};
if (type == gotype_BACKGROUND){
timer = (timer - main.ftime);
if (timer <= 0){
timer = (300 + (Math.random() * 400));
xacc = ((-1 + (Math.random() * 2)) * 0.005);
yacc = ((-1 + (Math.random() * 2)) * 0.005);
};
xvel = (xvel + ((xacc * main.ftime) * main.ftime));
yvel = (yvel + ((yacc * main.ftime) * main.ftime));
LimitVel(1);
xpos = (xpos + (xvel * main.ftime));
ypos = (ypos + (yvel * main.ftime));
};
}
public function UpdateEnemy0(){
frameVel = 0.5;
graphicID = Main.gfx_enemy;
if (controlMode == 0){
timer = (timer + main.ftime);
if (timer > 100){
controlMode = 1;
timer = 0;
};
};
if (controlMode == 1){
xpos = (xpos + (xvel * main.ftime));
ypos = (ypos + (yvel * main.ftime));
if (BounceOffWalls() == true){
timer++;
};
frameVel = 0.5;
CycleAnimation();
if (timer > 3){
controlMode = 2;
};
};
if (controlMode == 2){
xpos = (xpos + (xvel * main.ftime));
ypos = (ypos + (yvel * main.ftime));
CycleAnimation();
if (IsOnScreen(16) == false){
active = false;
};
};
}
public function UpdateEnemy2(){
graphicID = Main.gfx_enemy2;
if (controlMode == 0){
xpos = main.centrex;
ypos = main.centrey;
timer = (timer + main.ftime);
if (timer > 100){
controlMode = 1;
xacc = 0;
yacc = 0;
};
};
if (controlMode == 1){
yacc = (yacc + (0.01 * main.ftime));
xacc = (xacc + (0.1 * main.ftime));
xpos = (main.centrex + (Math.sin(yacc) * xacc));
ypos = (main.centrey + (Math.cos(yacc) * xacc));
frameVel = 0.5;
CycleAnimation();
if (xacc > 300){
active = false;
};
};
}
public function UpdateEnemy6(){
var maxtime:*;
var pi2:*;
var todir:*;
var rotvel:*;
timer = (timer + main.ftime);
maxtime = (100 * 20);
graphicID = Main.gfx_enemy6;
pi2 = (3.141592658 * 2);
todir = GetDirBetween(xpos, ypos, main.player.xpos, main.player.ypos);
rotvel = (0.01 * main.ftime);
if (timer < maxtime){
dir = RotateTowards(dir, todir, rotvel);
};
GetVelFromDir(yacc);
xpos = (xpos + (xvel * main.ftime));
ypos = (ypos + (yvel * main.ftime));
frameVel = 0.5;
CycleAnimation();
if (IsOnScreen(80) == false){
active = false;
};
}
public function UpdateEnemy4(){
var maxTimeWait:*;
var maxTimeMove:*;
var dirChange:*;
var maxVel:*;
var frameVelWait:*;
var frameVelMove:*;
maxTimeWait = 30;
maxTimeMove = 30;
dirChange = 2;
maxVel = 2;
frameVelWait = 0.5;
frameVelMove = 4.5;
if (controlMode == 0){
frameVel = frameVelWait;
timer = (timer + main.ftime);
if (timer > maxTimeWait){
timer = 0;
dir = (dir + dirChange);
GetVelFromDir(dirChange);
controlMode = 1;
};
};
if (controlMode == 1){
frameVel = frameVelMove;
timer = (timer + main.ftime);
if (timer > maxTimeMove){
controlMode = 2;
timer = 0;
};
xpos = (xpos + (xvel * main.ftime));
ypos = (ypos + (yvel * main.ftime));
};
if (controlMode == 2){
frameVel = frameVelWait;
timer = (timer + main.ftime);
if (timer > maxTimeWait){
timer = 0;
dir = (dir - dirChange);
GetVelFromDir(dirChange);
controlMode = 3;
};
};
if (controlMode == 3){
frameVel = frameVelMove;
timer = (timer + main.ftime);
if (timer > maxTimeMove){
controlMode = 0;
timer = 0;
};
xpos = (xpos + (xvel * main.ftime));
ypos = (ypos + (yvel * main.ftime));
};
if (IsOnScreen(64) == false){
active = false;
};
graphicID = Main.gfx_enemy4;
CycleAnimation();
}
function GetLen(dx, dy):Number{
var len:*;
len = Math.sqrt(((dx * dx) + (dy * dy)));
return (len);
}
}
}//package
Section 41
//gameobjgroup (gameobjgroup)
package {
import flash.events.*;
class gameobjgroup {
public var numobjs;// = 0x0100
var m:Main;
public var zorder:Array;
public var objs:Array;
function gameobjgroup(_main){
var i:*;
numobjs = 0x0100;
super();
m = _main;
objs = new Array();
zorder = new Array(0x0100);
i = 0;
while (i < numobjs) {
objs.push(new gameobj(m, 0, 0));
i++;
};
}
public function Update():void{
var i:*;
i = 0;
while (i < objs.length) {
if (objs[i].active == true){
objs[i].Update();
};
i++;
};
}
public function GetZOrder():int{
var i:int;
var j:int;
var index:int;
var numToSort:int;
var z0:Number;
var z1:Number;
var swap:int;
i = 0;
while (i < numobjs) {
if (objs[i].active == true){
if (objs[i].handleRender == true){
zorder[index] = i;
index++;
};
};
i++;
};
numToSort = index;
i = 0;
while (i < (numToSort - 1)) {
j = (i + 1);
while (j < numToSort) {
z0 = objs[zorder[i]].zpos;
z1 = objs[zorder[j]].zpos;
if (z1 > z0){
swap = zorder[i];
zorder[i] = zorder[j];
zorder[j] = swap;
};
j++;
};
i++;
};
return (numToSort);
}
public function AddObj(_objtype:int, _xpos, _ypos, _zpos, _graphicID):gameobj{
var i:*;
i = 0;
while (i < numobjs) {
if (objs[i].active == false){
objs[i].active = true;
objs[i].zpos = _zpos;
objs[i].xpos = _xpos;
objs[i].ypos = _ypos;
objs[i].startx = _xpos;
objs[i].starty = _ypos;
objs[i].yvel = 0;
objs[i].graphicID = _graphicID;
objs[i].SetType(_objtype);
return (objs[i]);
};
i++;
};
return (null);
}
public function Render():void{
var numToRender:int;
var i:int;
numToRender = GetZOrder();
i = 0;
while (i < numToRender) {
objs[zorder[i]].RenderShadow(m);
i++;
};
i = 0;
while (i < numToRender) {
objs[zorder[i]].Render(m);
i++;
};
}
}
}//package
Section 42
//GameOverPage (GameOverPage)
package {
import flash.display.*;
public dynamic class GameOverPage extends MovieClip {
public function GameOverPage(){
super();
}
}
}//package
Section 43
//HealthBar (HealthBar)
package {
import flash.display.*;
public dynamic class HealthBar extends MovieClip {
public function HealthBar(){
super();
}
}
}//package
Section 44
//LevelUpPage (LevelUpPage)
package {
import flash.display.*;
public dynamic class LevelUpPage extends MovieClip {
public function LevelUpPage(){
super();
addFrameScript(99, frame100);
}
function frame100(){
stop();
}
}
}//package
Section 45
//LongAnimalsMochiScores (LongAnimalsMochiScores)
package {
import flash.display.*;
import mochi.*;
public class LongAnimalsMochiScores {
var mochiMovieClip:MovieClip;
public function LongAnimalsMochiScores():void{
super();
}
public function Init(){
mochiMovieClip = new MovieClip();
MochiServices.connect("691b26522a20358a", mochiMovieClip);
MochiScores.setBoardID("865cbd472af5a395");
}
public function ShowLeaderboard(parentClip:MovieClip){
parentClip.addChild(mochiMovieClip);
MochiScores.showLeaderboard({boardID:"865cbd472af5a395"});
}
public function EnterHighScores(parentClip:MovieClip, score:Number, callback){
parentClip.addChild(mochiMovieClip);
MochiScores.showLeaderboard({boardID:"865cbd472af5a395", score:score, onClose:callback});
}
}
}//package
Section 46
//Main (Main)
package {
import fl.controls.*;
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.utils.*;
import flash.media.*;
import flash.net.*;
import flash.geom.*;
import flash.ui.*;
public class Main extends MovieClip {
var maxLinkLength;// = 20
public var centrey;// = 0x0100
var manTimer:Number;
var adClip:MovieClip;
var manMode;
var levelTimer:Number;
var hiscore;
var ftime:Number;
public var numToOpenRepository:int;
var healthbar:gameobj;// = null
var basketSide:int;
var minX;
var bm:Bitmap;
var objs:gameobjgroup;
var manFaceDirection:Boolean;// = true
var pickupGenTimer;
var gameTimer:Number;
var requiredLinkLength;
public var mochiScores;
var numtoadd;// = 0
var difficultyLevel:int;
var currentScore;
public var playerHealth;
var mouseVelY;// = 0
var scoretxt:TextField;
var musicSoundTransform:SoundTransform;
var mouseVelX;// = 0
var collectbar:gameobj;// = null
var mousePosX;// = 0
var mousePosY;// = 0
var levelEndTimer:Number;
var spaceDown:Boolean;
var initedScores:Boolean;
var killedTimer:Number;
var rightDown:Boolean;
public var numPickedUp:int;
var mouseOldPosY;// = 0
var player:gameobj;// = null
var backgroundObj:gameobj;// = null
var baskettxt:TextField;
var mouseOldPosX;// = 0
var bonusTable:Array;
var tf_small:TextFormat;
var mochiMovieClip:MovieClip;
public var playerMaxHealth;
var bonusGenTimer;
var musicChannel:SoundChannel;
var gameplayLevel:Array;
var addXpos:Array;
var tf_large:TextFormat;
var timer:gameobj;
var gameplayTable:Array;
var leftDown:Boolean;
public var graphicobjs:Array;
private var screenB:Bitmap;
var man:gameobj;
var repository:gameobj;// = null
var mainFrameAnim:Number;// = 0
var doSound;// = true
var bonusGenTimeMax;// = 500
var titleFirstWaitTime:Number;
var bmd:BitmapData;
var maxX;
var addYpos:Array;
var enemyGenTimer;
var minLinkLength;// = 4
var levelTimerMax:Number;
public var linkLength;
var pickupGenTimeMax;// = 100
var currentLevel:Number;
var enemyGenTimeMax;// = 600
var mc:MovieClip;
public var screenBD:BitmapData;
var links:Array;
var titleToX:Number;// = 0
public var basket:gameobj;
var gameState:int;// = 0
var linkLengthIncrease;// = 2
var currentDomain;
var initialLinkLength;// = 10
var titleTimer:Number;// = 0
var currentTime:Number;// = 0
var titleToY:Number;// = 0
private var backgroundBD:BitmapData;
var musicSound:Sound;
var lockedOut;// = false
public var centrex;// = 0x0100
public static const gfx_times = 5;
public static const gfx_pickup = 3;
static const KEY_LEFT = 37;
static const gameState_LEVEL_GETREADY = 1;
public static const zpos_REPOSITORY = 900;
public static const gfx_smartbombexplosion = 15;
public static const gfx_explode_pickup = 7;
public static const zpos_PLAYER = 500;
public static const bonus_FASTER = 5;
public static const zpos_NORMAL = 600;
public static const gfx_enemy1 = 9;
public static const gfx_enemy2 = 10;
public static const gfx_enemy3 = 11;
public static const gfx_enemy4 = 12;
public static const gfx_enemy5 = 13;
static const gameState_LEVEL_COMPLETE = 3;
public static const bonus_UTURN = 6;
public static const gfx_enemy6 = 14;
public static const gfx_collectbar = 18;
public static const gfx_enemy = 2;
static const gameState_GAMEOVER = 4;
public static const bonus_SCORE = 3;
static const gameState_PREGAMEAD = 6;
public static const gfx_player = 1;
public static const bonus_INCREASE = 7;
public static const gfx_bonusscore = 16;
public static const gfx_bonushealth = 4;
public static const gfx_explode1 = 6;
public static const sfx_pickup = 0;
public static const bonus_HEALTH = 9;
public static const zpos_ENEMY = 550;
public static const gfx_numbers = 20;
public static const zpos_SCORE = 20;
public static const bonus_SLOWER = 4;
public static const zpos_EXPLOSION = 50;
public static const bonus_GRAVITYFIELD = 2;
static const KEY_UP = 40;
public static const bonus_EXPLODE = 0;
static const KEY_DOWN = 38;
static const gameState_LEVEL_PLAY = 2;
public static const gfx_background = 0;
static const gameState_TITLE = 0;
public static const zpos_LINKS = 100;
public static const bonus_DECREASE = 1;
static const gameState_HIGHSCORES = 5;
public static const gfx_repository = 8;
public static const zpos_FAR = 1000;
public static const sfx_hit = 2;
public static const bonus_MAXIMUM = 10;
public static const sfx_bonus = 1;
static const KEY_SPACE = 32;
public static const bonus_SPLITENEMIES = 8;
public static const gfx_healthbar = 19;
public static const zpos_BACKGROUND = 1000;
public static const gfx_bonusbomb = 17;
static const KEY_RIGHT = 39;
public function Main(){
gameState = gameState_TITLE;
backgroundObj = null;
player = null;
collectbar = null;
healthbar = null;
repository = null;
initialLinkLength = 10;
linkLengthIncrease = 2;
minLinkLength = 4;
maxLinkLength = 20;
centrex = 0x0100;
centrey = 0x0100;
doSound = true;
bonusGenTimeMax = 500;
pickupGenTimeMax = 100;
enemyGenTimeMax = 600;
mouseOldPosX = 0;
mouseOldPosY = 0;
mousePosX = 0;
mousePosY = 0;
mouseVelX = 0;
mouseVelY = 0;
manFaceDirection = true;
currentTime = 0;
numtoadd = 0;
mainFrameAnim = 0;
titleToX = 0;
titleToY = 0;
titleTimer = 0;
lockedOut = false;
super();
addEventListener(Event.ENTER_FRAME, run);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpListener);
tf_large = new TextFormat("Century Gothic", 45, 0xFFFFFF, true, false, false, null, null, "center");
tf_small = new TextFormat("Century Gothic", 23, 0xFFFFFF, true, false, false, null, null, "center");
GenerateGraphics();
musicSoundTransform = new SoundTransform(0.4, 0);
musicSound = new Music();
musicChannel = musicSound.play(0, 999999, musicSoundTransform);
screenBD = new BitmapData(0x0200, 0x0200, false, 0);
screenB = new Bitmap(screenBD);
InitStage();
mochiScores = new LongAnimalsMochiScores();
mochiScores.Init();
links = new Array(0x0100);
hiscore = 0;
InitGame();
stage.addEventListener(MouseEvent.MOUSE_MOVE, MouseHandler);
SetGameState(gameState_PREGAMEAD);
}
function RandBetween(r0:Number, r1:Number):Number{
var r:Number;
r = (Math.random() * (r1 - r0));
r = (r + r0);
return (r);
}
function RunPreGameAd(){
}
private function CreateTextField(tf:TextFormat, x:Number, y:Number, txt:String):TextField{
var result:TextField;
result = new TextField();
result.selectable = false;
result.autoSize = TextFieldAutoSize.CENTER;
result.x = x;
result.y = y;
result.text = txt;
result.setTextFormat(tf);
addChild(result);
return (result);
}
public function PlaySound(soundID){
var sound:*;
if (doSound == false){
return;
};
if (gameState != gameState_LEVEL_PLAY){
return;
};
if (soundID == sfx_bonus){
sound = new sfx3();
};
if (soundID == sfx_hit){
sound = new sfx2();
};
if (soundID == sfx_pickup){
sound = new sfx1();
};
sound.play(0, 1);
}
public function soundOffPressed(event:MouseEvent){
if (doSound == false){
return;
};
musicChannel.stop();
doSound = false;
}
function keyUpListener(event:KeyboardEvent):void{
if (event.keyCode == KEY_LEFT){
leftDown = false;
};
if (event.keyCode == KEY_RIGHT){
rightDown = false;
};
if (event.keyCode == KEY_SPACE){
spaceDown = false;
};
}
function RunLevelComplete(){
}
function DoBonus(go:gameobj){
var bonusType:*;
bonusType = go.bonusType;
if (bonusType == bonus_EXPLODE){
SmartBomb();
AddScore(go.xpos, go.ypos, 100, 1);
};
if (bonusType == bonus_SCORE){
AddScore(go.xpos, go.ypos, 10, (numPickedUp + 1));
};
if (bonusType == bonus_HEALTH){
AddHealth(1);
AddScore(go.xpos, go.ypos, 100, 1);
};
GenerateExplosion(go.xpos, go.ypos, 1);
}
function UpdateGameplay():void{
var go:gameobj;
var r:int;
enemyGenTimer = (enemyGenTimer + (1 * ftime));
if (enemyGenTimer >= enemyGenTimeMax){
enemyGenTimer = 0;
go = objs.AddObj(gameobj.gotype_ENEMY, 100, 100, zpos_NORMAL, 0);
if (go != null){
SetEnemyType(go);
go.zpos = zpos_ENEMY;
};
};
pickupGenTimer = (pickupGenTimer + (1 * ftime));
if (pickupGenTimer >= pickupGenTimeMax){
pickupGenTimer = 0;
go = objs.AddObj(gameobj.gotype_PICKUP, 100, 100, zpos_NORMAL, 0);
if (go != null){
SetPlayfieldStartPos(go);
};
};
bonusGenTimer = (bonusGenTimer + (1 * ftime));
if (bonusGenTimer >= bonusGenTimeMax){
bonusGenTimer = 0;
go = objs.AddObj(gameobj.gotype_BONUS, 100, 100, zpos_NORMAL, 0);
if (go != null){
SetPlayfieldStartPos(go);
r = RandBetween(0, bonusTable.length);
if (r > (bonusTable.length - 1)){
r = (bonusTable.length - 1);
};
InitBonus(go, r);
};
};
if (linkLength < requiredLinkLength){
linkLength = (linkLength + (0.1 * ftime));
};
if (linkLength > requiredLinkLength){
linkLength = (linkLength - (0.1 * ftime));
};
if (numPickedUp >= numToOpenRepository){
repository.controlMode = 1;
};
}
function InitLevel(){
var xx:*;
Mouse.hide();
playerMaxHealth = 5;
playerHealth = 5;
InitStage();
levelTimer = 0;
xx = (0x0200 / 3);
objs = new gameobjgroup(this);
backgroundObj = objs.AddObj(gameobj.gotype_BACKGROUND, 0x0100, 0x0100, zpos_BACKGROUND, 0);
player = objs.AddObj(gameobj.gotype_PLAYER, 0x0100, 0x0100, zpos_PLAYER, 0);
repository = objs.AddObj(gameobj.gotype_REPOSITORY, 0x0100, 0x0100, zpos_REPOSITORY, gfx_repository);
repository.controlMode = 0;
repository.hasShadow = false;
scoretxt = CreateTextField(tf_small, 0x0100, 20, "");
collectbar = objs.AddObj(gameobj.gotype_COLLECTBAR, (0x0100 + 128), 35, zpos_SCORE, 0);
healthbar = objs.AddObj(gameobj.gotype_HEALTHBAR, (0x0100 - 128), 35, zpos_SCORE, 0);
enemyGenTimer = 0;
pickupGenTimer = 0;
bonusGenTimer = 0;
numPickedUp = 0;
linkLength = (requiredLinkLength = initialLinkLength);
InitLevelParameters();
}
public function highScoresPressed(event:MouseEvent){
mochiScores.ShowLeaderboard(this);
}
function InitLevelGetReady(){
}
function AddHealth(amt){
playerHealth = (playerHealth + amt);
if (playerHealth < 0){
playerHealth = 0;
};
if (playerHealth > playerMaxHealth){
playerHealth = playerMaxHealth;
};
if (amt < 0){
AddMovieClip(0x0100, 0x0100, new BeenHitOverlay());
};
}
function UpdateLinks(){
var zpos:Number;
var i:int;
var parent:gameobj;
var child:gameobj;
mainFrameAnim = (mainFrameAnim + (0.5 * ftime));
if (mainFrameAnim > 40){
mainFrameAnim = (mainFrameAnim - 40);
};
zpos = zpos_LINKS;
i = 0;
while (i < numPickedUp) {
child = links[i];
if (i == 0){
parent = player;
child.frame = mainFrameAnim;
} else {
parent = links[(i - 1)];
child.frame = (parent.frame - 3);
if (child.frame < 0){
child.frame = (child.frame + 40);
};
};
child.zpos = zpos;
zpos = (zpos + 0.01);
child.MoveToParent(parent);
i++;
};
}
function GetDistanceBetween(x0:Number, y0:Number, x1:Number, y1:Number):Number{
var xd:*;
var yd:*;
var dist:*;
xd = (x1 - x0);
yd = (y1 - y0);
dist = Math.sqrt(((xd * xd) + (yd * yd)));
return (dist);
}
function PlayerRepositoryCollision(){
var px:*;
var py:*;
var prad:*;
if (repository.controlMode == 0){
return;
};
px = player.xpos;
py = player.ypos;
prad = 16;
if (ObjsCollided(px, py, prad, centrex, centrey, 32) == true){
if (numPickedUp > 0){
AddScore(px, py, 10, (numPickedUp + 1));
};
numPickedUp = 0;
DeleteLinks();
repository.controlMode = 0;
SmartBomb();
LevelUp();
};
}
function PlayerEdgeCollision(){
var px:*;
var py:*;
var prad:*;
var hit:Boolean;
var x0:*;
var y0:*;
var x1:*;
var y1:*;
px = player.xpos;
py = player.ypos;
prad = 16;
hit = false;
x0 = 16;
y0 = 16;
x1 = (0x0200 - 16);
y1 = (0x0200 - 16);
if (py < y0){
hit = true;
};
if (px < x0){
hit = true;
};
if (py > y1){
hit = true;
};
if (px > x1){
hit = true;
};
if (hit == true){
};
}
function ObjsCollided(x0:Number, y0:Number, r0:Number, x1:Number, y1:Number, r1:Number):Boolean{
var xd:*;
var yd:*;
var dist:*;
xd = (x1 - x0);
yd = (y1 - y0);
dist = Math.sqrt(((xd * xd) + (yd * yd)));
if (dist < (r0 + r1)){
return (true);
};
return (false);
}
function AddScore(x, y, score, multiplier){
var xp:*;
var go:gameobj;
xp = x;
if (gameState != gameState_LEVEL_PLAY){
return;
};
currentScore = (currentScore + (score * multiplier));
go = objs.AddObj(gameobj.gotype_SCORE, 100, 100, zpos_SCORE, 0);
if (go != null){
go.SetScoreObject(score);
go.xpos = xp;
go.ypos = y;
graphicobjs[go.graphicID].SetFrame(0);
xp = (xp + graphicobjs[go.graphicID].GetWidth());
};
if (multiplier > 1){
go = objs.AddObj(gameobj.gotype_SCORE, 100, 100, zpos_SCORE, 0);
if (go != null){
go.graphicID = gfx_times;
go.xpos = xp;
go.ypos = (y + 20);
graphicobjs[go.graphicID].SetFrame(0);
xp = (xp + graphicobjs[go.graphicID].GetWidth());
};
go = objs.AddObj(gameobj.gotype_SCORE, 100, 100, zpos_SCORE, 0);
if (go != null){
go.SetScoreObject(multiplier);
go.xpos = xp;
go.ypos = y;
};
};
}
function AddNumberBitmaps(){
var i:int;
var n:MovieClip;
i = 0;
while (i <= 100) {
n = new MovieClip();
scoretxt = CreateTextField(tf_large, 0, 0, i.toString());
n.addChild(scoretxt);
graphicobjs.push(new DisplayObj(n, 1));
i++;
};
scoretxt = CreateTextField(tf_small, 0, 0, "x");
n.addChild(scoretxt);
graphicobjs.push(new DisplayObj(n, 1));
}
function LinksEnemyCollision(){
var num:int;
var j:int;
var link:gameobj;
var px:*;
var py:*;
var prad:*;
var i:int;
var go:gameobj;
addXpos = new Array();
addYpos = new Array();
numtoadd = 0;
num = numPickedUp;
j = 0;
while (j < num) {
link = links[j];
if (link != null){
px = link.xpos;
py = link.ypos;
prad = 16;
i = 0;
while (i < objs.numobjs) {
go = objs.objs[i];
if (go.active == true){
if (go.type == gameobj.gotype_ENEMY){
if (ObjsCollided(px, py, prad, go.xpos, go.ypos, 8) == true){
AddHealth(-1);
link.active = false;
go.active = false;
addXpos.push(go.xpos);
addYpos.push(go.ypos);
numtoadd++;
};
};
};
i++;
};
};
j++;
};
}
function run(e:Event):void{
var url:String;
var urlStart:Number;
var urlEnd:Number;
var domain:String;
var LastDot:Number;
var domEnd:Number;
url = stage.loaderInfo.url;
urlStart = (url.indexOf("://") + 3);
urlEnd = url.indexOf("/", urlStart);
domain = url.substring(urlStart, urlEnd);
LastDot = (domain.lastIndexOf(".") - 1);
domEnd = (domain.lastIndexOf(".", LastDot) + 1);
domain = domain.substring(domEnd, domain.length);
InitLockout(domain);
calcFrameTime();
switch (gameState){
case gameState_PREGAMEAD:
RunPreGameAd();
break;
case gameState_TITLE:
RunTitle();
break;
case gameState_HIGHSCORES:
RunHighScores();
break;
case gameState_LEVEL_GETREADY:
RunLevelGetReady();
break;
case gameState_LEVEL_PLAY:
RunLevel();
break;
case gameState_LEVEL_COMPLETE:
RunLevelComplete();
break;
case gameState_GAMEOVER:
RunGameOver();
break;
};
}
function RunTitle(){
var go:gameobj;
var i:int;
objs.Update();
MakeLinksList();
UpdateLinks();
Collision();
Render();
titleTimer = (titleTimer - ftime);
if (titleTimer < 0){
titleTimer = RandBetween(10, 50);
titleToX = RandBetween(0, 0x0200);
titleToY = RandBetween(0, 0x0200);
};
titleFirstWaitTime = (titleFirstWaitTime - ftime);
if (titleFirstWaitTime < 0){
titleFirstWaitTime = -1;
player.xvel = ((titleToX - player.xpos) * 0.1);
player.yvel = ((titleToY - player.ypos) * 0.1);
player.LimitVel(10);
player.xpos = (player.xpos + (player.xvel * ftime));
player.ypos = (player.ypos + (player.yvel * ftime));
};
pickupGenTimer = (pickupGenTimer + (1 * ftime));
if (pickupGenTimer >= pickupGenTimeMax){
pickupGenTimer = 0;
go = objs.AddObj(gameobj.gotype_PICKUP, 100, 100, zpos_NORMAL, 0);
if (go != null){
SetPlayfieldStartPos(go);
};
};
if (numPickedUp > 30){
i = 0;
while (i < objs.numobjs) {
go = objs.objs[i];
if (go.active == true){
if (go.type == gameobj.gotype_PICKUP){
GenerateExplosion(go.xpos, go.ypos, 0);
go.active = false;
};
};
i++;
};
numPickedUp = 0;
MakeLinksList();
UpdateLinks();
i = 0;
while (i < 20) {
go = objs.AddObj(gameobj.gotype_PICKUP, 100, 100, zpos_NORMAL, 0);
if (go != null){
go.xpos = player.xpos;
go.ypos = player.ypos;
};
i++;
};
};
}
function DeleteLinks(){
var i:int;
var go:gameobj;
i = 0;
while (i < objs.numobjs) {
go = objs.objs[i];
if (go.active == true){
if (go.type == gameobj.gotype_PICKUP){
if (go.controlMode == 2){
go.active = false;
};
};
};
i++;
};
}
public function hardPressed(event:MouseEvent){
difficultyLevel = 2;
}
function AddLevelDesc(v0, v1, v2, v3, v4, v5, v6){
var num:*;
gameplayLevel = new Array();
num = 0;
gameplayLevel.push(num);
num = (num + v0);
gameplayLevel.push(num);
num = (num + v1);
gameplayLevel.push(num);
num = (num + v2);
gameplayLevel.push(num);
num = (num + v3);
gameplayLevel.push(num);
num = (num + v4);
gameplayLevel.push(num);
num = (num + v5);
gameplayLevel.push(num);
num = (num + v6);
gameplayLevel.push(num);
gameplayTable.push(gameplayLevel);
}
function SetEnemyType(go:gameobj){
var gameplayLevel:Array;
var r:int;
var i:int;
var v0:int;
var v1:int;
gameplayLevel = gameplayTable[(currentLevel % gameplayTable.length)];
r = (Math.random() * 100);
i = 0;
while (i < (gameplayLevel.length - 1)) {
v0 = gameplayLevel[i];
v1 = gameplayLevel[(i + 1)];
if (v0 != v1){
if ((((r >= v0)) && ((r < v1)))){
go.enemyType = i;
};
};
i++;
};
SetEnemyInitialVelocity(go);
SetEdgeStartPos(go, 8);
if (go.enemyType == 0){
go.radius = 8;
};
if (go.enemyType == 1){
go.radius = 8;
};
if (go.enemyType == 1){
go.radius = 8;
};
if (go.enemyType == 3){
go.radius = 64;
go.xpos = -64;
go.ypos = RandBetween(32, (0x0200 - 32));
go.xvel = RandBetween(0.5, 1.5);
};
if (go.enemyType == 4){
go.radius = 24;
go.VelTowardsPlayer();
go.LimitVel(1);
go.GetDirFromVel();
go.dir = (go.dir - 1);
};
if (go.enemyType == 5){
go.radius = 24;
go.xpos = RandBetween(32, (0x0200 - 32));
go.ypos = (0x0200 + 32);
if (go.xpos > 0x0100){
go.xvel = RandBetween(-1, 0.2);
} else {
go.xvel = RandBetween(-0.2, 1);
};
go.yvel = RandBetween(-3, -4);
go.yacc = 0.01;
if (RandBetween(0, 100) < 50){
go.ypos = (0x0200 - go.ypos);
go.yvel = (go.yvel * -1);
go.yacc = (go.yacc * -1);
};
};
if (go.enemyType == 6){
go.radius = 24;
go.VelTowardsPlayer();
go.LimitVel(1);
go.GetDirFromVel();
go.yacc = RandBetween(0.5, 1);
};
}
function SetEdgeStartPos(go:gameobj, offset){
var x0:*;
var y0:*;
var x1:*;
var y1:*;
var pos:*;
x0 = offset;
y0 = offset;
x1 = (0x0200 - offset);
y1 = (0x0200 - offset);
pos = (32 + (Math.random() * (0x0200 - 64)));
if (Math.random() > 0.5){
if (Math.random() > 0.5){
go.xpos = x0;
go.ypos = pos;
} else {
go.xpos = x1;
go.ypos = pos;
};
} else {
if (Math.random() > 0.5){
go.xpos = pos;
go.ypos = y0;
} else {
go.xpos = pos;
go.ypos = y1;
};
};
}
function PlayerPickupCollision(){
var px:*;
var py:*;
var prad:*;
var i:int;
var go:gameobj;
px = player.xpos;
py = player.ypos;
prad = 16;
i = 0;
while (i < objs.numobjs) {
go = objs.objs[i];
if (go.active == true){
if (go.type == gameobj.gotype_PICKUP){
if (go.controlMode == 1){
if (ObjsCollided(px, py, prad, go.xpos, go.ypos, 16) == true){
go.controlIndex = numPickedUp;
numPickedUp++;
go.controlMode = 2;
GenerateExplosion(go.xpos, go.ypos, 1);
AddScore(go.xpos, go.ypos, 5, 1);
};
};
};
};
i++;
};
}
function SetPlayfieldStartPos(go:gameobj){
var x0:*;
var y0:*;
var x1:*;
var y1:*;
x0 = 32;
y0 = 32;
x1 = (0x0200 - 32);
y1 = (0x0200 - 32);
go.xpos = (x0 + (Math.random() * (x1 - x0)));
go.ypos = (y0 + (Math.random() * (y1 - y0)));
if (Math.abs((go.xpos - centrex)) < 128){
go.xpos = (go.xpos + 128);
} else {
if (Math.abs((go.ypos - centrey)) < 128){
go.ypos = (go.ypos + 128);
};
};
}
function InitLockout(domain:String){
lockedOut = true;
currentDomain = domain;
}
function RunLevelGetReady(){
}
function InitPreGameAd(){
InitStage();
adClip = new MovieClip();
addChild(adClip);
MochiAd.showPreGameAd({ad_finished:AdFinished, clip:adClip, id:"691b26522a20358a", res:"512x512"});
}
function InitBonus(go:gameobj, i:int){
var bonus:*;
bonus = bonusTable[i];
go.bonusType = bonus;
if (bonus == bonus_EXPLODE){
go.graphicID = gfx_bonusbomb;
};
if (bonus == bonus_SCORE){
go.graphicID = gfx_bonusscore;
};
if (bonus == bonus_HEALTH){
go.graphicID = gfx_bonushealth;
};
}
function ScaleUnitTo(v0:Number, v1:Number, scale:Number):Number{
var v2:Number;
var size:*;
size = ((v1 - v0) + 1);
v2 = ((size * scale) + v0);
return (v2);
}
public function enterScoreCallback(){
SetGameState(gameState_TITLE);
}
function SetEnemyInitialVelocity(go:gameobj){
var min:*;
var range:*;
min = 0.2;
range = 0.3;
go.xvel = (min + (Math.random() * range));
go.yvel = (min + (Math.random() * range));
if (Math.random() < 0.5){
go.xvel = (go.xvel * -1);
};
if (Math.random() < 0.5){
go.yvel = (go.yvel * -1);
};
}
function InitTitle(){
var buttonGroup0:RadioButtonGroup;
var buttonGroup1:RadioButtonGroup;
var startY:*;
var i:*;
var go:gameobj;
InitStage();
buttonGroup0 = new RadioButtonGroup("g1");
buttonGroup1 = new RadioButtonGroup("g2");
mc = AddMovieClip(0x0100, 0x0100, new TitlePage());
mc.buttonStart.addEventListener(MouseEvent.CLICK, startPressed);
mc.buttonHelp.addEventListener(MouseEvent.CLICK, helpPressed);
mc.buttonLongAnimals.addEventListener(MouseEvent.CLICK, longAnimalsPressed);
mc.buttonHighScores.addEventListener(MouseEvent.CLICK, highScoresPressed);
mc.buttonEasy.addEventListener(MouseEvent.CLICK, easyPressed);
mc.buttonMedium.addEventListener(MouseEvent.CLICK, mediumPressed);
mc.buttonHard.addEventListener(MouseEvent.CLICK, hardPressed);
mc.buttonSoundOn.addEventListener(MouseEvent.CLICK, soundOnPressed);
mc.buttonSoundOff.addEventListener(MouseEvent.CLICK, soundOffPressed);
mc.buttonSoundOn.group = buttonGroup0;
mc.buttonSoundOff.group = buttonGroup0;
mc.buttonEasy.group = buttonGroup1;
mc.buttonMedium.group = buttonGroup1;
mc.buttonHard.group = buttonGroup1;
mc.buttonEasy.label = "EASY";
mc.buttonMedium.label = "MEDIUM";
mc.buttonHard.label = "HARD";
mc.buttonSoundOn.label = "SOUND ON";
mc.buttonSoundOff.label = "SOUND OFF";
if (doSound == true){
mc.buttonSoundOn.selected = true;
};
if (doSound == false){
mc.buttonSoundOff.selected = true;
};
if (difficultyLevel == 0){
mc.buttonEasy.selected = true;
};
if (difficultyLevel == 1){
mc.buttonMedium.selected = true;
};
if (difficultyLevel == 2){
mc.buttonHard.selected = true;
};
levelTimer = 0;
currentLevel = 0;
InitLevelParameters();
startY = 550;
objs = new gameobjgroup(this);
backgroundObj = objs.AddObj(gameobj.gotype_BACKGROUND, 0x0100, 0x0100, zpos_BACKGROUND, 0);
player = objs.AddObj(gameobj.gotype_PLAYER, 0x0100, startY, zpos_PLAYER, 0);
repository = objs.AddObj(gameobj.gotype_REPOSITORY, 0x0100, 0x0100, zpos_REPOSITORY, gfx_repository);
repository.controlMode = 0;
repository.hasShadow = false;
linkLength = (requiredLinkLength = initialLinkLength);
player.xpos = 0x0100;
player.ypos = startY;
pickupGenTimer = 0;
numPickedUp = 0;
titleTimer = 100;
titleToX = 0x0100;
titleToY = startY;
ftime = 1;
i = 0;
while (i < 20) {
go = objs.AddObj(gameobj.gotype_PICKUP, 100, 100, zpos_NORMAL, 0);
if (go != null){
go.xpos = player.xpos;
go.ypos = player.ypos;
};
i++;
};
killedTimer = 0;
titleFirstWaitTime = 100;
}
function Collision(){
var j:int;
var index:int;
var link:gameobj;
PlayerEnemyCollision();
LinksEnemyCollision();
PlayerRepositoryCollision();
PlayerBonusCollision();
if (numPickedUp > 0){
index = 0;
j = 0;
while (j < numPickedUp) {
link = links[j];
if (link.active == true){
link.controlIndex = index;
index++;
};
j++;
};
numPickedUp = index;
};
PlayerPickupCollision();
j = 0;
while (j < numtoadd) {
GenerateExplosion(addXpos[j], addYpos[j], 0);
j++;
};
}
public function mediumPressed(event:MouseEvent){
difficultyLevel = 1;
}
function GenerateExplosion(xpos, ypos, type){
var go2:gameobj;
go2 = objs.AddObj(gameobj.gotype_EXPLOSION, 100, 100, zpos_EXPLOSION, 0);
if (go2 != null){
go2.xpos = xpos;
go2.ypos = ypos;
if (type == 0){
go2.graphicID = gfx_explode1;
PlaySound(sfx_hit);
};
if (type == 1){
go2.graphicID = gfx_explode_pickup;
PlaySound(sfx_pickup);
};
};
}
function AddMovieClip(x:Number, y:Number, mc:MovieClip):MovieClip{
mc.x = x;
mc.y = y;
addChild(mc);
return (mc);
}
function RunHighScores(){
}
function InitGameOver(){
AddMovieClip(0x0100, 0x0100, new GameOverPage());
levelTimer = 0;
initedScores = false;
}
function PlayerBonusCollision(){
var px:*;
var py:*;
var prad:*;
var i:int;
var go:gameobj;
px = player.xpos;
py = player.ypos;
prad = 16;
i = 0;
while (i < objs.numobjs) {
go = objs.objs[i];
if (go.active == true){
if (go.type == gameobj.gotype_BONUS){
if (ObjsCollided(px, py, prad, go.xpos, go.ypos, 8) == true){
DoBonus(go);
PlaySound(sfx_bonus);
go.active = false;
};
};
};
i++;
};
}
function MouseHandler(event:MouseEvent):void{
var xv:*;
var yv:*;
mousePosX = event.stageX;
mousePosY = event.stageY;
mouseVelX = (mousePosX - mouseOldPosX);
mouseVelY = (mousePosY - mouseOldPosY);
mouseOldPosX = mousePosX;
mouseOldPosY = mousePosY;
if (gameState != gameState_LEVEL_PLAY){
return;
};
if (player == null){
return;
};
xv = ((mousePosX - player.xpos) / 5);
yv = ((mousePosY - player.ypos) / 5);
player.xpos = (player.xpos + (xv * ftime));
player.ypos = (player.ypos + (yv * ftime));
}
function GenerateGraphics(){
graphicobjs = new Array();
graphicobjs.push(new DisplayObj(new BackgroundTileGFX(), 1));
graphicobjs.push(new DisplayObj(new PlayerGFX(), 1));
graphicobjs.push(new DisplayObj(new EnemyGFX(), 1));
graphicobjs.push(new DisplayObj(new PickupGFX(), 1));
graphicobjs.push(new DisplayObj(new BonusHealthGFX(), 1));
graphicobjs.push(new DisplayObj(new TimesGFX(), 1));
graphicobjs.push(new DisplayObj(new Explode1GFX(), 1));
graphicobjs.push(new DisplayObj(new PickupExplodeGFX(), 1));
graphicobjs.push(new DisplayObj(new RepositoryGFX(), 1));
graphicobjs.push(new DisplayObj(new Enemy1GFX(), 1));
graphicobjs.push(new DisplayObj(new Enemy2GFX(), 1));
graphicobjs.push(new DisplayObj(new Enemy3GFX(), 1));
graphicobjs.push(new DisplayObj(new Enemy4GFX(), 1));
graphicobjs.push(new DisplayObj(new Enemy5GFX(), 1));
graphicobjs.push(new DisplayObj(new Enemy6GFX(), 1));
graphicobjs.push(new DisplayObj(new SmartBombExplosionGFX(), 1));
graphicobjs.push(new DisplayObj(new BonusScoreGFX(), 1));
graphicobjs.push(new DisplayObj(new BonusExplodeGFX(), 1));
graphicobjs.push(new DisplayObj(new CollectBar(), 1));
graphicobjs.push(new DisplayObj(new HealthBar(), 1));
AddNumberBitmaps();
}
function InitGame(){
levelTimer = 0;
currentScore = 0;
currentLevel = 0;
doSound = true;
difficultyLevel = 1;
gameplayTable = new Array();
AddLevelDesc(100, 0, 0, 0, 0, 0, 0);
AddLevelDesc(0, 100, 0, 0, 0, 0, 0);
AddLevelDesc(0, 0, 100, 0, 0, 0, 0);
AddLevelDesc(0, 0, 0, 100, 0, 0, 0);
AddLevelDesc(0, 0, 0, 0, 100, 0, 0);
AddLevelDesc(0, 0, 0, 0, 0, 100, 0);
AddLevelDesc(0, 0, 0, 0, 0, 0, 100);
AddLevelDesc(50, 50, 0, 0, 0, 0, 0);
AddLevelDesc(0, 50, 50, 0, 0, 0, 0);
AddLevelDesc(0, 0, 50, 50, 0, 0, 0);
AddLevelDesc(0, 0, 0, 50, 50, 0, 0);
AddLevelDesc(0, 0, 0, 0, 0, 50, 50);
AddLevelDesc(50, 0, 0, 0, 0, 0, 50);
AddLevelDesc(33, 33, 34, 0, 0, 0, 0);
AddLevelDesc(0, 33, 33, 34, 0, 0, 0);
AddLevelDesc(0, 0, 33, 33, 34, 0, 0);
AddLevelDesc(0, 0, 0, 33, 33, 34, 0);
AddLevelDesc(0, 0, 0, 0, 33, 33, 34);
AddLevelDesc(34, 0, 0, 0, 0, 33, 33);
AddLevelDesc(33, 34, 0, 0, 0, 0, 33);
AddLevelDesc(14, 14, 14, 14, 14, 14, 16);
bonusTable = new Array();
bonusTable.push(bonus_HEALTH);
bonusTable.push(bonus_EXPLODE);
bonusTable.push(bonus_SCORE);
}
function LevelUp(){
currentLevel++;
if (currentLevel >= gameplayTable.length){
currentLevel = (gameplayTable.length - 1);
};
InitLevelParameters();
AddMovieClip(0x0100, 0x0100, new LevelUpPage());
}
function InitLevelParameters(){
var hardestLevel:Number;
var l:Number;
hardestLevel = 20;
l = currentLevel;
if (l > hardestLevel){
l = hardestLevel;
};
l = ((1 / hardestLevel) * l);
if (difficultyLevel == 0){
numToOpenRepository = ScaleUnitTo(20, 30, l);
bonusGenTimeMax = 500;
pickupGenTimeMax = 50;
enemyGenTimeMax = ScaleUnitTo(400, 200, l);
};
if (difficultyLevel == 1){
numToOpenRepository = ScaleUnitTo(30, 40, l);
bonusGenTimeMax = 500;
pickupGenTimeMax = 60;
enemyGenTimeMax = ScaleUnitTo(300, 150, l);
};
if (difficultyLevel == 2){
numToOpenRepository = ScaleUnitTo(40, 50, l);
bonusGenTimeMax = 500;
pickupGenTimeMax = 70;
enemyGenTimeMax = ScaleUnitTo(200, 100, l);
};
}
public function soundOnPressed(event:MouseEvent){
if (doSound == true){
return;
};
musicChannel = musicSound.play(0, 999999, musicSoundTransform);
doSound = true;
}
function RunLockout(){
}
public function KillAllEnemies(px:Number, py:Number, radius:Number){
var i:int;
var go:gameobj;
i = 0;
while (i < objs.numobjs) {
go = objs.objs[i];
if (go.active == true){
if (go.type == gameobj.gotype_ENEMY){
if (GetDistanceBetween(go.xpos, go.ypos, px, py) < radius){
GenerateExplosion(go.xpos, go.ypos, 0);
AddScore(go.xpos, go.ypos, 50, 1);
go.active = false;
};
};
};
i++;
};
}
public function startPressed(event:MouseEvent){
SetGameState(gameState_LEVEL_PLAY);
}
function RunGameOver(){
levelTimer = (levelTimer + ftime);
if (initedScores == false){
if (levelTimer > 300){
initedScores = true;
mochiScores.EnterHighScores(this, currentScore, enterScoreCallback);
};
};
}
function keyDownListener(event:KeyboardEvent):void{
if (event.keyCode == KEY_LEFT){
leftDown = true;
};
if (event.keyCode == KEY_RIGHT){
rightDown = true;
};
if (event.keyCode == KEY_SPACE){
spaceDown = true;
};
}
function calcFrameTime(){
var oldTime:Number;
var fps:Number;
oldTime = currentTime;
currentTime = getTimer();
if (currentTime < oldTime){
oldTime = (currentTime - 100);
};
if (currentTime > (oldTime + (100 * 10))){
oldTime = (100 * 10);
};
fps = 100;
ftime = ((1 / (1000 / fps)) * (currentTime - oldTime));
}
function MakeLinksList(){
var i:int;
var go:gameobj;
i = 0;
while (i < objs.numobjs) {
go = objs.objs[i];
if (go.active == true){
if (go.type == gameobj.gotype_PICKUP){
if (go.controlMode == 2){
links[go.controlIndex] = go;
};
};
};
i++;
};
}
function ChangeEnemySpeed(vel:Number){
var i:int;
var go:gameobj;
i = 0;
while (i < objs.numobjs) {
go = objs.objs[i];
if (go.active == true){
if (go.type == gameobj.gotype_ENEMY){
go.xvel = (go.xvel * vel);
go.yvel = (go.yvel * vel);
};
};
i++;
};
}
public function helpPressed(event:MouseEvent){
navigateToURL(new URLRequest("http://www.longanimalsgames.com/Games/Frenziac/FrenziacHelp.html"));
}
function GetDistanceToPlayer(xpos:Number, ypos:Number):Number{
var xd:*;
var yd:*;
var dist:*;
xd = (xpos - player.xpos);
yd = (ypos - player.ypos);
dist = Math.sqrt(((xd * xd) + (yd * yd)));
return (dist);
}
function InitLevelComplete(){
}
function InitHighScores(){
}
function Render(){
backgroundObj.Render(this);
objs.Render();
}
function InitStage(){
var i:int;
i = (this.numChildren - 1);
while (i >= 0) {
removeChildAt(i);
i--;
};
addChild(screenB);
}
public function easyPressed(event:MouseEvent){
difficultyLevel = 0;
}
function SetGameState(gs:int):void{
gameState = gs;
Mouse.show();
switch (gameState){
case gameState_PREGAMEAD:
InitPreGameAd();
break;
case gameState_TITLE:
InitTitle();
break;
case gameState_HIGHSCORES:
InitHighScores();
break;
case gameState_LEVEL_GETREADY:
InitLevelGetReady();
break;
case gameState_LEVEL_PLAY:
InitLevel();
break;
case gameState_LEVEL_COMPLETE:
InitLevelComplete();
break;
case gameState_GAMEOVER:
InitGameOver();
break;
};
}
public function longAnimalsPressed(event:MouseEvent){
navigateToURL(new URLRequest("http://www.longanimalsgames.com"));
}
function RunLevel(){
UpdateGameplay();
objs.Update();
MakeLinksList();
UpdateLinks();
if (killedTimer == 0){
Collision();
};
Render();
scoretxt.text = currentScore;
scoretxt.setTextFormat(tf_small);
if (killedTimer == 0){
if (playerHealth < 1){
killedTimer = 50;
};
} else {
killedTimer = (killedTimer - ftime);
if (killedTimer <= 10){
SetGameState(gameState_GAMEOVER);
};
};
}
function PlayerEnemyCollision(){
var px:*;
var py:*;
var prad:*;
var i:int;
var go:gameobj;
px = player.xpos;
py = player.ypos;
prad = 16;
i = 0;
while (i < objs.numobjs) {
go = objs.objs[i];
if (go.active == true){
if (go.type == gameobj.gotype_ENEMY){
if (ObjsCollided(px, py, prad, go.xpos, go.ypos, go.radius) == true){
AddHealth(-1);
GenerateExplosion(go.xpos, go.ypos, 0);
go.active = false;
};
};
};
i++;
};
}
function AdFinished(){
SetGameState(gameState_TITLE);
}
function SmartBomb(){
var go1:gameobj;
go1 = objs.AddObj(gameobj.gotype_SMARTBOMB, 100, 100, zpos_NORMAL, 0);
if (go1 != null){
go1.xpos = player.xpos;
go1.ypos = player.ypos;
go1.frameVel = 1;
go1.yacc = 150;
};
}
function SplitEnemies(){
var enemyList:Array;
var go:gameobj;
var i:int;
var go1:gameobj;
enemyList = new Array();
i = 0;
while (i < objs.numobjs) {
go = objs.objs[i];
if (go.active == true){
if (go.type == gameobj.gotype_ENEMY){
enemyList.push(go);
};
};
i++;
};
i = 0;
while (i < enemyList.length) {
go = enemyList[i];
go1 = objs.AddObj(gameobj.gotype_ENEMY, 100, 100, zpos_NORMAL, 0);
if (go1 != null){
SetEnemyInitialVelocity(go1);
go1.xpos = (go.xpos + 1);
go1.ypos = (go.ypos + 1);
};
i++;
};
}
}
}//package
Section 47
//MochiAd (MochiAd)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.system.*;
public class MochiAd {
public function MochiAd(){
super();
}
public static function getVersion():String{
return ("2.1");
}
public static function showTimedAd(options:Object):void{
MochiAd.showInterLevelAd(options);
}
public static function _allowDomains(server:String):String{
var hostname:String;
hostname = server.split("/")[2].split(":")[0];
Security.allowDomain("*");
Security.allowDomain(hostname);
Security.allowInsecureDomain("*");
Security.allowInsecureDomain(hostname);
return (hostname);
}
public static function load(options:Object):MovieClip{
var DEFAULTS:Object;
var clip:Object;
var depth:Number;
var mc:MovieClip;
var wh:Array;
var lv:URLVariables;
var k:String;
var server:String;
var hostname:String;
var lc:LocalConnection;
var name:String;
var loader:Loader;
var f:Function;
var g:Function;
var req:URLRequest;
var v:Object;
var options = options;
DEFAULTS = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"};
options = MochiAd._parseOptions(options, DEFAULTS);
options.swfv = 9;
options.mav = MochiAd.getVersion();
clip = options.clip;
if (!MochiAd._isNetworkAvailable()){
return (null);
};
if (clip._mochiad_loaded){
return (null);
};
depth = options.depth;
delete options.depth;
mc = createEmptyMovieClip(clip, "_mochiad", depth);
wh = MochiAd._getRes(options, clip);
options.res = ((wh[0] + "x") + wh[1]);
options.server = (options.server + options.id);
delete options.id;
clip._mochiad_loaded = true;
if (clip.loaderInfo.loaderURL.indexOf("http") == 0){
options.as3_swf = clip.loaderInfo.loaderURL;
};
lv = new URLVariables();
for (k in options) {
v = options[k];
if (!(v is Function)){
lv[k] = v;
};
};
server = lv.server;
delete lv.server;
hostname = _allowDomains(server);
lc = new LocalConnection();
lc.client = mc;
name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_");
lc.allowDomain("*", "localhost");
lc.allowInsecureDomain("*", "localhost");
lc.connect(name);
mc.lc = lc;
lv.lc = name;
lv.st = getTimer();
loader = new Loader();
f = function (ev:Object):void{
mc._mochiad_ctr_failed = true;
};
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, f);
g = function (ev:Object):void{
MochiAd.unload(clip);
};
loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g);
req = new URLRequest((server + ".swf"));
req.contentType = "application/x-www-form-urlencoded";
req.method = URLRequestMethod.POST;
req.data = lv;
loader.load(req);
mc.addChild(loader);
mc._mochiad_ctr = loader;
return (mc);
}
public static function sendHighScore(options:Object, callbackObj:Object, callbackMethod:Object=null):Boolean{
var lc:MovieClip;
lc = MochiAd._loadCommunicator({clip:options.clip, id:options.id});
if (!lc){
return (false);
};
lc.doSend(["sendHighScore", options], callbackObj, callbackMethod);
return (true);
}
public static function _parseOptions(options:Object, defaults:Object):Object{
var optcopy:Object;
var k:String;
var pairs:Array;
var i:Number;
var kv:Array;
optcopy = {};
for (k in defaults) {
optcopy[k] = defaults[k];
};
if (options){
for (k in options) {
optcopy[k] = options[k];
};
};
options = optcopy.clip.loaderInfo.parameters.mochiad_options;
if (options){
pairs = options.split("&");
i = 0;
while (i < pairs.length) {
kv = pairs[i].split("=");
optcopy[unescape(kv[0])] = unescape(kv[1]);
i++;
};
};
return (optcopy);
}
public static function _isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function unload(clip:Object):Boolean{
if (((clip.clip) && (clip.clip._mochiad))){
clip = clip.clip;
};
if (!clip._mochiad){
return (false);
};
if (clip._mochiad.onUnload){
clip._mochiad.onUnload();
};
clip.removeChild(clip._mochiad);
delete clip._mochiad_loaded;
delete clip._mochiad;
return (true);
}
public static function showInterLevelAd(options:Object):void{
var DEFAULTS:Object;
var clip:Object;
var ad_msec:Number;
var ad_timeout:Number;
var fadeout_time:Number;
var mc:MovieClip;
var wh:Array;
var w:Number;
var h:Number;
var chk:MovieClip;
var options = options;
DEFAULTS = {ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{
this.clip.stop();
}, ad_finished:function ():void{
this.clip.play();
}};
options = MochiAd._parseOptions(options, DEFAULTS);
clip = options.clip;
ad_msec = 11000;
ad_timeout = options.ad_timeout;
delete options.ad_timeout;
fadeout_time = options.fadeout_time;
delete options.fadeout_time;
if (!MochiAd.load(options)){
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
options.ad_finished();
};
wh = MochiAd._getRes(options, clip);
w = wh[0];
h = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.ad_msec = ad_msec;
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function ():void{
var p:Number;
p = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
if (p > 0){
this.parent.alpha = (p * 0.01);
} else {
MochiAd.unload(clip);
delete this["onEnterFrame"];
};
};
mc.unloadAd = function ():void{
MochiAd.unload(clip);
};
mc.adjustProgress = function (msec:Number):void{
var _chk:Object;
_chk = mc._mochiad_wait;
_chk.server_control = true;
_chk.started = getTimer();
_chk.ad_msec = (msec - 250);
};
chk["onEnterFrame"] = function ():void{
var ad_clip:Object;
var elapsed:Number;
var finished:Boolean;
var total:Number;
ad_clip = this.parent._mochiad_ctr;
elapsed = (getTimer() - this.started);
finished = false;
if (!chk.showing){
total = ad_clip.loaderInfo.bytesTotal;
if ((((total > 0)) || (("number" == "undefined")))){
chk.showing = true;
chk.started = getTimer();
} else {
if (elapsed > chk.ad_timeout){
finished = true;
};
};
};
if ((((elapsed > chk.ad_msec)) || (this.parent._mochiad_ctr_failed))){
finished = true;
};
if (finished){
if (this.server_control){
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = this.fadeFunction;
};
};
};
doOnEnterFrame(chk);
}
public static function _getRes(options:Object, clip:Object):Array{
var b:Object;
var w:Number;
var h:Number;
var xy:Array;
b = clip.getBounds(clip.root);
w = 0;
h = 0;
if (typeof(options.res) != "undefined"){
xy = options.res.split("x");
w = parseFloat(xy[0]);
h = parseFloat(xy[1]);
} else {
w = (b.xMax - b.xMin);
h = (b.yMax - b.yMin);
};
if ((((w == 0)) || ((h == 0)))){
w = clip.stage.stageWidth;
h = clip.stage.stageHeight;
};
return ([w, h]);
}
public static function createEmptyMovieClip(parent:Object, name:String, depth:Number):MovieClip{
var mc:MovieClip;
mc = new MovieClip();
if (((false) && (depth))){
parent.addChildAt(mc, depth);
} else {
parent.addChild(mc);
};
parent[name] = mc;
mc["_name"] = name;
return (mc);
}
public static function _loadCommunicator(options:Object):MovieClip{
var DEFAULTS:Object;
var clip:Object;
var clipname:String;
var server:String;
var depth:Number;
var mc:MovieClip;
var lv:URLVariables;
var k:String;
var lc:LocalConnection;
var name:String;
var req:URLRequest;
var loader:Loader;
var options = options;
DEFAULTS = {com_server:"http://x.mochiads.com/com/1/", method:"loadCommunicator", depth:10337, id:"_UNKNOWN_"};
options = MochiAd._parseOptions(options, DEFAULTS);
options.swfv = 9;
options.mav = MochiAd.getVersion();
clip = options.clip;
clipname = ("_mochiad_com_" + options.id);
if (!MochiAd._isNetworkAvailable()){
return (null);
};
if (clip[clipname]){
return (clip[clipname]);
};
server = (options.com_server + options.id);
MochiAd._allowDomains(server);
delete options.id;
delete options.com_server;
depth = options.depth;
delete options.depth;
mc = createEmptyMovieClip(clip, clipname, depth);
lv = new URLVariables();
for (k in options) {
lv[k] = options[k];
};
lc = new LocalConnection();
lc.client = mc;
name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_");
lc.allowDomain("*", "localhost");
lc.allowInsecureDomain("*", "localhost");
lc.connect(name);
mc.name = name;
mc.lc = lc;
lv.lc = name;
mc._id = 0;
mc._queue = [];
mc.rpcResult = function (cb:Object):void{
var cblst:Array;
var args:Array;
var i:Number;
var method:Object;
var obj:Object;
cb = parseInt(cb.toString());
cblst = mc._callbacks[cb];
if (typeof(cblst) == "undefined"){
return;
};
delete mc._callbacks[cb];
args = [];
i = 2;
while (i < cblst.length) {
args.push(cblst[i]);
i++;
};
i = 1;
while (i < arguments.length) {
args.push(arguments[i]);
i++;
};
method = cblst[1];
obj = cblst[0];
if (((obj) && ((typeof(method) == "string")))){
method = obj[method];
};
if (typeof(method) == "function"){
method.apply(obj, args);
};
};
mc._didConnect = function (endpoint:String):void{
var q:Array;
var ds:Function;
var i:Number;
var item:Array;
mc._endpoint = endpoint;
q = mc._queue;
delete mc._queue;
ds = mc.doSend;
i = 0;
while (i < q.length) {
item = q[i];
ds.apply(this, item);
i++;
};
};
mc.doSend = function (args:Array, cbobj:Object, cbfn:Object):void{
var id:Number;
var slc:LocalConnection;
var qargs:Array;
var i:Number;
if (mc._endpoint == null){
qargs = [];
i = 0;
while (i < arguments.length) {
qargs.push(arguments[i]);
i++;
};
mc._queue.push(qargs);
return;
};
mc._id = (mc._id + 1);
id = mc._id;
mc._callbacks[id] = [cbobj, ((cbfn) || (cbobj))];
slc = new LocalConnection();
slc.send(mc._endpoint, "rpc", id, args);
};
mc._callbacks = {};
mc._callbacks[0] = [mc, "_didConnect"];
lv.st = getTimer();
req = new URLRequest((server + ".swf"));
req.contentType = "application/x-www-form-urlencoded";
req.method = URLRequestMethod.POST;
req.data = lv;
loader = new Loader();
loader.load(req);
mc.addChild(loader);
mc._mochiad_com = loader;
return (mc);
}
public static function showPreGameAd(options:Object):void{
var DEFAULTS:Object;
var clip:Object;
var ad_msec:Number;
var ad_timeout:Number;
var fadeout_time:Number;
var mc:MovieClip;
var wh:Array;
var w:Number;
var h:Number;
var chk:MovieClip;
var bar:MovieClip;
var bar_color:Number;
var bar_background:Number;
var bar_outline:Number;
var backing_mc:MovieClip;
var backing:Object;
var inside_mc:MovieClip;
var inside:Object;
var outline_mc:MovieClip;
var outline:Object;
var complete:Boolean;
var unloaded:Boolean;
var f:Function;
var r:MovieClip;
var options = options;
DEFAULTS = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, ad_started:function ():void{
this.clip.stop();
}, ad_finished:function ():void{
this.clip.play();
}};
options = MochiAd._parseOptions(options, DEFAULTS);
clip = options.clip;
ad_msec = 11000;
ad_timeout = options.ad_timeout;
delete options.ad_timeout;
fadeout_time = options.fadeout_time;
delete options.fadeout_time;
if (!MochiAd.load(options)){
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
var fn:Function;
fn = function ():void{
options.ad_finished();
};
setTimeout(fn, 100);
};
wh = MochiAd._getRes(options, clip);
w = wh[0];
h = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.x = (w * -0.5);
chk.y = (h * -0.5);
bar = createEmptyMovieClip(chk, "_mochiad_bar", 4);
bar.x = 10;
bar.y = (h - 20);
bar_color = options.color;
delete options.color;
bar_background = options.background;
delete options.background;
bar_outline = options.outline;
delete options.outline;
backing_mc = createEmptyMovieClip(bar, "_outline", 1);
backing = backing_mc.graphics;
backing.beginFill(bar_background);
backing.moveTo(0, 0);
backing.lineTo((w - 20), 0);
backing.lineTo((w - 20), 10);
backing.lineTo(0, 10);
backing.lineTo(0, 0);
backing.endFill();
inside_mc = createEmptyMovieClip(bar, "_inside", 2);
inside = inside_mc.graphics;
inside.beginFill(bar_color);
inside.moveTo(0, 0);
inside.lineTo((w - 20), 0);
inside.lineTo((w - 20), 10);
inside.lineTo(0, 10);
inside.lineTo(0, 0);
inside.endFill();
inside_mc.scaleX = 0;
outline_mc = createEmptyMovieClip(bar, "_outline", 3);
outline = outline_mc.graphics;
outline.lineStyle(0, bar_outline, 100);
outline.moveTo(0, 0);
outline.lineTo((w - 20), 0);
outline.lineTo((w - 20), 10);
outline.lineTo(0, 10);
outline.lineTo(0, 0);
chk.ad_msec = ad_msec;
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
chk.last_pcnt = 0;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function ():void{
var p:Number;
p = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
if (p > 0){
this.parent.alpha = (p * 0.01);
} else {
MochiAd.unload(clip);
delete this["onEnterFrame"];
};
};
complete = false;
unloaded = false;
f = function (e:Event):void{
complete = true;
if (unloaded){
MochiAd.unload(clip);
};
};
clip.loaderInfo.addEventListener(Event.COMPLETE, f);
if ((clip.root is MovieClip)){
r = (clip.root as MovieClip);
if (r.framesLoaded >= r.totalFrames){
complete = true;
};
};
mc.unloadAd = function ():void{
unloaded = true;
if (complete){
MochiAd.unload(clip);
};
};
mc.adjustProgress = function (msec:Number):void{
var _chk:Object;
_chk = mc._mochiad_wait;
_chk.server_control = true;
_chk.started = getTimer();
_chk.ad_msec = msec;
};
chk["onEnterFrame"] = function ():void{
var _clip:Object;
var ad_clip:Object;
var elapsed:Number;
var finished:Boolean;
var clip_total:Number;
var clip_loaded:Number;
var clip_pcnt:Number;
var ad_pcnt:Number;
var _inside:Object;
var pcnt:Number;
var total:Number;
if (!this.parent.parent){
delete this["onEnterFrame"];
return;
};
_clip = this.parent.parent.root;
ad_clip = this.parent._mochiad_ctr;
elapsed = (getTimer() - this.started);
finished = false;
clip_total = _clip.loaderInfo.bytesTotal;
clip_loaded = _clip.loaderInfo.bytesLoaded;
clip_pcnt = ((100 * clip_loaded) / clip_total);
ad_pcnt = ((100 * elapsed) / chk.ad_msec);
_inside = this._mochiad_bar._inside;
pcnt = Math.min(100, Math.min(((clip_pcnt) || (0)), ad_pcnt));
pcnt = Math.max(this.last_pcnt, pcnt);
this.last_pcnt = pcnt;
_inside.scaleX = (pcnt * 0.01);
if (!chk.showing){
total = ad_clip.loaderInfo.bytesTotal;
if ((((total > 0)) || (("number" == "undefined")))){
chk.showing = true;
chk.started = getTimer();
} else {
if (elapsed > chk.ad_timeout){
finished = true;
};
};
};
if ((((elapsed > chk.ad_msec)) || (this.parent._mochiad_ctr_failed))){
finished = true;
};
if (((complete) && (finished))){
if (this.server_control){
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = chk.fadeFunction;
};
};
};
doOnEnterFrame(chk);
}
public static function showPreloaderAd(options:Object):void{
MochiAd.showPreGameAd(options);
}
public static function fetchHighScores(options:Object, callbackObj:Object, callbackMethod:Object=null):Boolean{
var lc:MovieClip;
lc = MochiAd._loadCommunicator({clip:options.clip, id:options.id});
if (!lc){
return (false);
};
lc.doSend(["fetchHighScores", options], callbackObj, callbackMethod);
return (true);
}
public static function doOnEnterFrame(mc:MovieClip):void{
var f:Function;
var mc = mc;
f = function (ev:Object):void{
if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){
mc.onEnterFrame();
} else {
mc.removeEventListener(Event.ENTER_FRAME, f);
};
};
mc.addEventListener(Event.ENTER_FRAME, f);
}
}
}//package
Section 48
//Music (Music)
package {
import flash.media.*;
public dynamic class Music extends Sound {
public function Music(){
super();
}
}
}//package
Section 49
//PickupExplodeGFX (PickupExplodeGFX)
package {
import flash.display.*;
public dynamic class PickupExplodeGFX extends MovieClip {
public function PickupExplodeGFX(){
super();
}
}
}//package
Section 50
//PickupGFX (PickupGFX)
package {
import flash.display.*;
public dynamic class PickupGFX extends MovieClip {
public function PickupGFX(){
super();
}
}
}//package
Section 51
//PlayerGFX (PlayerGFX)
package {
import flash.display.*;
public dynamic class PlayerGFX extends MovieClip {
public function PlayerGFX(){
super();
}
}
}//package
Section 52
//RadioButton_disabledIcon (RadioButton_disabledIcon)
package {
import flash.display.*;
public dynamic class RadioButton_disabledIcon extends MovieClip {
public function RadioButton_disabledIcon(){
super();
}
}
}//package
Section 53
//RadioButton_downIcon (RadioButton_downIcon)
package {
import flash.display.*;
public dynamic class RadioButton_downIcon extends MovieClip {
public function RadioButton_downIcon(){
super();
}
}
}//package
Section 54
//RadioButton_overIcon (RadioButton_overIcon)
package {
import flash.display.*;
public dynamic class RadioButton_overIcon extends MovieClip {
public function RadioButton_overIcon(){
super();
}
}
}//package
Section 55
//RadioButton_selectedDisabledIcon (RadioButton_selectedDisabledIcon)
package {
import flash.display.*;
public dynamic class RadioButton_selectedDisabledIcon extends MovieClip {
public function RadioButton_selectedDisabledIcon(){
super();
}
}
}//package
Section 56
//RadioButton_selectedDownIcon (RadioButton_selectedDownIcon)
package {
import flash.display.*;
public dynamic class RadioButton_selectedDownIcon extends MovieClip {
public function RadioButton_selectedDownIcon(){
super();
}
}
}//package
Section 57
//RadioButton_selectedOverIcon (RadioButton_selectedOverIcon)
package {
import flash.display.*;
public dynamic class RadioButton_selectedOverIcon extends MovieClip {
public function RadioButton_selectedOverIcon(){
super();
}
}
}//package
Section 58
//RadioButton_selectedUpIcon (RadioButton_selectedUpIcon)
package {
import flash.display.*;
public dynamic class RadioButton_selectedUpIcon extends MovieClip {
public function RadioButton_selectedUpIcon(){
super();
}
}
}//package
Section 59
//RadioButton_upIcon (RadioButton_upIcon)
package {
import flash.display.*;
public dynamic class RadioButton_upIcon extends MovieClip {
public function RadioButton_upIcon(){
super();
}
}
}//package
Section 60
//RepositoryGFX (RepositoryGFX)
package {
import flash.display.*;
public dynamic class RepositoryGFX extends MovieClip {
public function RepositoryGFX(){
super();
}
}
}//package
Section 61
//sfx1 (sfx1)
package {
import flash.media.*;
public dynamic class sfx1 extends Sound {
public function sfx1(){
super();
}
}
}//package
Section 62
//sfx2 (sfx2)
package {
import flash.media.*;
public dynamic class sfx2 extends Sound {
public function sfx2(){
super();
}
}
}//package
Section 63
//sfx3 (sfx3)
package {
import flash.media.*;
public dynamic class sfx3 extends Sound {
public function sfx3(){
super();
}
}
}//package
Section 64
//SmartBombExplosionGFX (SmartBombExplosionGFX)
package {
import flash.display.*;
public dynamic class SmartBombExplosionGFX extends MovieClip {
public function SmartBombExplosionGFX(){
super();
}
}
}//package
Section 65
//Tile1GFX (Tile1GFX)
package {
import flash.display.*;
public dynamic class Tile1GFX extends BitmapData {
public function Tile1GFX(w:Number, h:Number){
super(w, h);
}
}
}//package
Section 66
//TimesGFX (TimesGFX)
package {
import flash.display.*;
public dynamic class TimesGFX extends MovieClip {
public function TimesGFX(){
super();
}
}
}//package
Section 67
//Title (Title)
package {
import flash.display.*;
public dynamic class Title extends MovieClip {
public function Title(){
super();
}
}
}//package
Section 68
//TitlePage (TitlePage)
package {
import fl.controls.*;
import flash.display.*;
public dynamic class TitlePage extends MovieClip {
public var buttonSoundOff:RadioButton;
public var buttonHighScores:ButtonHighScores;
public var buttonHard:RadioButton;
public var buttonLongAnimals:SimpleButton;
public var buttonStart:ButtonStart;
public var buttonEasy:RadioButton;
public var buttonMedium:RadioButton;
public var buttonHelp:SimpleButton;
public var buttonSoundOn:RadioButton;
public function TitlePage(){
super();
}
}
}//package