Section 1
//gameslist_24 (bumperboatrush_fla.gameslist_24)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class gameslist_24 extends MovieClip {
public function gameslist_24(){
addFrameScript(80, frame81);
}
function frame81(){
stop();
}
}
}//package bumperboatrush_fla
Section 2
//loading_2 (bumperboatrush_fla.loading_2)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class loading_2 extends MovieClip {
public function loading_2(){
addFrameScript(0, frame1, 99, frame100);
}
function frame100(){
stop();
}
function frame1(){
stop();
}
}
}//package bumperboatrush_fla
Section 3
//particular_30 (bumperboatrush_fla.particular_30)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class particular_30 extends MovieClip {
public function particular_30(){
addFrameScript(28, frame29);
}
function frame29(){
stop();
}
}
}//package bumperboatrush_fla
Section 4
//pause_71 (bumperboatrush_fla.pause_71)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class pause_71 extends MovieClip {
public function pause_71(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package bumperboatrush_fla
Section 5
//ren_43 (bumperboatrush_fla.ren_43)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class ren_43 extends MovieClip {
public function ren_43(){
addFrameScript(239, frame240);
}
function frame240(){
stop();
}
}
}//package bumperboatrush_fla
Section 6
//ren_52 (bumperboatrush_fla.ren_52)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class ren_52 extends MovieClip {
public function ren_52(){
addFrameScript(179, frame180);
}
function frame180(){
stop();
}
}
}//package bumperboatrush_fla
Section 7
//Timeline_1 (bumperboatrush_fla.Timeline_1)
package bumperboatrush_fla {
import flash.events.*;
import flash.display.*;
import flash.net.*;
public dynamic class Timeline_1 extends MovieClip {
public var con:SimpleButton;
public var loadMC:MovieClip;
public var mc:SimpleButton;
public function Timeline_1(){
addFrameScript(0, frame1, 12, frame13);
}
public function onClick(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://www.gameslist.com"));
}
function frame1(){
stop();
mc.addEventListener(MouseEvent.CLICK, onClick);
}
function frame13(){
stop();
con.addEventListener(MouseEvent.CLICK, onClick1);
}
public function onClick1(_arg1:MouseEvent):void{
MovieClip(this.parent).gotoAndStop(2);
}
}
}//package bumperboatrush_fla
Section 8
//Timeline_23 (bumperboatrush_fla.Timeline_23)
package bumperboatrush_fla {
import flash.events.*;
import flash.display.*;
import flash.net.*;
public dynamic class Timeline_23 extends MovieClip {
public var mc:SimpleButton;
public function Timeline_23(){
addFrameScript(0, frame1, 58, frame59, 119, frame120);
}
function frame59(){
}
function frame120(){
MovieClip(this.parent).gotoAndStop(5);
}
function frame1(){
mc.addEventListener(MouseEvent.CLICK, onClick);
}
public function onClick(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://www.gameslist.com"));
}
}
}//package bumperboatrush_fla
Section 9
//Timeline_42 (bumperboatrush_fla.Timeline_42)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class Timeline_42 extends MovieClip {
public function Timeline_42(){
addFrameScript(230, frame231);
}
function frame231(){
stop();
}
}
}//package bumperboatrush_fla
Section 10
//Timeline_51 (bumperboatrush_fla.Timeline_51)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class Timeline_51 extends MovieClip {
public function Timeline_51(){
addFrameScript(177, frame178);
}
function frame178(){
stop();
}
}
}//package bumperboatrush_fla
Section 11
//Timeline_78 (bumperboatrush_fla.Timeline_78)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class Timeline_78 extends MovieClip {
public function Timeline_78(){
addFrameScript(14, frame15);
}
function frame15(){
MovieClip(this.parent).gotoAndStop(1);
}
}
}//package bumperboatrush_fla
Section 12
//Timeline_81 (bumperboatrush_fla.Timeline_81)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class Timeline_81 extends MovieClip {
public function Timeline_81(){
addFrameScript(14, frame15);
}
function frame15(){
MovieClip(this.parent).gotoAndStop(1);
}
}
}//package bumperboatrush_fla
Section 13
//Timeline_83 (bumperboatrush_fla.Timeline_83)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class Timeline_83 extends MovieClip {
public function Timeline_83(){
addFrameScript(14, frame15);
}
function frame15(){
MovieClip(this.parent).gotoAndStop(1);
}
}
}//package bumperboatrush_fla
Section 14
//Timeline_87 (bumperboatrush_fla.Timeline_87)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class Timeline_87 extends MovieClip {
public function Timeline_87(){
addFrameScript(14, frame15);
}
function frame15(){
MovieClip(this.parent).gotoAndStop(1);
}
}
}//package bumperboatrush_fla
Section 15
//Timeline_88 (bumperboatrush_fla.Timeline_88)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class Timeline_88 extends MovieClip {
public function Timeline_88(){
addFrameScript(14, frame15);
}
function frame15(){
MovieClip(this.parent).gotoAndStop(1);
}
}
}//package bumperboatrush_fla
Section 16
//Timeline_89 (bumperboatrush_fla.Timeline_89)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class Timeline_89 extends MovieClip {
public function Timeline_89(){
addFrameScript(14, frame15);
}
function frame15(){
MovieClip(this.parent).gotoAndStop(1);
}
}
}//package bumperboatrush_fla
Section 17
//Timeline_91 (bumperboatrush_fla.Timeline_91)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class Timeline_91 extends MovieClip {
public function Timeline_91(){
addFrameScript(14, frame15);
}
function frame15(){
MovieClip(this.parent).gotoAndStop(1);
}
}
}//package bumperboatrush_fla
Section 18
//Timeline_92 (bumperboatrush_fla.Timeline_92)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class Timeline_92 extends MovieClip {
public function Timeline_92(){
addFrameScript(14, frame15);
}
function frame15(){
MovieClip(this.parent).gotoAndStop(1);
}
}
}//package bumperboatrush_fla
Section 19
//Timeline_93 (bumperboatrush_fla.Timeline_93)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class Timeline_93 extends MovieClip {
public function Timeline_93(){
addFrameScript(14, frame15);
}
function frame15(){
MovieClip(this.parent).gotoAndStop(1);
}
}
}//package bumperboatrush_fla
Section 20
//Timeline_96 (bumperboatrush_fla.Timeline_96)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class Timeline_96 extends MovieClip {
public function Timeline_96(){
addFrameScript(14, frame15);
}
function frame15(){
MovieClip(this.parent).gotoAndStop(1);
}
}
}//package bumperboatrush_fla
Section 21
//Timeline_97 (bumperboatrush_fla.Timeline_97)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class Timeline_97 extends MovieClip {
public function Timeline_97(){
addFrameScript(13, frame14);
}
function frame14(){
MovieClip(this.parent).gotoAndStop(1);
}
}
}//package bumperboatrush_fla
Section 22
//Timeline_98 (bumperboatrush_fla.Timeline_98)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class Timeline_98 extends MovieClip {
public function Timeline_98(){
addFrameScript(13, frame14);
}
function frame14(){
MovieClip(this.parent).gotoAndStop(1);
}
}
}//package bumperboatrush_fla
Section 23
//Timeline_99 (bumperboatrush_fla.Timeline_99)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class Timeline_99 extends MovieClip {
public function Timeline_99(){
addFrameScript(0, frame1, 19, frame20);
}
function frame20(){
stop();
}
function frame1(){
stop();
}
}
}//package bumperboatrush_fla
Section 24
//voice_67 (bumperboatrush_fla.voice_67)
package bumperboatrush_fla {
import flash.display.*;
public dynamic class voice_67 extends MovieClip {
public function voice_67(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package bumperboatrush_fla
Section 25
//Def (def.Def)
package def {
import utils.*;
public class Def {
public static const Angle_to_Radian:Number = 0.0174532925199433;
public static const Radian_to_Angle:Number = 57.2957795130823;
public static const URL:String = "http://www.gameslist.com";
public static const TOWEBURL:String = "http://www.gameslist.com/freegames";
public static var isSound:Boolean = true;
public static var soundControl:GameSound = new GameSound();
public static var Game_Degree:String = "easy";
}
}//package def
Section 26
//AbstractCollection (org.cove.ape.AbstractCollection)
package org.cove.ape {
import flash.display.*;
import flash.utils.*;
public class AbstractCollection {
private var _sprite:Sprite;
private var _particles:Array;
private var _isParented:Boolean;
private var _constraints:Array;
public function AbstractCollection(){
if (getQualifiedClassName(this) == "org.cove.ape::AbstractCollection"){
throw (new ArgumentError("AbstractCollection can't be instantiated directly"));
};
_isParented = false;
_particles = new Array();
_constraints = new Array();
}
public function removeConstraint(_arg1:AbstractConstraint):void{
var _local2:int = constraints.indexOf(_arg1);
if (_local2 == -1){
return;
};
constraints.splice(_local2, 1);
_arg1.cleanup();
}
public function getAll():Array{
return (particles.concat(constraints));
}
function checkCollisionsVsCollection(_arg1:AbstractCollection):void{
var _local5:AbstractParticle;
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:AbstractParticle;
var _local10:SpringConstraint;
var _local11:SpringConstraint;
var _local12:int;
var _local2:int = _particles.length;
var _local3:int;
while (_local3 < _local2) {
_local5 = _particles[_local3];
if (!_local5.collidable){
} else {
_local6 = _arg1.particles.length;
_local7 = 0;
while (_local7 < _local6) {
_local9 = _arg1.particles[_local7];
if (_local9.collidable){
CollisionDetector.test(_local5, _local9);
};
_local7++;
};
_local8 = _arg1.constraints.length;
_local7 = 0;
while (_local7 < _local8) {
_local10 = _arg1.constraints[_local7];
if (((_local10.collidable) && (!(_local10.isConnectedTo(_local5))))){
_local10.scp.updatePosition();
CollisionDetector.test(_local5, _local10.scp);
};
_local7++;
};
};
_local3++;
};
var _local4:int = _constraints.length;
_local3 = 0;
while (_local3 < _local4) {
_local11 = _constraints[_local3];
if (!_local11.collidable){
} else {
_local6 = _arg1.particles.length;
_local12 = 0;
while (_local12 < _local6) {
_local9 = _arg1.particles[_local12];
if (((_local9.collidable) && (!(_local11.isConnectedTo(_local9))))){
_local11.scp.updatePosition();
CollisionDetector.test(_local9, _local11.scp);
};
_local12++;
};
};
_local3++;
};
}
public function get sprite():Sprite{
if (_sprite != null){
return (_sprite);
};
if (APEngine.container == null){
throw (new Error("The container property of the APEngine class has not been set"));
};
_sprite = new Sprite();
APEngine.container.addChild(_sprite);
return (_sprite);
}
function checkInternalCollisions():void{
var _local3:AbstractParticle;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:AbstractParticle;
var _local8:SpringConstraint;
var _local1:int = _particles.length;
var _local2:int;
while (_local2 < _local1) {
_local3 = _particles[_local2];
if (!_local3.collidable){
} else {
_local4 = (_local2 + 1);
while (_local4 < _local1) {
_local7 = _particles[_local4];
if (_local7.collidable){
CollisionDetector.test(_local3, _local7);
};
_local4++;
};
_local5 = _constraints.length;
_local6 = 0;
while (_local6 < _local5) {
_local8 = _constraints[_local6];
if (((_local8.collidable) && (!(_local8.isConnectedTo(_local3))))){
_local8.scp.updatePosition();
CollisionDetector.test(_local3, _local8.scp);
};
_local6++;
};
};
_local2++;
};
}
public function addParticle(_arg1:AbstractParticle):void{
particles.push(_arg1);
if (isParented){
_arg1.init();
};
}
public function init():void{
var _local1:int;
while (_local1 < particles.length) {
particles[_local1].init();
_local1++;
};
_local1 = 0;
while (_local1 < constraints.length) {
constraints[_local1].init();
_local1++;
};
}
function satisfyConstraints():void{
var _local3:AbstractConstraint;
var _local1:int = _constraints.length;
var _local2:int;
while (_local2 < _local1) {
_local3 = _constraints[_local2];
_local3.resolve();
_local2++;
};
}
function get isParented():Boolean{
return (_isParented);
}
public function paint():void{
var _local1:AbstractParticle;
var _local4:SpringConstraint;
var _local2:int = _particles.length;
var _local3:int;
while (_local3 < _local2) {
_local1 = _particles[_local3];
if (((!(_local1.fixed)) || (_local1.alwaysRepaint))){
_local1.paint();
};
_local3++;
};
_local2 = _constraints.length;
_local3 = 0;
while (_local3 < _local2) {
_local4 = _constraints[_local3];
if (((!(_local4.fixed)) || (_local4.alwaysRepaint))){
_local4.paint();
};
_local3++;
};
}
public function addConstraint(_arg1:AbstractConstraint):void{
constraints.push(_arg1);
if (isParented){
_arg1.init();
};
}
function set isParented(_arg1:Boolean):void{
_isParented = _arg1;
}
public function removeParticle(_arg1:AbstractParticle):void{
var _local2:int = particles.indexOf(_arg1);
if (_local2 == -1){
return;
};
particles.splice(_local2, 1);
_arg1.cleanup();
}
public function cleanup():void{
var _local1:int;
while (_local1 < particles.length) {
particles[_local1].cleanup();
_local1++;
};
_local1 = 0;
while (_local1 < constraints.length) {
constraints[_local1].cleanup();
_local1++;
};
}
public function get particles():Array{
return (_particles);
}
function integrate(_arg1:Number):void{
var _local4:AbstractParticle;
var _local2:int = _particles.length;
var _local3:int;
while (_local3 < _local2) {
_local4 = _particles[_local3];
_local4.update(_arg1);
_local3++;
};
}
public function get constraints():Array{
return (_constraints);
}
public function addParticleLeft(_arg1:AbstractParticle):void{
particles.unshift(_arg1);
if (isParented){
_arg1.init();
};
}
}
}//package org.cove.ape
Section 27
//AbstractConstraint (org.cove.ape.AbstractConstraint)
package org.cove.ape {
import flash.utils.*;
public class AbstractConstraint extends AbstractItem {
private var _stiffness:Number;
public function AbstractConstraint(_arg1:Number){
if (getQualifiedClassName(this) == "org.cove.ape::AbstractConstraint"){
throw (new ArgumentError("AbstractConstraint can't be instantiated directly"));
};
this.stiffness = _arg1;
setStyle();
}
function resolve():void{
}
public function set stiffness(_arg1:Number):void{
_stiffness = _arg1;
}
public function get stiffness():Number{
return (_stiffness);
}
}
}//package org.cove.ape
Section 28
//AbstractItem (org.cove.ape.AbstractItem)
package org.cove.ape {
import flash.display.*;
public class AbstractItem {
var lineAlpha:Number;
private var _bitmap:Bitmap;
var lineColor:uint;
var displayObjectOffset:Vector;
var lineThickness:Number;
var displayObject:DisplayObject;
var fillAlpha:Number;
private var _sprite:Sprite;
var fillColor:uint;
private var _visible:Boolean;
private var _alwaysRepaint:Boolean;
var displayObjectRotation:Number;
public function AbstractItem(){
_visible = true;
_alwaysRepaint = false;
}
public function setLine(_arg1:Number=0, _arg2:uint=0, _arg3:Number=1):void{
lineThickness = _arg1;
lineColor = _arg2;
lineAlpha = _arg3;
}
public function set visible(_arg1:Boolean):void{
_visible = _arg1;
sprite.visible = _arg1;
bitmap.visible = _arg1;
}
public function setFill(_arg1:uint=0xFFFFFF, _arg2:Number=1):void{
fillColor = _arg1;
fillAlpha = _arg2;
}
public function init():void{
}
public function get bitmap():Bitmap{
if (_bitmap != null){
return (_bitmap);
};
if (APEngine.container == null){
throw (new Error("The container property of the APEngine class has not been set"));
};
_bitmap = new Bitmap();
APEngine.container.addChild(_bitmap);
return (_bitmap);
}
public function get sprite():Sprite{
if (_sprite != null){
return (_sprite);
};
if (APEngine.container == null){
throw (new Error("The container property of the APEngine class has not been set"));
};
_sprite = new Sprite();
APEngine.container.addChild(_sprite);
return (_sprite);
}
public function paint():void{
}
public function cleanup():void{
sprite.graphics.clear();
var _local1:int;
while (_local1 < sprite.numChildren) {
sprite.removeChildAt(_local1);
_local1++;
};
}
public function set bitmap(_arg1:Bitmap):void{
this._bitmap = _arg1;
APEngine.container.addChild(_bitmap);
}
public function setStyle(_arg1:Number=0, _arg2:uint=0, _arg3:Number=1, _arg4:uint=0xFFFFFF, _arg5:Number=1):void{
setLine(_arg1, _arg2, _arg3);
setFill(_arg4, _arg5);
}
public function get visible():Boolean{
return (_visible);
}
final public function set alwaysRepaint(_arg1:Boolean):void{
_alwaysRepaint = _arg1;
}
final public function get alwaysRepaint():Boolean{
return (_alwaysRepaint);
}
}
}//package org.cove.ape
Section 29
//AbstractParticle (org.cove.ape.AbstractParticle)
package org.cove.ape {
import flash.display.*;
import flash.utils.*;
public class AbstractParticle extends AbstractItem {
private var _collidable:Boolean;
private var _center:Vector;
private var collision:Collision;
var prev:Vector;
private var _kfr:Number;
var interval:Interval;
private var _invMass:Number;
var curr:Vector;
private var _mass:Number;
private var temp:Vector;
private var _friction:Number;
var samp:Vector;
private var _multisample:int;
private var _fixed:Boolean;
private var forces:Vector;
public function AbstractParticle(_arg1:Number, _arg2:Number, _arg3:Boolean, _arg4:Number, _arg5:Number, _arg6:Number){
if (getQualifiedClassName(this) == "org.cove.ape::AbstractParticle"){
throw (new ArgumentError("AbstractParticle can't be instantiated directly"));
};
interval = new Interval(0, 0);
curr = new Vector(_arg1, _arg2);
prev = new Vector(_arg1, _arg2);
samp = new Vector();
temp = new Vector();
fixed = _arg3;
forces = new Vector();
collision = new Collision(new Vector(), new Vector());
collidable = true;
this.mass = _arg4;
this.elasticity = _arg5;
this.friction = _arg6;
setStyle();
_center = new Vector();
_multisample = 0;
}
function get invMass():Number{
return ((fixed) ? 0 : _invMass);
}
public function get px():Number{
return (curr.x);
}
public function get py():Number{
return (curr.y);
}
public function setDisplay(_arg1:DisplayObject, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0):void{
displayObject = _arg1;
displayObjectRotation = _arg4;
displayObjectOffset = new Vector(_arg2, _arg3);
}
public function set px(_arg1:Number):void{
curr.x = _arg1;
prev.x = _arg1;
}
public function set py(_arg1:Number):void{
curr.y = _arg1;
prev.y = _arg1;
}
function getComponents(_arg1:Vector):Collision{
var _local2:Vector = velocity;
var _local3:Number = _arg1.dot(_local2);
collision.vn = _arg1.mult(_local3);
collision.vt = _local2.minus(collision.vn);
return (collision);
}
public function get mass():Number{
return (_mass);
}
function initDisplay():void{
displayObject.x = displayObjectOffset.x;
displayObject.y = displayObjectOffset.y;
displayObject.rotation = displayObjectRotation;
sprite.addChild(displayObject);
}
public function get multisample():int{
return (_multisample);
}
public function get position():Vector{
return (new Vector(curr.x, curr.y));
}
function resolveCollision(_arg1:Vector, _arg2:Vector, _arg3:Vector, _arg4:Number, _arg5:int, _arg6:AbstractParticle):void{
curr.plusEquals(_arg1);
velocity = _arg2;
}
public function get elasticity():Number{
return (_kfr);
}
public function set velocity(_arg1:Vector):void{
prev = curr.minus(_arg1);
}
public function addMasslessForce(_arg1:Vector):void{
forces.plusEquals(_arg1);
}
public function set collidable(_arg1:Boolean):void{
_collidable = _arg1;
}
public function set multisample(_arg1:int):void{
_multisample = _arg1;
}
public function addForce(_arg1:Vector):void{
forces.plusEquals(_arg1.mult(invMass));
}
public function set position(_arg1:Vector):void{
curr.copy(_arg1);
prev.copy(_arg1);
}
public function get center():Vector{
_center.setTo(px, py);
return (_center);
}
public function update(_arg1:Number):void{
if (fixed){
return;
};
addForce(APEngine.force);
addMasslessForce(APEngine.masslessForce);
temp.copy(curr);
var _local2:Vector = velocity.plus(forces.multEquals(_arg1));
curr.plusEquals(_local2.multEquals(APEngine.damping));
prev.copy(temp);
forces.setTo(0, 0);
}
public function get velocity():Vector{
return (curr.minus(prev));
}
public function get collidable():Boolean{
return (_collidable);
}
public function set mass(_arg1:Number):void{
if (_arg1 <= 0){
throw (new ArgumentError("mass may not be set <= 0"));
};
_mass = _arg1;
_invMass = (1 / _mass);
}
public function set fixed(_arg1:Boolean):void{
_fixed = _arg1;
}
public function set elasticity(_arg1:Number):void{
_kfr = _arg1;
}
public function set friction(_arg1:Number):void{
if ((((_arg1 < 0)) || ((_arg1 > 1)))){
throw (new ArgumentError("Legal friction must be >= 0 and <=1"));
};
_friction = _arg1;
}
public function get friction():Number{
return (_friction);
}
public function get fixed():Boolean{
return (_fixed);
}
}
}//package org.cove.ape
Section 30
//APEngine (org.cove.ape.APEngine)
package org.cove.ape {
import flash.display.*;
public final class APEngine {
private static var _container:DisplayObjectContainer;
private static var _damping:Number;
private static var _constraintCollisionCycles:int;
private static var groups:Array;
static var masslessForce:Vector;
private static var _constraintCycles:int;
static var force:Vector;
private static var timeStep:Number;
private static var numGroups:int;
public static function get container():DisplayObjectContainer{
return (_container);
}
public static function get constraintCollisionCycles():int{
return (_constraintCollisionCycles);
}
public static function set damping(_arg1:Number):void{
_damping = _arg1;
}
public static function step():void{
integrate();
var _local1:int;
while (_local1 < _constraintCycles) {
satisfyConstraints();
_local1++;
};
var _local2:int;
while (_local2 < _constraintCollisionCycles) {
satisfyConstraints();
checkCollisions();
_local2++;
};
}
public static function init(_arg1:Number=0.25):void{
timeStep = (_arg1 * _arg1);
numGroups = 0;
groups = new Array();
force = new Vector(0, 0);
masslessForce = new Vector(0, 0);
damping = 1;
_constraintCycles = 0;
_constraintCollisionCycles = 1;
}
public static function get constraintCycles():int{
return (_constraintCycles);
}
public static function set constraintCollisionCycles(_arg1:int):void{
_constraintCollisionCycles = _arg1;
}
public static function set constraintCycles(_arg1:int):void{
_constraintCycles = _arg1;
}
public static function addForce(_arg1:Vector):void{
force.plusEquals(_arg1);
}
public static function get damping():Number{
return (_damping);
}
public static function set container(_arg1:DisplayObjectContainer):void{
_container = _arg1;
}
public static function addGroup(_arg1:Group):void{
groups.push(_arg1);
_arg1.isParented = true;
numGroups++;
_arg1.init();
}
public static function removeGroup(_arg1:Group):void{
var _local2:int = groups.indexOf(_arg1);
if (_local2 == -1){
return;
};
groups.splice(_local2, 1);
_arg1.isParented = false;
numGroups--;
_arg1.cleanup();
}
public static function paint():void{
var _local2:Group;
var _local1:int;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.paint();
_local1++;
};
}
private static function checkCollisions():void{
var _local2:Group;
var _local1:int;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.checkCollisions();
_local1++;
};
}
private static function integrate():void{
var _local2:Group;
var _local1:int;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.integrate(timeStep);
_local1++;
};
}
private static function satisfyConstraints():void{
var _local2:Group;
var _local1:int;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.satisfyConstraints();
_local1++;
};
}
public static function addMasslessForce(_arg1:Vector):void{
masslessForce.plusEquals(_arg1);
}
}
}//package org.cove.ape
Section 31
//CircleParticle (org.cove.ape.CircleParticle)
package org.cove.ape {
public class CircleParticle extends AbstractParticle {
private var _radius:Number;
public function CircleParticle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Number=1, _arg6:Number=0.3, _arg7:Number=0){
super(_arg1, _arg2, _arg4, _arg5, _arg6, _arg7);
_radius = _arg3;
}
override public function init():void{
cleanup();
if (displayObject != null){
initDisplay();
} else {
sprite.graphics.clear();
sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha);
sprite.graphics.beginFill(fillColor, fillAlpha);
sprite.graphics.drawCircle(0, 0, radius);
sprite.graphics.endFill();
};
paint();
}
public function set radius(_arg1:Number):void{
_radius = _arg1;
}
function getProjection(_arg1:Vector):Interval{
var _local2:Number = samp.dot(_arg1);
interval.min = (_local2 - _radius);
interval.max = (_local2 + _radius);
return (interval);
}
function getIntervalY():Interval{
interval.min = (curr.y - _radius);
interval.max = (curr.y + _radius);
return (interval);
}
public function get radius():Number{
return (_radius);
}
function getIntervalX():Interval{
interval.min = (curr.x - _radius);
interval.max = (curr.x + _radius);
return (interval);
}
override public function paint():void{
sprite.x = curr.x;
sprite.y = curr.y;
}
}
}//package org.cove.ape
Section 32
//Collision (org.cove.ape.Collision)
package org.cove.ape {
import org.cove.ape.*;
final class Collision {
var vn:Vector;
var vt:Vector;
function Collision(_arg1:Vector, _arg2:Vector){
this.vn = _arg1;
this.vt = _arg2;
}
}
}//package org.cove.ape
Section 33
//CollisionDetector (org.cove.ape.CollisionDetector)
package org.cove.ape {
import org.cove.ape.*;
final class CollisionDetector {
private static function testOBBvsCircle(_arg1:RectangleParticle, _arg2:CircleParticle):Boolean{
var _local3:Vector;
var _local8:Vector;
var _local9:Number;
var _local10:Vector;
var _local11:Number;
var _local4:Number = Number.POSITIVE_INFINITY;
var _local5:Array = new Array(2);
var _local6:int;
while (_local6 < 2) {
_local8 = _arg1.axes[_local6];
_local9 = testIntervals(_arg1.getProjection(_local8), _arg2.getProjection(_local8));
if (_local9 == 0){
return (false);
};
if (Math.abs(_local9) < Math.abs(_local4)){
_local3 = _local8;
_local4 = _local9;
};
_local5[_local6] = _local9;
_local6++;
};
var _local7:Number = _arg2.radius;
if ((((Math.abs(_local5[0]) < _local7)) && ((Math.abs(_local5[1]) < _local7)))){
_local10 = closestVertexOnOBB(_arg2.samp, _arg1);
_local3 = _local10.minus(_arg2.samp);
_local11 = _local3.magnitude();
_local4 = (_local7 - _local11);
if (_local4 > 0){
_local3.divEquals(_local11);
} else {
return (false);
};
};
CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local3, _local4);
return (true);
}
static function test(_arg1:AbstractParticle, _arg2:AbstractParticle):void{
if (((_arg1.fixed) && (_arg2.fixed))){
return;
};
if ((((_arg1.multisample == 0)) && ((_arg2.multisample == 0)))){
normVsNorm(_arg1, _arg2);
} else {
if ((((_arg1.multisample > 0)) && ((_arg2.multisample == 0)))){
sampVsNorm(_arg1, _arg2);
} else {
if ((((_arg2.multisample > 0)) && ((_arg1.multisample == 0)))){
sampVsNorm(_arg2, _arg1);
} else {
if (_arg1.multisample == _arg2.multisample){
sampVsSamp(_arg1, _arg2);
} else {
normVsNorm(_arg1, _arg2);
};
};
};
};
}
private static function testIntervals(_arg1:Interval, _arg2:Interval):Number{
if (_arg1.max < _arg2.min){
return (0);
};
if (_arg2.max < _arg1.min){
return (0);
};
var _local3:Number = (_arg2.max - _arg1.min);
var _local4:Number = (_arg2.min - _arg1.max);
return (((Math.abs(_local3))<Math.abs(_local4)) ? _local3 : _local4);
}
private static function normVsNorm(_arg1:AbstractParticle, _arg2:AbstractParticle):void{
_arg1.samp.copy(_arg1.curr);
_arg2.samp.copy(_arg2.curr);
testTypes(_arg1, _arg2);
}
private static function testCirclevsCircle(_arg1:CircleParticle, _arg2:CircleParticle):Boolean{
var _local3:Number = testIntervals(_arg1.getIntervalX(), _arg2.getIntervalX());
if (_local3 == 0){
return (false);
};
var _local4:Number = testIntervals(_arg1.getIntervalY(), _arg2.getIntervalY());
if (_local4 == 0){
return (false);
};
var _local5:Vector = _arg1.samp.minus(_arg2.samp);
var _local6:Number = _local5.magnitude();
var _local7:Number = ((_arg1.radius + _arg2.radius) - _local6);
if (_local7 > 0){
_local5.divEquals(_local6);
CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local5, _local7);
_arg1.sprite.dispatchEvent(new CollisionEvent(CollisionEvent.COLLIDE, false, false, _arg2));
_arg2.sprite.dispatchEvent(new CollisionEvent(CollisionEvent.COLLIDE, false, false, _arg1));
return (true);
};
return (false);
}
private static function testTypes(_arg1:AbstractParticle, _arg2:AbstractParticle):Boolean{
if ((((_arg1 is RectangleParticle)) && ((_arg2 is RectangleParticle)))){
return (testOBBvsOBB((_arg1 as RectangleParticle), (_arg2 as RectangleParticle)));
};
if ((((_arg1 is CircleParticle)) && ((_arg2 is CircleParticle)))){
return (testCirclevsCircle((_arg1 as CircleParticle), (_arg2 as CircleParticle)));
};
if ((((_arg1 is RectangleParticle)) && ((_arg2 is CircleParticle)))){
return (testOBBvsCircle((_arg1 as RectangleParticle), (_arg2 as CircleParticle)));
};
if ((((_arg1 is CircleParticle)) && ((_arg2 is RectangleParticle)))){
return (testOBBvsCircle((_arg2 as RectangleParticle), (_arg1 as CircleParticle)));
};
return (false);
}
private static function sampVsNorm(_arg1:AbstractParticle, _arg2:AbstractParticle):void{
var _local3:Number = (1 / (_arg1.multisample + 1));
var _local4:Number = _local3;
_arg2.samp.copy(_arg2.curr);
var _local5:int;
while (_local5 <= _arg1.multisample) {
_arg1.samp.setTo((_arg1.prev.x + (_local4 * (_arg1.curr.x - _arg1.prev.x))), (_arg1.prev.y + (_local4 * (_arg1.curr.y - _arg1.prev.y))));
if (testTypes(_arg1, _arg2)){
return;
};
_local4 = (_local4 + _local3);
_local5++;
};
}
private static function closestVertexOnOBB(_arg1:Vector, _arg2:RectangleParticle):Vector{
var _local6:Number;
var _local3:Vector = _arg1.minus(_arg2.samp);
var _local4:Vector = new Vector(_arg2.samp.x, _arg2.samp.y);
var _local5:int;
while (_local5 < 2) {
_local6 = _local3.dot(_arg2.axes[_local5]);
if (_local6 >= 0){
_local6 = _arg2.extents[_local5];
} else {
if (_local6 < 0){
_local6 = -(_arg2.extents[_local5]);
};
};
_local4.plusEquals(_arg2.axes[_local5].mult(_local6));
_local5++;
};
return (_local4);
}
private static function testOBBvsOBB(_arg1:RectangleParticle, _arg2:RectangleParticle):Boolean{
var _local3:Vector;
var _local6:Vector;
var _local7:Number;
var _local8:Vector;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Boolean;
var _local4:Number = Number.POSITIVE_INFINITY;
var _local5:int;
while (_local5 < 2) {
_local6 = _arg1.axes[_local5];
_local7 = testIntervals(_arg1.getProjection(_local6), _arg2.getProjection(_local6));
if (_local7 == 0){
return (false);
};
_local8 = _arg2.axes[_local5];
_local9 = testIntervals(_arg1.getProjection(_local8), _arg2.getProjection(_local8));
if (_local9 == 0){
return (false);
};
_local10 = Math.abs(_local7);
_local11 = Math.abs(_local9);
if ((((_local10 < Math.abs(_local4))) || ((_local11 < Math.abs(_local4))))){
_local12 = (_local10 < _local11);
_local3 = (_local12) ? _local6 : _local8;
_local4 = (_local12) ? _local7 : _local9;
};
_local5++;
};
CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local3, _local4);
return (true);
}
private static function sampVsSamp(_arg1:AbstractParticle, _arg2:AbstractParticle):void{
var _local3:Number = (1 / (_arg1.multisample + 1));
var _local4:Number = _local3;
var _local5:int;
while (_local5 <= _arg1.multisample) {
_arg1.samp.setTo((_arg1.prev.x + (_local4 * (_arg1.curr.x - _arg1.prev.x))), (_arg1.prev.y + (_local4 * (_arg1.curr.y - _arg1.prev.y))));
_arg2.samp.setTo((_arg2.prev.x + (_local4 * (_arg2.curr.x - _arg2.prev.x))), (_arg2.prev.y + (_local4 * (_arg2.curr.y - _arg2.prev.y))));
if (testTypes(_arg1, _arg2)){
return;
};
_local4 = (_local4 + _local3);
_local5++;
};
}
}
}//package org.cove.ape
Section 34
//CollisionEvent (org.cove.ape.CollisionEvent)
package org.cove.ape {
import flash.events.*;
public class CollisionEvent extends Event {
private var _collidingItem:AbstractItem;
public static const COLLIDE:String = "collide";
public static const FIRST_COLLIDE:String = "firstCollide";
public function CollisionEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:AbstractItem=null){
super(_arg1, _arg2, _arg3);
_collidingItem = _arg4;
}
public function get collidingItem():AbstractItem{
var _local1:SpringConstraintParticle;
if ((_collidingItem is SpringConstraintParticle)){
_local1 = (_collidingItem as SpringConstraintParticle);
return (_local1);
};
return (_collidingItem);
}
}
}//package org.cove.ape
Section 35
//CollisionResolver (org.cove.ape.CollisionResolver)
package org.cove.ape {
import org.cove.ape.*;
final class CollisionResolver {
static function resolveParticleParticle(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:Vector, _arg4:Number):void{
_arg1.curr.copy(_arg1.samp);
_arg2.curr.copy(_arg2.samp);
var _local5:Vector = _arg3.mult(_arg4);
var _local6:Number = (_arg1.elasticity + _arg2.elasticity);
var _local7:Number = (_arg1.invMass + _arg2.invMass);
var _local8:Number = clamp((1 - (_arg1.friction + _arg2.friction)), 0, 1);
var _local9:Collision = _arg1.getComponents(_arg3);
var _local10:Collision = _arg2.getComponents(_arg3);
var _local11:Vector = _local10.vn.mult(((_local6 + 1) * _arg1.invMass)).plus(_local9.vn.mult((_arg2.invMass - (_local6 * _arg1.invMass)))).divEquals(_local7);
var _local12:Vector = _local9.vn.mult(((_local6 + 1) * _arg2.invMass)).plus(_local10.vn.mult((_arg1.invMass - (_local6 * _arg2.invMass)))).divEquals(_local7);
_local9.vt.multEquals(_local8);
_local10.vt.multEquals(_local8);
var _local13:Vector = _local5.mult((_arg1.invMass / _local7));
var _local14:Vector = _local5.mult((-(_arg2.invMass) / _local7));
_local11.plusEquals(_local9.vt);
_local12.plusEquals(_local10.vt);
if (!_arg1.fixed){
_arg1.resolveCollision(_local13, _local11, _arg3, _arg4, -1, _arg2);
};
if (!_arg2.fixed){
_arg2.resolveCollision(_local14, _local12, _arg3, _arg4, 1, _arg1);
};
}
static function clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
if (_arg1 > _arg3){
return (_arg3);
};
if (_arg1 < _arg2){
return (_arg2);
};
return (_arg1);
}
}
}//package org.cove.ape
Section 36
//Composite (org.cove.ape.Composite)
package org.cove.ape {
public class Composite extends AbstractCollection {
private var delta:Vector;
public function Composite(){
delta = new Vector();
}
public function rotateByAngle(_arg1:Number, _arg2:Vector):void{
var _local3:Number = (_arg1 * MathUtil.PI_OVER_ONE_EIGHTY);
rotateByRadian(_local3, _arg2);
}
public function rotateByRadian(_arg1:Number, _arg2:Vector):void{
var _local3:AbstractParticle;
var _local7:Number;
var _local8:Number;
var _local4:Array = particles;
var _local5:int = _local4.length;
var _local6:int;
while (_local6 < _local5) {
_local3 = _local4[_local6];
_local7 = _local3.center.distance(_arg2);
_local8 = (getRelativeAngle(_arg2, _local3.center) + _arg1);
_local3.px = ((Math.cos(_local8) * _local7) + _arg2.x);
_local3.py = ((Math.sin(_local8) * _local7) + _arg2.y);
_local6++;
};
}
public function get fixed():Boolean{
var _local1:int;
while (_local1 < particles.length) {
if (!particles[_local1].fixed){
return (false);
};
_local1++;
};
return (true);
}
private function getRelativeAngle(_arg1:Vector, _arg2:Vector):Number{
delta.setTo((_arg2.x - _arg1.x), (_arg2.y - _arg1.y));
return (Math.atan2(delta.y, delta.x));
}
public function set fixed(_arg1:Boolean):void{
var _local2:int;
while (_local2 < particles.length) {
particles[_local2].fixed = _arg1;
_local2++;
};
}
}
}//package org.cove.ape
Section 37
//Group (org.cove.ape.Group)
package org.cove.ape {
public class Group extends AbstractCollection {
private var _composites:Array;
private var _collisionList:Array;
private var _collideInternal:Boolean;
public function Group(_arg1:Boolean=false){
_composites = new Array();
_collisionList = new Array();
this.collideInternal = _arg1;
}
public function addCollidableList(_arg1:Array):void{
var _local3:Group;
var _local2:int;
while (_local2 < _arg1.length) {
_local3 = _arg1[_local2];
collisionList.push(_local3);
_local2++;
};
}
function checkCollisions():void{
var _local3:Group;
if (collideInternal){
checkCollisionGroupInternal();
};
var _local1:int = collisionList.length;
var _local2:int;
while (_local2 < _local1) {
_local3 = collisionList[_local2];
checkCollisionVsGroup(_local3);
_local2++;
};
}
public function removeComposite(_arg1:Composite):void{
var _local2:int = composites.indexOf(_arg1);
if (_local2 == -1){
return;
};
composites.splice(_local2, 1);
_arg1.isParented = false;
_arg1.cleanup();
}
override public function cleanup():void{
super.cleanup();
var _local1:int;
while (_local1 < composites.length) {
composites[_local1].cleanup();
_local1++;
};
}
public function removeCollidable(_arg1:Group):void{
var _local2:int = collisionList.indexOf(_arg1);
if (_local2 == -1){
return;
};
collisionList.splice(_local2, 1);
}
public function addComposite(_arg1:Composite):void{
composites.push(_arg1);
_arg1.isParented = true;
if (isParented){
_arg1.init();
};
}
public function addCollidable(_arg1:Group):void{
collisionList.push(_arg1);
}
override function integrate(_arg1:Number):void{
var _local4:Composite;
super.integrate(_arg1);
var _local2:int = _composites.length;
var _local3:int;
while (_local3 < _local2) {
_local4 = _composites[_local3];
_local4.integrate(_arg1);
_local3++;
};
}
public function get composites():Array{
return (_composites);
}
override public function init():void{
super.init();
var _local1:int;
while (_local1 < composites.length) {
composites[_local1].init();
_local1++;
};
}
override public function getAll():Array{
return (particles.concat(constraints).concat(composites));
}
public function get collisionList():Array{
return (_collisionList);
}
private function checkCollisionGroupInternal():void{
var _local3:Composite;
var _local4:int;
var _local5:Composite;
checkInternalCollisions();
var _local1:int = _composites.length;
var _local2:int;
while (_local2 < _local1) {
_local3 = _composites[_local2];
_local3.checkCollisionsVsCollection(this);
_local4 = (_local2 + 1);
while (_local4 < _local1) {
_local5 = _composites[_local4];
_local3.checkCollisionsVsCollection(_local5);
_local4++;
};
_local2++;
};
}
override function satisfyConstraints():void{
var _local3:Composite;
super.satisfyConstraints();
var _local1:int = _composites.length;
var _local2:int;
while (_local2 < _local1) {
_local3 = _composites[_local2];
_local3.satisfyConstraints();
_local2++;
};
}
public function get collideInternal():Boolean{
return (_collideInternal);
}
public function set collideInternal(_arg1:Boolean):void{
_collideInternal = _arg1;
}
override public function paint():void{
var _local3:Composite;
super.paint();
var _local1:int = _composites.length;
var _local2:int;
while (_local2 < _local1) {
_local3 = _composites[_local2];
_local3.paint();
_local2++;
};
}
private function checkCollisionVsGroup(_arg1:Group):void{
var _local5:Composite;
var _local6:int;
var _local7:Composite;
checkCollisionsVsCollection(_arg1);
var _local2:int = _composites.length;
var _local3:int = _arg1.composites.length;
var _local4:int;
while (_local4 < _local2) {
_local5 = _composites[_local4];
_local5.checkCollisionsVsCollection(_arg1);
_local6 = 0;
while (_local6 < _local3) {
_local7 = _arg1.composites[_local6];
_local5.checkCollisionsVsCollection(_local7);
_local6++;
};
_local4++;
};
_local6 = 0;
while (_local6 < _local3) {
_local7 = _arg1.composites[_local6];
checkCollisionsVsCollection(_local7);
_local6++;
};
}
}
}//package org.cove.ape
Section 38
//Interval (org.cove.ape.Interval)
package org.cove.ape {
final class Interval {
var min:Number;
var max:Number;
function Interval(_arg1:Number, _arg2:Number){
this.min = _arg1;
this.max = _arg2;
}
function toString():String{
return (((min + " : ") + max));
}
}
}//package org.cove.ape
Section 39
//MathUtil (org.cove.ape.MathUtil)
package org.cove.ape {
final class MathUtil {
static var ONE_EIGHTY_OVER_PI:Number = 57.2957795130823;
static var PI_OVER_ONE_EIGHTY:Number = 0.0174532925199433;
static function clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
if (_arg1 < _arg2){
return (_arg2);
};
if (_arg1 > _arg3){
return (_arg3);
};
return (_arg1);
}
static function sign(_arg1:Number):int{
if (_arg1 < 0){
return (-1);
};
return (1);
}
}
}//package org.cove.ape
Section 40
//RectangleParticle (org.cove.ape.RectangleParticle)
package org.cove.ape {
public class RectangleParticle extends AbstractParticle {
public var particalName:String;// = ""
private var _axes:Array;
private var _radian:Number;
private var _extents:Array;
public function RectangleParticle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Boolean=false, _arg7:Number=1, _arg8:Number=0.3, _arg9:Number=0){
super(_arg1, _arg2, _arg6, _arg7, _arg8, _arg9);
_extents = new Array((_arg3 / 2), (_arg4 / 2));
_axes = new Array(new Vector(0, 0), new Vector(0, 0));
radian = _arg5;
}
public function get radian():Number{
return (_radian);
}
public function set radian(_arg1:Number):void{
_radian = _arg1;
setAxes(_arg1);
}
function get axes():Array{
return (_axes);
}
function get extents():Array{
return (_extents);
}
public function set width(_arg1:Number):void{
_extents[0] = (_arg1 / 2);
}
public function set angle(_arg1:Number):void{
radian = (_arg1 * MathUtil.PI_OVER_ONE_EIGHTY);
}
public function set height(_arg1:Number):void{
_extents[1] = (_arg1 / 2);
}
override public function init():void{
var _local1:Number;
var _local2:Number;
cleanup();
if (displayObject != null){
initDisplay();
} else {
_local1 = (extents[0] * 2);
_local2 = (extents[1] * 2);
sprite.graphics.clear();
sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha);
sprite.graphics.beginFill(fillColor, fillAlpha);
sprite.graphics.drawRect((-(_local1) / 2), (-(_local2) / 2), _local1, _local2);
sprite.graphics.endFill();
};
paint();
}
public function get width():Number{
return ((_extents[0] * 2));
}
public function get height():Number{
return ((_extents[1] * 2));
}
public function get angle():Number{
return ((radian * MathUtil.ONE_EIGHTY_OVER_PI));
}
function getProjection(_arg1:Vector):Interval{
var _local2:Number = ((extents[0] * Math.abs(_arg1.dot(axes[0]))) + (extents[1] * Math.abs(_arg1.dot(axes[1]))));
var _local3:Number = samp.dot(_arg1);
interval.min = (_local3 - _local2);
interval.max = (_local3 + _local2);
return (interval);
}
override public function paint():void{
sprite.x = curr.x;
sprite.y = curr.y;
sprite.rotation = angle;
}
private function setAxes(_arg1:Number):void{
var _local2:Number = Math.sin(_arg1);
var _local3:Number = Math.cos(_arg1);
axes[0].x = _local3;
axes[0].y = _local2;
axes[1].x = -(_local2);
axes[1].y = _local3;
}
}
}//package org.cove.ape
Section 41
//SpringConstraint (org.cove.ape.SpringConstraint)
package org.cove.ape {
import flash.display.*;
public class SpringConstraint extends AbstractConstraint {
private var _collidable:Boolean;
private var p1:AbstractParticle;
private var p2:AbstractParticle;
private var _scp:SpringConstraintParticle;
private var _restLength:Number;
public function SpringConstraint(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:Number=0.5, _arg4:Boolean=false, _arg5:Number=1, _arg6:Number=1, _arg7:Boolean=false){
super(_arg3);
this.p1 = _arg1;
this.p2 = _arg2;
checkParticlesLocation();
_restLength = currLength;
setCollidable(_arg4, _arg5, _arg6, _arg7);
}
public function get fixed():Boolean{
return (((p1.fixed) && (p2.fixed)));
}
public function get rectScale():Number{
return (scp.rectScale);
}
public function set rectScale(_arg1:Number):void{
if (scp == null){
return;
};
scp.rectScale = _arg1;
}
public function setDisplay(_arg1:DisplayObject, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0):void{
if (collidable){
scp.setDisplay(_arg1, _arg2, _arg3, _arg4);
} else {
displayObject = _arg1;
displayObjectRotation = _arg4;
displayObjectOffset = new Vector(_arg2, _arg3);
};
}
override public function init():void{
cleanup();
if (collidable){
scp.init();
} else {
if (displayObject != null){
initDisplay();
};
};
paint();
}
function initDisplay():void{
if (collidable){
scp.initDisplay();
} else {
displayObject.x = displayObjectOffset.x;
displayObject.y = displayObjectOffset.y;
displayObject.rotation = displayObjectRotation;
sprite.addChild(displayObject);
};
}
public function get angle():Number{
return ((radian * MathUtil.ONE_EIGHTY_OVER_PI));
}
public function get center():Vector{
return (p1.curr.plus(p2.curr).divEquals(2));
}
public function set rectHeight(_arg1:Number):void{
if (scp == null){
return;
};
scp.rectHeight = _arg1;
}
public function get restLength():Number{
return (_restLength);
}
override public function paint():void{
var _local1:Vector;
if (collidable){
scp.paint();
} else {
if (displayObject != null){
_local1 = center;
sprite.x = _local1.x;
sprite.y = _local1.y;
sprite.rotation = angle;
} else {
sprite.graphics.clear();
sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha);
sprite.graphics.moveTo(p1.px, p1.py);
sprite.graphics.lineTo(p2.px, p2.py);
};
};
}
function get scp():SpringConstraintParticle{
return (_scp);
}
public function get collidable():Boolean{
return (_collidable);
}
public function setCollidable(_arg1:Boolean, _arg2:Number, _arg3:Number, _arg4:Boolean=false):void{
_collidable = _arg1;
_scp = null;
if (_collidable){
_scp = new SpringConstraintParticle(p1, p2, this, _arg2, _arg3, _arg4);
};
}
public function isConnectedTo(_arg1:AbstractParticle):Boolean{
return ((((_arg1 == p1)) || ((_arg1 == p2))));
}
public function get rectHeight():Number{
return (scp.rectHeight);
}
override function resolve():void{
if (((p1.fixed) && (p2.fixed))){
return;
};
var _local1:Number = currLength;
var _local2:Number = ((_local1 - restLength) / (_local1 * (p1.invMass + p2.invMass)));
var _local3:Vector = delta.mult((_local2 * stiffness));
p1.curr.minusEquals(_local3.mult(p1.invMass));
p2.curr.plusEquals(_local3.mult(p2.invMass));
}
public function set fixedEndLimit(_arg1:Number):void{
if (scp == null){
return;
};
scp.fixedEndLimit = _arg1;
}
public function get radian():Number{
var _local1:Vector = delta;
return (Math.atan2(_local1.y, _local1.x));
}
public function set restLength(_arg1:Number):void{
if (_arg1 <= 0){
throw (new ArgumentError("restLength must be greater than 0"));
};
_restLength = _arg1;
}
public function get currLength():Number{
return (p1.curr.distance(p2.curr));
}
public function get fixedEndLimit():Number{
return (scp.fixedEndLimit);
}
private function checkParticlesLocation():void{
if ((((p1.curr.x == p2.curr.x)) && ((p1.curr.y == p2.curr.y)))){
p2.curr.x = (p2.curr.x + 0.0001);
};
}
function get delta():Vector{
return (p1.curr.minus(p2.curr));
}
}
}//package org.cove.ape
Section 42
//SpringConstraintParticle (org.cove.ape.SpringConstraintParticle)
package org.cove.ape {
import flash.display.*;
import org.cove.ape.*;
class SpringConstraintParticle extends RectangleParticle {
private var p1:AbstractParticle;
private var lambda:Vector;
private var p2:AbstractParticle;
private var _rectHeight:Number;
private var avgVelocity:Vector;
private var rca:Vector;
private var rcb:Vector;
private var _rectScale:Number;
private var parent:SpringConstraint;
private var scaleToLength:Boolean;
private var s:Number;
private var _fixedEndLimit:Number;
function SpringConstraintParticle(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:SpringConstraint, _arg4:Number, _arg5:Number, _arg6:Boolean){
super(0, 0, 0, 0, 0, false);
this.p1 = _arg1;
this.p2 = _arg2;
lambda = new Vector(0, 0);
avgVelocity = new Vector(0, 0);
parent = _arg3;
this.rectScale = _arg5;
this.rectHeight = _arg4;
this.scaleToLength = _arg6;
fixedEndLimit = 0;
rca = new Vector();
rcb = new Vector();
}
private function setCorners(_arg1:RectangleParticle, _arg2:int):void{
var _local3:Number = _arg1.curr.x;
var _local4:Number = _arg1.curr.y;
var _local5:Array = _arg1.axes;
var _local6:Array = _arg1.extents;
var _local7:Number = (_local5[0].x * _local6[0]);
var _local8:Number = (_local5[0].y * _local6[0]);
var _local9:Number = (_local5[1].x * _local6[1]);
var _local10:Number = (_local5[1].y * _local6[1]);
var _local11:Number = (_local7 - _local9);
var _local12:Number = (_local8 - _local10);
var _local13:Number = (_local7 + _local9);
var _local14:Number = (_local8 + _local10);
if (_arg2 == 0){
rca.x = (_local3 - _local13);
rca.y = (_local4 - _local14);
rcb.x = (_local3 + _local11);
rcb.y = (_local4 + _local12);
} else {
if (_arg2 == 1){
rca.x = (_local3 + _local11);
rca.y = (_local4 + _local12);
rcb.x = (_local3 + _local13);
rcb.y = (_local4 + _local14);
} else {
if (_arg2 == 2){
rca.x = (_local3 + _local13);
rca.y = (_local4 + _local14);
rcb.x = (_local3 - _local11);
rcb.y = (_local4 - _local12);
} else {
if (_arg2 == 3){
rca.x = (_local3 - _local11);
rca.y = (_local4 - _local12);
rcb.x = (_local3 - _local13);
rcb.y = (_local4 - _local14);
};
};
};
};
}
override function get invMass():Number{
if (((p1.fixed) && (p2.fixed))){
return (0);
};
return ((1 / ((p1.mass + p2.mass) / 2)));
}
function get rectScale():Number{
return (_rectScale);
}
function set rectScale(_arg1:Number):void{
_rectScale = _arg1;
}
override public function get friction():Number{
return (((p1.friction + p2.friction) / 2));
}
override public function init():void{
var _local1:Sprite;
var _local2:Number;
var _local3:Number;
if (displayObject != null){
initDisplay();
} else {
_local1 = new Sprite();
parent.sprite.addChild(_local1);
_local1.name = "inner";
_local2 = (parent.currLength * rectScale);
_local3 = rectHeight;
_local1.graphics.clear();
_local1.graphics.lineStyle(parent.lineThickness, parent.lineColor, parent.lineAlpha);
_local1.graphics.beginFill(parent.fillColor, parent.fillAlpha);
_local1.graphics.drawRect((-(_local2) / 2), (-(_local3) / 2), _local2, _local3);
_local1.graphics.endFill();
};
paint();
}
override function initDisplay():void{
displayObject.x = displayObjectOffset.x;
displayObject.y = displayObjectOffset.y;
displayObject.rotation = displayObjectRotation;
var _local1:Sprite = new Sprite();
_local1.name = "inner";
_local1.addChild(displayObject);
parent.sprite.addChild(_local1);
}
function set rectHeight(_arg1:Number):void{
_rectHeight = _arg1;
}
function updatePosition():void{
var _local1:Vector = parent.center;
curr.setTo(_local1.x, _local1.y);
width = (scaleToLength) ? (parent.currLength * rectScale) : (parent.restLength * rectScale);
height = rectHeight;
radian = parent.radian;
}
override public function get velocity():Vector{
var _local1:Vector = p1.velocity;
var _local2:Vector = p2.velocity;
avgVelocity.setTo(((_local1.x + _local2.x) / 2), ((_local1.y + _local2.y) / 2));
return (avgVelocity);
}
override public function paint():void{
var _local1:Vector = parent.center;
var _local2:Sprite = parent.sprite;
if (scaleToLength){
_local2.getChildByName("inner").width = (parent.currLength * rectScale);
} else {
if (displayObject != null){
_local2.getChildByName("inner").width = (parent.restLength * rectScale);
};
};
_local2.x = _local1.x;
_local2.y = _local1.y;
_local2.rotation = parent.angle;
}
private function getContactPointParam(_arg1:AbstractParticle):Number{
var _local2:Number;
var _local3:Number;
var _local4:Array;
var _local5:Number;
var _local6:int;
var _local7:Number;
if ((_arg1 is CircleParticle)){
_local2 = closestParamPoint(_arg1.curr);
} else {
if ((_arg1 is RectangleParticle)){
_local4 = new Array(4);
_local5 = Number.POSITIVE_INFINITY;
_local6 = 0;
while (_local6 < 4) {
setCorners((_arg1 as RectangleParticle), _local6);
_local7 = closestPtSegmentSegment();
if (_local7 < _local5){
_local5 = _local7;
_local3 = _local6;
_local4[_local6] = s;
};
_local6++;
};
_local2 = _local4[_local3];
};
};
return (_local2);
}
function set fixedEndLimit(_arg1:Number):void{
_fixedEndLimit = _arg1;
}
private function closestPtSegmentSegment():Number{
var _local8:Number;
var _local1:Vector = p1.curr;
var _local2:Vector = p2.curr;
var _local3:Vector = rca;
var _local4:Vector = rcb;
var _local5:Vector = _local2.minus(_local1);
var _local6:Vector = _local4.minus(_local3);
var _local7:Vector = _local1.minus(_local3);
var _local9:Number = _local5.dot(_local5);
var _local10:Number = _local6.dot(_local6);
var _local11:Number = _local6.dot(_local7);
var _local12:Number = _local5.dot(_local7);
var _local13:Number = _local5.dot(_local6);
var _local14:Number = ((_local9 * _local10) - (_local13 * _local13));
if (_local14 != 0){
s = MathUtil.clamp((((_local13 * _local11) - (_local12 * _local10)) / _local14), 0, 1);
} else {
s = 0.5;
};
_local8 = (((_local13 * s) + _local11) / _local10);
if (_local8 < 0){
_local8 = 0;
s = MathUtil.clamp((-(_local12) / _local9), 0, 1);
} else {
if (_local8 > 0){
_local8 = 1;
s = MathUtil.clamp(((_local13 - _local12) / _local9), 0, 1);
};
};
var _local15:Vector = _local1.plus(_local5.mult(s));
var _local16:Vector = _local3.plus(_local6.mult(_local8));
var _local17:Vector = _local15.minus(_local16);
return (_local15.minus(_local16).dot(_local17));
}
override function resolveCollision(_arg1:Vector, _arg2:Vector, _arg3:Vector, _arg4:Number, _arg5:int, _arg6:AbstractParticle):void{
var _local10:Number;
var _local11:AbstractParticle;
var _local7:Number = getContactPointParam(_arg6);
var _local8:Number = (1 - _local7);
var _local9:Number = _local7;
if (p1.fixed){
if (_local9 <= fixedEndLimit){
return;
};
lambda.setTo((_arg1.x / _local9), (_arg1.y / _local9));
p2.curr.plusEquals(lambda);
p2.velocity = _arg2;
} else {
if (p2.fixed){
if (_local8 <= fixedEndLimit){
return;
};
lambda.setTo((_arg1.x / _local8), (_arg1.y / _local8));
p1.curr.plusEquals(lambda);
p1.velocity = _arg2;
} else {
_local10 = ((_local8 * _local8) + (_local9 * _local9));
if (_local10 == 0){
return;
};
lambda.setTo((_arg1.x / _local10), (_arg1.y / _local10));
p1.curr.plusEquals(lambda.mult(_local8));
p2.curr.plusEquals(lambda.mult(_local9));
if (_local7 == 0.5){
p1.velocity = _arg2;
p2.velocity = _arg2;
} else {
_local11 = ((_local7)<0.5) ? p1 : p2;
_local11.velocity = _arg2;
};
};
};
}
function get rectHeight():Number{
return (_rectHeight);
}
function get fixedEndLimit():Number{
return (_fixedEndLimit);
}
override public function get elasticity():Number{
return (((p1.elasticity + p2.elasticity) / 2));
}
override public function get mass():Number{
return (((p1.mass + p2.mass) / 2));
}
private function closestParamPoint(_arg1:Vector):Number{
var _local2:Vector = p2.curr.minus(p1.curr);
var _local3:Number = (_local2.dot(_arg1.minus(p1.curr)) / _local2.dot(_local2));
return (MathUtil.clamp(_local3, 0, 1));
}
}
}//package org.cove.ape
Section 43
//Vector (org.cove.ape.Vector)
package org.cove.ape {
public class Vector {
public var x:Number;
public var y:Number;
public function Vector(_arg1:Number=0, _arg2:Number=0){
x = _arg1;
y = _arg2;
}
public function cross(_arg1:Vector):Number{
return (((x * _arg1.y) - (y * _arg1.x)));
}
public function magnitude():Number{
return (Math.sqrt(((x * x) + (y * y))));
}
public function divEquals(_arg1:Number):Vector{
if (_arg1 == 0){
_arg1 = 0.0001;
};
x = (x / _arg1);
y = (y / _arg1);
return (this);
}
public function times(_arg1:Vector):Vector{
return (new Vector((x * _arg1.x), (y * _arg1.y)));
}
public function plusEquals(_arg1:Vector):Vector{
x = (x + _arg1.x);
y = (y + _arg1.y);
return (this);
}
public function dot(_arg1:Vector):Number{
return (((x * _arg1.x) + (y * _arg1.y)));
}
public function toString():String{
return (((x + " : ") + y));
}
public function normalize():Vector{
var _local1:Number = magnitude();
if (_local1 == 0){
_local1 = 0.0001;
};
return (mult((1 / _local1)));
}
public function minusEquals(_arg1:Vector):Vector{
x = (x - _arg1.x);
y = (y - _arg1.y);
return (this);
}
public function copy(_arg1:Vector):void{
x = _arg1.x;
y = _arg1.y;
}
public function multEquals(_arg1:Number):Vector{
x = (x * _arg1);
y = (y * _arg1);
return (this);
}
public function minus(_arg1:Vector):Vector{
return (new Vector((x - _arg1.x), (y - _arg1.y)));
}
public function plus(_arg1:Vector):Vector{
return (new Vector((x + _arg1.x), (y + _arg1.y)));
}
public function distance(_arg1:Vector):Number{
var _local2:Vector = this.minus(_arg1);
return (_local2.magnitude());
}
public function setTo(_arg1:Number, _arg2:Number):void{
x = _arg1;
y = _arg2;
}
public function mult(_arg1:Number):Vector{
return (new Vector((x * _arg1), (y * _arg1)));
}
}
}//package org.cove.ape
Section 44
//BeginScene (scene.BeginScene)
package scene {
import flash.events.*;
import flash.display.*;
import def.*;
import flash.net.*;
public class BeginScene {
private var _startBtn:SimpleButton;
private var _hardBtn:SimpleButton;
private var _easyBtn:SimpleButton;
public function BeginScene(){
BumperBoat.instance.movie.gotoAndPlay(1, "首页");
BumperBoat.instance.addScriptToNextframe(init);
}
private function destroy():void{
BumperBoat.instance.stage.removeEventListener(MouseEvent.CLICK, mouseClcikHandler);
}
private function mouseClickHandler(_arg1:MouseEvent):void{
_easyBtn.removeEventListener(MouseEvent.CLICK, mouseClickHandler);
_hardBtn.removeEventListener(MouseEvent.CLICK, mouseClickHandler);
if (_arg1.target == _easyBtn){
Def.Game_Degree = "easy";
Def.soundControl.buttonSound();
BumperBoat.instance.movie.gotoAndStop(1, "说明页");
BumperBoat.instance.addScriptToNextframe(helpshow);
} else {
Def.Game_Degree = "hard";
Def.soundControl.buttonSound();
BumperBoat.instance.movie.gotoAndStop(1, "说明页2");
BumperBoat.instance.addScriptToNextframe(helpshow);
};
}
private function init():void{
BumperBoat.instance.stage.addEventListener(MouseEvent.CLICK, mouseClcikHandler);
}
private function startBtnHandler(_arg1:MouseEvent):void{
Def.soundControl.buttonSound();
BumperBoat.instance.movie.stop();
_startBtn.removeEventListener(MouseEvent.CLICK, startBtnHandler);
new GateScene();
}
private function mouseClcikHandler(_arg1:MouseEvent):void{
switch (_arg1.target.name){
case "playBtn":
destroy();
Def.soundControl.buttonSound();
BumperBoat.instance.movie.gotoAndPlay(9);
_easyBtn = (BumperBoat.instance.getMovie("easyBtn") as SimpleButton);
_easyBtn.addEventListener(MouseEvent.CLICK, mouseClickHandler);
_hardBtn = (BumperBoat.instance.getMovie("hardBtn") as SimpleButton);
_hardBtn.addEventListener(MouseEvent.CLICK, mouseClickHandler);
break;
case "wedSiteBtn":
navigateToURL(new URLRequest(Def.TOWEBURL));
Def.soundControl.buttonSound();
break;
case "moreGameBtn":
navigateToURL(new URLRequest(Def.URL));
Def.soundControl.buttonSound();
break;
};
}
private function helpshow():void{
_startBtn = (BumperBoat.instance.getMovie("startBtn") as SimpleButton);
_startBtn.addEventListener(MouseEvent.CLICK, startBtnHandler);
}
}
}//package scene
Section 45
//GameScene (scene.GameScene)
package scene {
import flash.events.*;
import flash.display.*;
import org.cove.ape.*;
import vo.*;
import def.*;
import utils.*;
import flash.utils.*;
import flash.ui.*;
import flash.geom.*;
public class GameScene {
private var _player:Player;
private var _pauseFlag:Boolean;// = true
private var _enemy:Oppsite;
private var _replayFlag:Boolean;// = false
private var _soundFlag:Boolean;// = true
private var _keyControl:KeybordObject;
private var _enemyInt:int;// = 0
private var _soundBtn:MovieClip;
private var _backBtn:SimpleButton;
private var _result:String;
private var _playerInt:int;// = 0
private var _distance:Number;
private var _role:String;
private var _pauseBtn:MovieClip;
private var _circle:MovieClip;
private var _replayBtn:SimpleButton;
private var _barrier:MovieClip;
public function GameScene(_arg1:String){
_role = _arg1;
BumperBoat.instance.movie.gotoAndStop(1, "游戏场景");
BumperBoat.instance.addScriptToNextframe(init);
}
private function run(_arg1:Event):void{
if (((_keyControl.key[Keyboard.RIGHT]) || (_keyControl.key[68]))){
_player.moveControl("right");
};
if (((_keyControl.key[Keyboard.UP]) || (_keyControl.key[87]))){
_player.moveControl("up");
};
if ((((Def.Game_Degree == "easy")) && (((_keyControl.key[Keyboard.DOWN]) || (_keyControl.key[83]))))){
_player.moveControl("down");
};
if (((_keyControl.key[Keyboard.LEFT]) || (_keyControl.key[65]))){
_player.moveControl("left");
};
APEngine.step();
APEngine.paint();
_enemy.rotate(_player);
judeResult();
}
private function init():void{
Def.soundControl.backGroundSound();
initPlayer();
_circle = BumperBoat.instance.getMovie("circle");
_distance = ((_circle.width / 2) - 43);
_keyControl = new KeybordObject(BumperBoat.instance.stage);
APEngine.init((1 / 4));
APEngine.container = BumperBoat.instance.sprite;
APEngine.damping = 0.95;
_player = new Player(BumperBoat.instance.getMovie("player"));
APEngine.addGroup(_player);
_enemy = new Oppsite(BumperBoat.instance.getMovie(_role));
APEngine.addGroup(_enemy);
_player.addCollidable(_enemy);
BumperBoat.instance.stage.addEventListener(Event.ENTER_FRAME, run);
_pauseBtn.addEventListener(MouseEvent.CLICK, pauseBtnClick);
_soundBtn.addEventListener(MouseEvent.CLICK, soundBtnClick);
_backBtn.addEventListener(MouseEvent.CLICK, backBtnClick);
_replayBtn.addEventListener(MouseEvent.CLICK, replayBtnClick);
}
private function initPlayer():void{
_pauseBtn = BumperBoat.instance.getMovie("pauseBtn");
_pauseBtn.gotoAndStop(1);
_pauseBtn.buttonMode = true;
_soundBtn = BumperBoat.instance.getMovie("soundBtn");
_soundBtn.gotoAndStop(1);
_soundBtn.buttonMode = true;
_backBtn = (BumperBoat.instance.getMovie("returnBtn") as SimpleButton);
_replayBtn = (BumperBoat.instance.getMovie("replayBtn") as SimpleButton);
MovieClip(BumperBoat.instance.getMovie("whiteGirl")).visible = false;
MovieClip(BumperBoat.instance.getMovie("blackGirl")).visible = false;
MovieClip(BumperBoat.instance.getMovie("yellowGirl")).visible = false;
MovieClip(BumperBoat.instance.getMovie("white")).visible = false;
MovieClip(BumperBoat.instance.getMovie("black")).visible = false;
MovieClip(BumperBoat.instance.getMovie("yellow")).visible = false;
if (_role == "white"){
MovieClip(BumperBoat.instance.getMovie("whiteGirl")).visible = true;
MovieClip(BumperBoat.instance.getMovie("white")).visible = true;
} else {
if (_role == "black"){
MovieClip(BumperBoat.instance.getMovie("blackGirl")).visible = true;
MovieClip(BumperBoat.instance.getMovie("black")).visible = true;
} else {
if (_role == "yellow"){
MovieClip(BumperBoat.instance.getMovie("yellowGirl")).visible = true;
MovieClip(BumperBoat.instance.getMovie("yellow")).visible = true;
};
};
};
}
private function replayBtnClick(_arg1:Event):void{
pauseTheGame();
_pauseBtn.removeEventListener(MouseEvent.CLICK, pauseBtnClick);
_soundBtn.removeEventListener(MouseEvent.CLICK, soundBtnClick);
_backBtn.removeEventListener(MouseEvent.CLICK, backBtnClick);
_replayBtn.removeEventListener(MouseEvent.CLICK, replayBtnClick);
_replayFlag = true;
_barrier = new (BumperBoat.instance.getClass("barrier"));
BumperBoat.instance.sprite.addChild(_barrier);
_barrier.x = 320;
_barrier.y = 240;
_barrier.addEventListener("init", reInitHandler);
}
private function backBtnClick(_arg1:Event):void{
pauseTheGame();
destroy();
new BeginScene();
}
private function pauseBtnClick(_arg1:MouseEvent):void{
if (_pauseFlag){
_pauseFlag = false;
_pauseBtn.gotoAndStop(2);
pauseTheGame();
} else {
_pauseFlag = true;
_pauseBtn.gotoAndStop(1);
restartTheGame();
};
}
private function reSetEvent():void{
if (_replayFlag){
_replayFlag = false;
_pauseBtn.addEventListener(MouseEvent.CLICK, pauseBtnClick);
_soundBtn.addEventListener(MouseEvent.CLICK, soundBtnClick);
};
_backBtn.addEventListener(MouseEvent.CLICK, backBtnClick);
_replayBtn.addEventListener(MouseEvent.CLICK, replayBtnClick);
}
private function pauseTheGame():void{
_enemy.pauseGame();
BumperBoat.instance.stage.removeEventListener(Event.ENTER_FRAME, run);
}
private function reDoneHandler(_arg1:Event):void{
_barrier.removeEventListener("done", reDoneHandler);
BumperBoat.instance.sprite.removeChild(_barrier);
reSetEvent();
restartTheGame();
}
private function soundBtnClick(_arg1:MouseEvent):void{
if (_soundFlag){
_soundFlag = false;
_soundBtn.gotoAndStop(2);
} else {
_soundFlag = true;
_soundBtn.gotoAndStop(1);
};
Def.isSound = !(Def.isSound);
Def.soundControl.backGroundSound();
}
private function timerHandler(_arg1:TimerEvent):void{
_arg1.target.stop();
_arg1.target.removeEventListener(TimerEvent.TIMER, timerHandler);
if ((((_enemyInt < 3)) && ((_playerInt < 3)))){
_player.reSet();
_enemy.reSet();
APEngine.step();
APEngine.paint();
_barrier.gotoAndPlay((_barrier.currentFrame + 1));
_barrier.addEventListener("done", reDoneHandler);
} else {
BumperBoat.instance.sprite.removeChild(_barrier);
destroy();
if (_playerInt >= 3){
new WinScene(_role);
} else {
if (_enemyInt >= 3){
new LostScene(_role);
};
};
};
}
private function judeResult():void{
var _local3:MovieClip;
var _local1:Number = Point.distance(new Point(_circle.x, _circle.y), new Point(_enemy.px, _enemy.py));
var _local2:Number = Point.distance(new Point(_circle.x, _circle.y), new Point(_player.px, _player.py));
if ((((_local2 >= _distance)) || ((_local1 >= _distance)))){
pauseTheGame();
_backBtn.removeEventListener(MouseEvent.CLICK, backBtnClick);
_replayBtn.removeEventListener(MouseEvent.CLICK, replayBtnClick);
if (_local2 >= _distance){
_result = "lose";
} else {
_result = "win";
};
_local3 = new (BumperBoat.instance.getClass("KO"));
BumperBoat.instance.sprite.addChild(_local3);
_local3.x = 320;
_local3.y = 240;
_local3.addEventListener("KO", KOEventHandler);
};
}
private function winEventHandler(_arg1:Event):void{
_arg1.target.removeEventListener("winner", winEventHandler);
BumperBoat.instance.sprite.removeChild((_arg1.target as MovieClip));
_barrier = new (BumperBoat.instance.getClass("barrier"));
BumperBoat.instance.sprite.addChild(_barrier);
_barrier.x = 320;
_barrier.y = 240;
_barrier.addEventListener("init", reInitHandler);
}
private function KOEventHandler(_arg1:Event):void{
_arg1.target.removeEventListener("KO", KOEventHandler);
BumperBoat.instance.sprite.removeChild((_arg1.target as MovieClip));
var _local2:MovieClip = new (BumperBoat.instance.getClass("winner"));
BumperBoat.instance.sprite.addChild(_local2);
if (_result == "win"){
_local2.x = _player.px;
_local2.y = _player.py;
if (_playerInt < 1){
BumperBoat.instance.getMovie("playerOne").gotoAndPlay(2);
} else {
if (_playerInt < 2){
BumperBoat.instance.getMovie("playerTwo").gotoAndPlay(2);
} else {
if (_playerInt < 3){
BumperBoat.instance.getMovie("playerThree").gotoAndPlay(2);
};
};
};
_playerInt++;
} else {
if (_result == "lose"){
_local2.x = _enemy.px;
_local2.y = _enemy.py;
if (_enemyInt < 1){
BumperBoat.instance.getMovie("enemyOne").gotoAndPlay(2);
} else {
if (_enemyInt < 2){
BumperBoat.instance.getMovie("enemyTwo").gotoAndPlay(2);
} else {
if (_enemyInt < 3){
BumperBoat.instance.getMovie("enemyThree").gotoAndPlay(2);
};
};
};
_enemyInt++;
};
};
_local2.addEventListener("winner", winEventHandler);
}
private function reInitHandler(_arg1:Event):void{
_barrier.removeEventListener("init", reInitHandler);
var _local2:Timer = new Timer(300, 1);
_local2.addEventListener(TimerEvent.TIMER, timerHandler);
_local2.start();
}
private function restartTheGame():void{
BumperBoat.instance.stage.addEventListener(Event.ENTER_FRAME, run);
_enemy.restartGame();
}
private function destroy():void{
APEngine.removeGroup(_enemy);
APEngine.removeGroup(_player);
_pauseBtn.removeEventListener(MouseEvent.CLICK, pauseBtnClick);
_soundBtn.removeEventListener(MouseEvent.CLICK, soundBtnClick);
_backBtn.removeEventListener(MouseEvent.CLICK, backBtnClick);
_replayBtn.removeEventListener(MouseEvent.CLICK, replayBtnClick);
}
}
}//package scene
Section 46
//GateScene (scene.GateScene)
package scene {
import flash.events.*;
import def.*;
public class GateScene {
public function GateScene(){
BumperBoat.instance.movie.gotoAndStop(1, "人物选择页");
BumperBoat.instance.addScriptToNextframe(init);
}
private function init():void{
BumperBoat.instance.stage.addEventListener(MouseEvent.CLICK, mouseClcikHandler);
}
private function destroy():void{
BumperBoat.instance.stage.removeEventListener(MouseEvent.CLICK, mouseClcikHandler);
}
private function mouseClcikHandler(_arg1:MouseEvent):void{
switch (_arg1.target.name){
case "whiteBtn":
destroy();
Def.soundControl.buttonSound();
new GameScene("white");
break;
case "blackBtn":
destroy();
Def.soundControl.buttonSound();
new GameScene("black");
break;
case "yellowBtn":
destroy();
Def.soundControl.buttonSound();
new GameScene("yellow");
break;
};
}
}
}//package scene
Section 47
//LostScene (scene.LostScene)
package scene {
import flash.events.*;
import def.*;
import flash.net.*;
public class LostScene {
private var _role:String;
public function LostScene(_arg1:String){
var _local2:String;
super();
_role = _arg1;
if (_arg1 == "white"){
_local2 = "lost";
} else {
if (_arg1 == "black"){
_local2 = "失败页-美眉";
} else {
if (_arg1 == "yellow"){
_local2 = "失败页-萝莉";
};
};
};
BumperBoat.instance.movie.gotoAndStop(1, _local2);
BumperBoat.instance.addScriptToNextframe(init);
}
private function init():void{
BumperBoat.instance.movie.addEventListener(MouseEvent.CLICK, mouseClcikHandler);
}
private function destroy():void{
BumperBoat.instance.movie.removeEventListener(MouseEvent.CLICK, mouseClcikHandler);
}
private function mouseClcikHandler(_arg1:MouseEvent):void{
switch (_arg1.target.name){
case "playAgainBtn":
destroy();
new GameScene(_role);
break;
case "wedSiteBtn":
navigateToURL(new URLRequest(Def.TOWEBURL));
break;
case "moreGameBtn":
navigateToURL(new URLRequest(Def.URL));
break;
case "backBtn":
destroy();
new BeginScene();
break;
};
}
}
}//package scene
Section 48
//WinScene (scene.WinScene)
package scene {
import flash.events.*;
import def.*;
import flash.net.*;
public class WinScene {
private var _role:String;
public function WinScene(_arg1:String){
var _local2:String;
super();
_role = _arg1;
if (_arg1 == "white"){
_local2 = "胜利页-御姐";
} else {
if (_arg1 == "black"){
_local2 = "胜利页-美眉";
} else {
if (_arg1 == "yellow"){
_local2 = "胜利页-萝莉";
};
};
};
BumperBoat.instance.movie.gotoAndStop(1, _local2);
BumperBoat.instance.addScriptToNextframe(init);
}
private function init():void{
BumperBoat.instance.movie.addEventListener(MouseEvent.CLICK, mouseClcikHandler);
}
private function destroy():void{
BumperBoat.instance.movie.removeEventListener(MouseEvent.CLICK, mouseClcikHandler);
}
private function mouseClcikHandler(_arg1:MouseEvent):void{
switch (_arg1.target.name){
case "playAgainBtn":
trace("----------------------");
destroy();
new GameScene(_role);
break;
case "wedSiteBtn":
navigateToURL(new URLRequest(Def.TOWEBURL));
break;
case "moreGameBtn":
navigateToURL(new URLRequest(Def.URL));
break;
case "backBtn":
destroy();
new BeginScene();
break;
};
}
}
}//package scene
Section 49
//GameSound (utils.GameSound)
package utils {
import def.*;
import flash.media.*;
public class GameSound {
private var soundAr:Array;
private var _channelInt:SoundChannel;
public function GameSound(){
_channelInt = new SoundChannel();
super();
soundAr = [];
var _local1 = 1;
while (_local1 <= 3) {
soundAr[(_local1 - 1)] = (new (BumperBoat.instance.getClass(("sound" + _local1))) as Sound);
_local1++;
};
}
public function backGroundSound():void{
if (Def.isSound){
_channelInt = (soundAr[1] as Sound).play(0, 9999999);
} else {
_channelInt.stop();
};
}
public function hitSound():void{
if (Def.isSound){
soundAr[2].play();
};
}
public function buttonSound():void{
if (Def.isSound){
soundAr[0].play();
};
}
}
}//package utils
Section 50
//KeybordObject (utils.KeybordObject)
package utils {
import flash.events.*;
import flash.display.*;
public class KeybordObject {
public var key:Object;
private var _stage:Stage;
public static var keyControl:Boolean;
public function KeybordObject(_arg1:Stage){
key = new Object();
super();
_stage = _arg1;
keyControl = true;
_stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
_stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
}
private function onKeyDown(_arg1:KeyboardEvent):void{
if (keyControl){
key[_arg1.keyCode] = true;
};
}
private function onKeyUp(_arg1:KeyboardEvent):void{
if (keyControl){
delete key[_arg1.keyCode];
};
}
public function deleteAll():void{
key = null;
_stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
_stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp);
}
}
}//package utils
Section 51
//Oppsite (vo.Oppsite)
package vo {
import flash.events.*;
import flash.display.*;
import org.cove.ape.*;
import def.*;
import flash.utils.*;
public class Oppsite extends Group {
private var _radian:Number;// = 0
private var _timer:Timer;
private var _player:Player;
private var _speed:Number;// = 290
private var _enemy:MovieClip;
private var _mass:Number;// = 25
private var _angle:Number;
private var _partical:CircleParticle;
private var _px:Number;
private var _py:Number;
private var _oldX:Number;
private var _oldY:Number;
public function Oppsite(_arg1:MovieClip){
_enemy = _arg1;
_enemy.gotoAndStop(1);
if (Def.Game_Degree == "easy"){
_speed = 120;
_mass = 14;
} else {
if (Def.Game_Degree == "hard"){
_speed = 340;
_mass = 30;
};
};
_timer = new Timer(45);
initEnemy();
}
private function changeState(_arg1:int):void{
_enemy.gotoAndStop(_arg1);
}
public function forceValue():Number{
var _local1:Number = Math.sqrt(((_partical.velocity.x * _partical.velocity.x) + (_partical.velocity.y * _partical.velocity.y)));
return ((_local1 * _mass));
}
public function rotate(_arg1:Player):void{
_player = _arg1;
_radian = Math.atan2((_partical.py - _arg1.py), (_partical.px - _arg1.px));
_angle = (_radian * Def.Radian_to_Angle);
_enemy.rotation = _angle;
}
public function destroy():void{
pauseGame();
}
public function restartGame():void{
_timer.addEventListener(TimerEvent.TIMER, runHandler);
_timer.start();
_partical.sprite.addEventListener(CollisionEvent.COLLIDE, hitHandler);
}
public function pauseGame():void{
_timer.stop();
_timer.removeEventListener(TimerEvent.TIMER, runHandler);
_partical.sprite.removeEventListener(CollisionEvent.COLLIDE, hitHandler);
}
public function get py():Number{
return (_partical.py);
}
public function get px():Number{
return (_partical.px);
}
public function reSet():void{
_enemy.rotation = 0;
_enemy.gotoAndStop(1);
_partical.px = _oldX;
_partical.py = _oldY;
}
private function hitHandler(_arg1:CollisionEvent):void{
var _local2:Number = forceValue();
var _local3:Number = _player.forceValue();
if (Math.abs((_local2 - _local3)) <= 8){
trace("equal");
_enemy.gotoAndStop(4);
_player.changeState(4);
Def.soundControl.hitSound();
} else {
if (_local2 > _local3){
trace("big");
_enemy.gotoAndStop(2);
_player.changeState(3);
Def.soundControl.hitSound();
} else {
trace("little");
_enemy.gotoAndStop(3);
_player.changeState(2);
Def.soundControl.hitSound();
};
};
}
private function initEnemy():void{
_partical = new CircleParticle(_enemy.x, _enemy.y, 40, false, _mass, 0.8, 0.9);
_partical.setDisplay(_enemy);
_partical.sprite.rotation = 90;
addParticle(_partical);
_oldX = _partical.px;
_oldY = _partical.py;
_partical.sprite.addEventListener(CollisionEvent.COLLIDE, hitHandler);
_timer.addEventListener(TimerEvent.TIMER, runHandler);
_timer.start();
}
private function runHandler(_arg1:TimerEvent):void{
_partical.addForce(new Vector((-(_speed) * Math.cos(_radian)), (-(_speed) * Math.sin(_radian))));
}
}
}//package vo
Section 52
//Player (vo.Player)
package vo {
import flash.display.*;
import org.cove.ape.*;
import def.*;
public class Player extends Group {
private var _player:MovieClip;
private var _direction:Number;
private var _speed:Number;// = 230
private var _mass:Number;// = 25
private var _partical:CircleParticle;
private var _px:Number;
private var _py:Number;
private var _oldX:Number;
private var _oldY:Number;
public function Player(_arg1:MovieClip){
_player = _arg1;
_direction = -90;
_player.gotoAndStop(1);
if (Def.Game_Degree == "easy"){
_speed = 75;
_mass = 12;
} else {
if (Def.Game_Degree == "hard"){
_speed = 230;
_mass = 25;
};
};
initPlayer();
}
public function changeState(_arg1:int=3):void{
_player.gotoAndStop(_arg1);
}
public function forceValue():Number{
var _local1:Number = Math.sqrt(((_partical.velocity.x * _partical.velocity.x) + (_partical.velocity.y * _partical.velocity.y)));
return ((_local1 * _mass));
}
public function get py():Number{
return (_partical.py);
}
public function moveControl(_arg1:String):void{
if (_arg1 == "right"){
_partical.sprite.rotation = (_partical.sprite.rotation + 5);
} else {
if (_arg1 == "up"){
_direction = ((_partical.sprite.rotation + 90) * Def.Angle_to_Radian);
_partical.addForce(new Vector((_speed * Math.cos(_direction)), (_speed * Math.sin(_direction))));
} else {
if (_arg1 == "left"){
_partical.sprite.rotation = (_partical.sprite.rotation - 5);
} else {
if (_arg1 == "down"){
_direction = ((_partical.sprite.rotation + 270) * Def.Angle_to_Radian);
_partical.addForce(new Vector(((_speed * 0.8) * Math.cos(_direction)), ((_speed * 0.8) * Math.sin(_direction))));
};
};
};
};
}
private function initPlayer():void{
_partical = new CircleParticle(_player.x, _player.y, 40, false, _mass, 0.9, 0.9);
_partical.setDisplay(_player);
_partical.sprite.rotation = -90;
addParticle(_partical);
_oldX = _partical.px;
_oldY = _partical.py;
}
public function get px():Number{
return (_partical.px);
}
public function reSet():void{
_partical.px = _oldX;
_partical.py = _oldY;
_partical.sprite.rotation = -90;
_player.gotoAndStop(1);
}
public function get mass():Number{
return (this._mass);
}
public function destroy():void{
}
}
}//package vo
Section 53
//barrier (barrier)
package {
import flash.events.*;
import flash.display.*;
public dynamic class barrier extends MovieClip {
public function barrier(){
addFrameScript(14, frame15, 29, frame30);
}
function frame15(){
stop();
dispatchEvent(new Event("init"));
}
function frame30(){
stop();
dispatchEvent(new Event("done"));
}
}
}//package
Section 54
//BumperBoat (BumperBoat)
package {
import flash.events.*;
import flash.display.*;
import scene.*;
public class BumperBoat extends MovieClip {
public var easyBtn:SimpleButton;
public var moreGameBtn:SimpleButton;
public var pauseBtn:MovieClip;
public var playBtn:SimpleButton;
public var returnBtn:SimpleButton;
public var black:MovieClip;
public var startBtn:SimpleButton;
public var enemyTwo:MovieClip;
public var white:MovieClip;
public var playerTwo:MovieClip;
public var yellowGirl:MovieClip;
public var playAgainBtn:SimpleButton;
public var blackGirl:MovieClip;
public var loading:MovieClip;
public var playerThree:MovieClip;
public var movie:MovieClip;
public var playerOne:MovieClip;
public var yellowBtn:SimpleButton;
public var sprite:Sprite;
public var soundBtn:MovieClip;
public var circle:MovieClip;
public var enemyOne:MovieClip;
public var blackBtn:SimpleButton;
public var wedSiteBtn:SimpleButton;
public var player:MovieClip;
public var whiteGirl:MovieClip;
public var whiteBtn:SimpleButton;
public var yellow:MovieClip;
public var replayBtn:SimpleButton;
public var hardBtn:SimpleButton;
public var backBtn:SimpleButton;
public var enemyThree:MovieClip;
public static var instance:BumperBoat;
public function BumperBoat(){
sprite = new Sprite();
super();
addFrameScript(0, frame1, 4, frame5, 12, frame13, 20, frame21);
instance = this;
}
public function getMovie(_arg1:String){
return (this.movie.getChildByName(_arg1));
}
function frame21(){
stop();
}
public function begin():void{
movie = this;
stage.addChild(sprite);
new BeginScene();
}
public function onEnter(_arg1:Event):void{
var _local2:int = ((loaderInfo.bytesLoaded / loaderInfo.bytesTotal) * 100);
trace(_local2);
loading.loadMC.gotoAndStop(_local2);
if (_local2 == 100){
loading.play();
this.removeEventListener(Event.ENTER_FRAME, onEnter);
};
}
public function getClass(_arg1:String):Class{
return ((this.loaderInfo.applicationDomain.getDefinition(_arg1) as Class));
}
public function addScriptToNextframe(_arg1:Function, _arg2:int=2):void{
var frameNum:int;
var onEnter:Function;
var fun = _arg1;
var frame = _arg2;
onEnter = function (_arg1:Event):void{
frameNum++;
if (frameNum >= frame){
fun();
removeEventListener(Event.ENTER_FRAME, onEnter);
};
};
this.addEventListener(Event.ENTER_FRAME, onEnter);
frameNum = 0;
}
function frame13(){
stop();
}
function frame1(){
stop();
this.addEventListener(Event.ENTER_FRAME, onEnter);
}
function frame5(){
begin();
}
}
}//package
Section 55
//KO (KO)
package {
import flash.events.*;
import flash.display.*;
public dynamic class KO extends MovieClip {
public function KO(){
addFrameScript(16, frame17);
}
function frame17(){
stop();
dispatchEvent(new Event("KO"));
}
}
}//package
Section 56
//sound1 (sound1)
package {
import flash.media.*;
public dynamic class sound1 extends Sound {
}
}//package
Section 57
//sound2 (sound2)
package {
import flash.media.*;
public dynamic class sound2 extends Sound {
}
}//package
Section 58
//sound3 (sound3)
package {
import flash.media.*;
public dynamic class sound3 extends Sound {
}
}//package
Section 59
//winner (winner)
package {
import flash.events.*;
import flash.display.*;
public dynamic class winner extends MovieClip {
public function winner(){
addFrameScript(24, frame25);
}
function frame25(){
stop();
dispatchEvent(new Event("winner"));
}
}
}//package