Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package
- {
- import flash.display.Sprite;
- import flash.display.Shape;
- import flash.display.Bitmap;
- import flash.display.BitmapData;
- import flash.geom.Rectangle;
- import flash.geom.Point;
- public class SpriteClass extends Sprite
- {
- public var destX:Number;
- public var destY:Number;
- public var speed:Number;
- public var remainingMoveRate:Number;
- public var bitmapCanvas: Bitmap; // Displays the unit
- public var bitmapDataCanvas: BitmapData; // Stores the pixels that represent the unit
- public var rectUnit: Rectangle;
- private var a:Number;
- private var b:Number;
- private var xDelta:Number;
- private var yDelta:Number;
- private var maxMoveSquared:Number;
- private var unitAlpha:Number;
- public function SpriteClass()
- {
- speed = 5.5;
- remainingMoveRate = speed;
- bitmapDataCanvas = new BitmapData(20, 20, true, 0x000000);
- bitmapCanvas = new Bitmap(bitmapDataCanvas);
- rectUnit = new Rectangle(0, 0, 20, 20);
- addChild(bitmapCanvas);
- }
- public function Update():void
- {
- MoveUnit();
- bitmapDataCanvas.lock();
- //rectUnit.x = 0;
- //rectUnit.y = 0;
- bitmapDataCanvas.fillRect(Main.rectBackground, 0x00000000);
- bitmapDataCanvas.copyPixels(Main.spriteData, rectUnit, Main.pointUnit);
- bitmapDataCanvas.unlock();
- }
- public function clearDrawing(): void
- {
- bitmapDataCanvas.lock();
- bitmapDataCanvas.copyPixels(Main.bitmapDataBackground, Main.rectBackground, Main.pointBackground);
- bitmapDataCanvas.unlock();
- } // public function clearDrawing
- public function scalingUnit():void{
- scaleX = 0.75+((y-190)/400);
- scaleY = 0.75+((y-190)/400);
- }
- public function MoveUnit():Boolean
- {
- a = Math.abs(destX - x);
- b = Math.abs(destY - y);
- if (remainingMoveRate > 1e-4) {
- // Check if the unit can reach the dest coordinates immediately.
- maxMoveSquared = a * a + b * b;
- if (maxMoveSquared <= remainingMoveRate * remainingMoveRate) {
- x = destX;
- y = destY;
- scalingUnit();
- remainingMoveRate -= Math.sqrt(maxMoveSquared);
- return true; // Indicate that the unit has reached its dest.
- }
- // Determine the point where the unit will wind up in on its way
- // to (destX, destY).
- unitAlpha = Math.atan(b / a);
- xDelta = Math.cos(unitAlpha) * speed;
- yDelta = Math.sin(unitAlpha) * speed;
- destX > x ? x += xDelta : x -= xDelta;
- if(b > 1e-4){
- destY > y ? y += yDelta : y -= yDelta;
- scalingUnit();
- }
- }
- // Restore the remaining move rate for the next frame.
- remainingMoveRate = speed;
- // Indicate that the unit has not arrived at its dest yet.
- return false;
- } // public function move
- }
- }
- package
- {
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.display.Bitmap;
- import flash.display.BitmapData;
- import flash.geom.Point;
- import flash.geom.Rectangle;
- public class Main extends Sprite
- {
- [Embed(source="../Images/Test.png")]
- private var test:Class;
- private var spriteSheet: Bitmap;
- public static var spriteData: BitmapData;
- public static var pointUnit: Point = new Point(0,0);
- public static var pointBackground: Point = new Point(0,0);
- public static var rectBackground: Rectangle = new Rectangle(0, 0, 20, 20);
- public static var bitmapDataBackground: BitmapData = new BitmapData(20, 20, true, 0x000000);
- [Embed(source="../Images/Background.png")]
- private var background:Class;
- private var bgBit:Bitmap;
- private var stats:Stats;
- private var sprites:Vector.<SpriteClass>;
- private var sprite:SpriteClass;
- private var i:int;
- private var count:int = 88; //160
- private var frameCount:int;
- public function Main():void
- {
- bgBit = new background();
- bgBit.y += 100;
- addChild(bgBit);
- stats = new Stats();
- addChild(stats);
- spriteSheet = new test();
- spriteData = spriteSheet.bitmapData;
- sprites = new Vector.<SpriteClass>();
- for (i = 0; i < count; i++)
- {
- sprite = new SpriteClass();
- sprite.destX = 350 + 20*(i%4);
- sprite.destY = 350;
- sprite.x = int(Math.random() * 700);
- sprite.y = 290 + int(Math.random() * 200);
- addChild(sprite);
- sprites.push(sprite);
- }
- frameCount = 0;
- addEventListener(Event.ENTER_FRAME, MainEngine);
- }
- private function MainEngine(e:Event):void
- {
- for (i = 0; i < count; i++) sprites[i].Update();
- frameCount++;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement