home *** CD-ROM | disk | FTP | other *** search
- package asCode
- {
- import flash.display.Bitmap;
- import flash.geom.Point;
-
- public class particleClass
- {
- public var lastX:Number;
-
- public var lastY:Number;
-
- public var x:Number;
-
- public var y:Number;
-
- private var bx:Number;
-
- private var by:Number;
-
- public var alive:Boolean;
-
- public var moving:Boolean;
-
- public var life:int;
-
- public var alphaVal:Number;
-
- public var dx:Number;
-
- public var dy:Number;
-
- public var gx:Number;
-
- public var gy:Number;
-
- public var reduceAlpha:Number;
-
- public var scale:Number;
-
- public var _speed:Number;
-
- private var rot:Number;
-
- private var radians:Number;
-
- private var angle:Number;
-
- private var sheetX:Number;
-
- private var sheetY:Number;
-
- private var xSize:Number;
-
- private var ySize:Number;
-
- public var bitmapRef:Bitmap;
-
- public var particleType:int;
-
- public var baseAlpha:Number;
-
- private var P_ELECTRICAL:int = 1;
-
- private var P_WANDERING_LINE:int = 2;
-
- private var P_LINE:int = 3;
-
- private var P_FALLING:int = 4;
-
- private var P_WANDERING:int = 5;
-
- private var P_GROWING:int = 6;
-
- private var P_WHITE_SMOKE:int = 7;
-
- private var P_METEOR:int = 8;
-
- private var P_BLUE_FLASH:int = 9;
-
- private var P_FLASH:int = 10;
-
- private var P_FLICKER:int = 11;
-
- private var P_SNOW:int = 12;
-
- public var xpos:int;
-
- private var returnPoint:Point;
-
- private var sheetLoc:Point;
-
- public function particleClass(param1:int, param2:int, param3:int, param4:Number, param5:Number, param6:*, param7:*)
- {
- returnPoint = new Point();
- sheetLoc = new Point();
- super();
- particleType = param3;
- lastX = x = param1;
- lastY = y = param2;
- alive = true;
- xSize = param4;
- ySize = param5;
- life = 60;
- sheetX = param6;
- sheetY = param7;
- sheetLoc.x = sheetX;
- sheetLoc.y = sheetY;
- alphaVal = 1;
- rot = Math.random() * Math.PI;
- baseAlpha = 1;
- moving = true;
- scale = 1;
- var _loc8_:Number = Math.random() * 360;
- var _loc9_:Number = 2;
- var _loc10_:Number = 90;
- reduceAlpha = 0;
- _speed = 2;
- angle = Math.random() * 360;
- switch(particleType)
- {
- case P_SNOW:
- life = 100;
- angle = 90 + Math.random() * 3;
- scale = Math.random() * 1 + 0.5;
- _speed = Math.random() * 0.8 + 0.5;
- _loc9_ = 0;
- reduceAlpha = 1 / life;
- break;
- case P_ELECTRICAL:
- angle = Math.random() * 360;
- scale = Math.random() * 1 + 0.5;
- _speed = 2;
- _loc9_ = 0.2;
- life = 20;
- _loc9_ = 0;
- reduceAlpha = 1 / life;
- break;
- case P_WANDERING_LINE:
- angle = Math.random() * 360;
- scale = Math.random() * 1 + 0.5;
- _speed = Math.random() * 3 + 1;
- _loc9_ = 0.2;
- life = 90;
- reduceAlpha = 1 / life;
- break;
- case P_LINE:
- angle = Math.random() * 360;
- scale = Math.random() * 0.5 + 0.2;
- if(Math.random() * 10 < 2)
- {
- _speed = Math.random() * 5 + 3;
- }
- else
- {
- _speed = Math.random() * 3 + 1;
- }
- _loc9_ = 0.2;
- life = 90;
- reduceAlpha = 1 / life;
- break;
- case P_FALLING:
- angle = Math.random() * 360;
- scale = Math.random() * 1 + 0.5;
- _speed = Math.random() * 5 + 1;
- _loc9_ = 0.2;
- break;
- case P_WANDERING:
- life = 30;
- _loc9_ = 0;
- reduceAlpha = 1 / life;
- _speed = Math.random() * 2 + 0.2;
- _loc8_ = Math.random() * 45 - 90 - 22;
- break;
- case P_GROWING:
- _loc9_ = 0;
- _speed = 0;
- life = 30;
- reduceAlpha = 1 / life;
- rot = Math.random() * 360;
- break;
- case P_WHITE_SMOKE:
- alphaVal = 0.5;
- life = 30;
- _speed = 3;
- _loc9_ = 0;
- x += Math.floor(Math.random() * 10 - 5);
- angle = -90 + Math.random() * 10 - 5;
- reduceAlpha = alphaVal / life;
- scale = Math.random() * 1 + 1;
- break;
- case P_METEOR:
- alphaVal = 0.5;
- life = 30;
- _speed = 1;
- _loc9_ = 0;
- x += Math.floor(Math.random() * 10 - 5);
- angle = -90 + Math.random() * 10 - 5;
- reduceAlpha = alphaVal / life;
- scale = Math.random() * 1 + 1;
- break;
- case P_BLUE_FLASH:
- _loc9_ = 0;
- _speed = 0;
- angle = 0;
- alphaVal = 0.75;
- break;
- case P_FLASH:
- _loc9_ = 0;
- _speed = 0;
- angle = Math.random() * 360;
- alphaVal = 0.75;
- scale = Math.random() * 1 + 0.5;
- break;
- case P_FLICKER:
- _loc9_ = 0;
- _speed = 0;
- angle = 0;
- scale = Math.random() * 1 + 0.5;
- x += Math.floor(Math.random() * 10 - 5);
- y += Math.floor(Math.random() * 10 - 5);
- }
- radians = _loc10_ * Math.PI / 180;
- gx = _loc9_ * Math.cos(radians);
- gy = _loc9_ * Math.sin(radians);
- radians = angle * Math.PI / 180;
- bx = _speed * Math.cos(radians);
- by = _speed * Math.sin(radians);
- }
-
- public function getParticleType() : int
- {
- return particleType;
- }
-
- public function getSheetloc() : Point
- {
- return sheetLoc;
- }
-
- public function getScale() : Number
- {
- return scale;
- }
-
- public function getSize() : Point
- {
- returnPoint.x = xSize;
- returnPoint.y = ySize;
- return returnPoint;
- }
-
- public function getAlpha() : Number
- {
- return alphaVal;
- }
-
- public function getRot() : Number
- {
- return rot;
- }
-
- public function getLoc() : Point
- {
- returnPoint.x = x - xSize / 2;
- returnPoint.y = y - ySize / 2;
- return returnPoint;
- }
-
- public function adjustParticleY(param1:Number) : *
- {
- if(particleType != P_ELECTRICAL)
- {
- y += param1;
- }
- }
-
- public function effectParticle(param1:*, param2:*) : *
- {
- x += param1;
- y += param2;
- }
-
- public function moveit() : *
- {
- if(alive)
- {
- --life;
- if(life < 1)
- {
- alive = false;
- }
- switch(particleType)
- {
- case P_SNOW:
- gx = Math.random() * 0.3 - 0.15;
- break;
- case P_ELECTRICAL:
- dx = x - lastX;
- dy = y - lastY;
- radians = Math.atan2(dy,dx);
- rot = radians * 180 / Math.PI;
- break;
- case P_WANDERING_LINE:
- gx = Math.random() * 1 - 0.5;
- gy = Math.random() * 1 - 0.5;
- dx = x - lastX;
- dy = y - lastY;
- radians = Math.atan2(dy,dx);
- rot = radians * 180 / Math.PI;
- break;
- case P_LINE:
- dx = lastX - x;
- dy = lastY - y;
- radians = Math.atan2(dy,dx);
- rot = radians * 180 / Math.PI;
- break;
- case P_FALLING:
- rot += 2;
- break;
- case P_WANDERING:
- gx = Math.random() * 0.1 - 0.05;
- gy = Math.random() * 0.1 - 0.05;
- break;
- case P_GROWING:
- scale *= 1.01;
- break;
- case P_BLUE_FLASH:
- alphaVal = Math.random() * baseAlpha;
- baseAlpha -= 0.2;
- break;
- case P_FLASH:
- alphaVal = Math.random() * baseAlpha;
- baseAlpha -= 0.2;
- break;
- case P_FLICKER:
- alphaVal = Math.random() * baseAlpha;
- baseAlpha -= 0.02;
- break;
- case P_WHITE_SMOKE:
- scale *= 1.01;
- break;
- case P_METEOR:
- scale *= 0.97;
- }
- if(y > 480 || y < 0 || x > 480 || x < 0)
- {
- alive = false;
- }
- lastX = x;
- lastY = y;
- x += bx;
- y += by;
- bx += gx;
- by += gy;
- if(Math.abs(bx) < 0.1 && Math.abs(by) < 0.1)
- {
- moving = false;
- }
- if(reduceAlpha != 0)
- {
- alphaVal -= reduceAlpha;
- if(alphaVal < 0.05)
- {
- alive = false;
- }
- }
- }
- }
- }
- }
-
-