home *** CD-ROM | disk | FTP | other *** search
- package Gamefile
- {
- import flash.display.MovieClip;
- import flash.events.Event;
-
- public class Move
- {
-
-
- private var mcScaleX:int;
-
- private var lineCenterY:Number;
-
- private var lineCenterX:Number;
-
- private var anchorAngle:Number;
-
- private var radian:Number;
-
- private var xSpeed:Number;
-
- private var coefficient:int;
-
- public var startX:int;
-
- public var startY:int;
-
- private var anchorRadian:Number;
-
- public var anchorX:Number;
-
- public var anchorY:Number;
-
- private var speed:int;
-
- public var moveSum:Number;
-
- private var K:Number;
-
- private var ySpeed:Number;
-
- private var angle:Number;
-
- public var endX:int;
-
- public var endY:int;
-
- public var curveLineType:int;
-
- private var chooseAnimal:MovieClip;
-
- private var anchorLength:int;
-
- public function Move()
- {
- super();
- initMove();
- }
-
- private function initProperty() : *
- {
- speed = 6;
- xSpeed = 0;
- ySpeed = 0;
- radian = 0;
- angle = 0;
- moveSum = 0;
- anchorLength = 26;
- coefficient = 1;
- curveLineType = 0;
- }
-
- public function getSpeed(param1:int, param2:int, param3:int, param4:int) : *
- {
- startX = param1;
- startY = param2;
- endX = param3;
- endY = param4;
- if(startX < endX)
- {
- mcScaleX = 1;
- if(startY < endY)
- {
- radian = Math.atan((endY - startY) / (endX - startX));
- xSpeed = Math.cos(radian) * speed;
- ySpeed = Math.sin(radian) * speed;
- getAngle();
- angle = 90 + angle;
- }
- else if(startY > endY)
- {
- radian = Math.atan((startY - endY) / (endX - startX));
- xSpeed = Math.cos(radian) * speed;
- ySpeed = -(Math.sin(radian) * speed);
- getAngle();
- angle = 90 - angle;
- }
- else if(startY == endY)
- {
- radian = Math.atan(0);
- xSpeed = Math.cos(radian) * speed;
- ySpeed = 0;
- angle = 90;
- }
- }
- else if(startX > endX)
- {
- mcScaleX = -1;
- if(startY < endY)
- {
- radian = Math.atan((endY - startY) / (startX - endX));
- xSpeed = -(Math.cos(radian) * speed);
- ySpeed = Math.sin(radian) * speed;
- getAngle();
- angle = 180 + 90 - angle;
- }
- else if(startY > endY)
- {
- radian = Math.atan((startY - endY) / (startX - endX));
- xSpeed = -(Math.cos(radian) * speed);
- ySpeed = -(Math.sin(radian) * speed);
- getAngle();
- angle = -(90 - angle);
- }
- else if(startY == endY)
- {
- radian = Math.atan(0);
- xSpeed = -(Math.cos(radian) * speed);
- ySpeed = 0;
- angle = -90;
- }
- }
- else if(startX == endX)
- {
- if(startY < endY)
- {
- xSpeed = 0;
- ySpeed = speed;
- angle = 180;
- }
- else if(startY > endY)
- {
- xSpeed = 0;
- ySpeed = -speed;
- angle = 0;
- }
- }
- }
-
- public function initMove() : *
- {
- initProperty();
- }
-
- private function getAngle() : *
- {
- angle = radian * (180 / Math.PI);
- }
-
- public function getAnchor(param1:int, param2:int, param3:int, param4:int, param5:int) : *
- {
- if(param1 < param3)
- {
- if(param4 < param2)
- {
- curveLineType = 1;
- K = Math.atan((param2 - param4) / (param3 - param1));
- anchorAngle = 90 - K * (180 / Math.PI);
- anchorRadian = anchorAngle / (180 / Math.PI);
- anchorX = Math.cos(anchorRadian) * anchorLength;
- anchorY = Math.sin(anchorRadian) * anchorLength;
- lineCenterX = param1 + Math.abs((param1 - param3) / 2);
- lineCenterY = param2 - Math.abs((param2 - param4) / 2);
- if(param5 == 4 || param5 == 5 || param5 == 8)
- {
- coefficient = 1;
- anchorX = lineCenterX + anchorX * coefficient;
- anchorY = lineCenterY + anchorY * coefficient;
- }
- else if(param5 == 2 || param5 == 6 || param5 == 7)
- {
- coefficient = -1;
- anchorX = lineCenterX + anchorX * coefficient;
- anchorY = lineCenterY + anchorY * coefficient;
- }
- else
- {
- anchorX = lineCenterX + anchorX * coefficient;
- anchorY = lineCenterY + anchorY * coefficient;
- }
- }
- else if(param4 > param2)
- {
- curveLineType = 4;
- K = Math.atan((param4 - param2) / (param3 - param1));
- anchorAngle = 90 - K * (180 / Math.PI);
- anchorRadian = anchorAngle / (180 / Math.PI);
- anchorX = Math.cos(anchorRadian) * anchorLength;
- anchorY = Math.sin(anchorRadian) * anchorLength;
- lineCenterX = param1 + Math.abs((param1 - param3) / 2);
- lineCenterY = param2 + Math.abs((param2 - param4) / 2);
- if(param5 == 1 || param5 == 5 || param5 == 7)
- {
- coefficient = 1;
- anchorX = lineCenterX + anchorX * coefficient;
- anchorY = lineCenterY - anchorY * coefficient;
- }
- else if(param5 == 3 || param5 == 6 || param5 == 8)
- {
- coefficient = -1;
- anchorX = lineCenterX + anchorX * coefficient;
- anchorY = lineCenterY - anchorY * coefficient;
- }
- else
- {
- anchorX = lineCenterX + anchorX * coefficient;
- anchorY = lineCenterY - anchorY * coefficient;
- }
- }
- else if(param2 == param4)
- {
- curveLineType = 5;
- anchorX = 0;
- anchorY = anchorLength;
- lineCenterX = param1 + Math.abs((param1 - param3) / 2);
- lineCenterY = param2;
- if(param5 == 1 || param5 == 2 || param5 == 7)
- {
- coefficient = -1;
- anchorX += lineCenterX;
- anchorY = anchorY * coefficient + lineCenterY;
- }
- else if(param5 == 3 || param5 == 4 || param5 == 8)
- {
- coefficient = 1;
- anchorX += lineCenterX;
- anchorY = anchorY * coefficient + lineCenterY;
- }
- else
- {
- anchorX += lineCenterX;
- anchorY = anchorY * coefficient + lineCenterY;
- }
- }
- }
- else if(param1 > param3)
- {
- if(param4 < param2)
- {
- curveLineType = 2;
- K = Math.atan((param2 - param4) / (param1 - param3));
- anchorAngle = 90 - K * (180 / Math.PI);
- anchorRadian = anchorAngle / (180 / Math.PI);
- anchorX = Math.cos(anchorRadian) * anchorLength;
- anchorY = Math.sin(anchorRadian) * anchorLength;
- lineCenterX = param3 + Math.abs((param1 - param3) / 2);
- lineCenterY = param4 + Math.abs((param2 - param4) / 2);
- if(param5 == 1 || param5 == 5 || param5 == 7)
- {
- coefficient = 1;
- anchorX = lineCenterX + anchorX * coefficient;
- anchorY = lineCenterY - anchorY * coefficient;
- }
- else if(param5 == 3 || param5 == 6 || param5 == 8)
- {
- coefficient = -1;
- anchorX = lineCenterX + anchorX * coefficient;
- anchorY = lineCenterY - anchorY * coefficient;
- }
- else
- {
- anchorX = lineCenterX + anchorX * coefficient;
- anchorY = lineCenterY - anchorY * coefficient;
- }
- }
- else if(param4 > param2)
- {
- curveLineType = 3;
- K = Math.atan((param4 - param2) / (param1 - param3));
- anchorAngle = 90 - K * (180 / Math.PI);
- anchorRadian = anchorAngle / (180 / Math.PI);
- anchorX = Math.cos(anchorRadian) * anchorLength;
- anchorY = Math.sin(anchorRadian) * anchorLength;
- lineCenterX = param3 + Math.abs((param1 - param3) / 2);
- lineCenterY = param4 - Math.abs((param2 - param4) / 2);
- if(param5 == 4 || param5 == 5 || param5 == 8)
- {
- coefficient = -1;
- anchorX = lineCenterX - anchorX * coefficient;
- anchorY = lineCenterY - anchorY * coefficient;
- }
- else if(param5 == 2 || param5 == 6 || param5 == 7)
- {
- coefficient = 1;
- anchorX = lineCenterX - anchorX * coefficient;
- anchorY = lineCenterY - anchorY * coefficient;
- }
- else
- {
- anchorX = lineCenterX - anchorX * coefficient;
- anchorY = lineCenterY - anchorY * coefficient;
- }
- }
- else if(param2 == param4)
- {
- curveLineType = 6;
- anchorX = 0;
- anchorY = anchorLength;
- lineCenterX = param3 + Math.abs((param1 - param3) / 2);
- lineCenterY = param2;
- if(param5 == 3 || param5 == 4 || param5 == 8)
- {
- coefficient = 1;
- anchorX += lineCenterX;
- anchorY = anchorY * coefficient + lineCenterY;
- }
- else if(param5 == 1 || param5 == 2 || param5 == 7)
- {
- coefficient = -1;
- anchorX += lineCenterX;
- anchorY = anchorY * coefficient + lineCenterY;
- }
- else
- {
- anchorX += lineCenterX;
- anchorY = anchorY * coefficient + lineCenterY;
- }
- }
- }
- else if(param1 == param3)
- {
- anchorX = anchorLength;
- anchorY = 0;
- if(param2 < param4)
- {
- curveLineType = 7;
- curveLineType = 0;
- lineCenterY = Math.abs((param2 - param4) / 2) + param2;
- lineCenterX = param1;
- if(param5 == 2 || param5 == 3 || param5 == 6)
- {
- coefficient = -1;
- anchorX = anchorX * coefficient + lineCenterX;
- anchorY += lineCenterY;
- }
- else if(param5 == 1 || param5 == 4 || param5 == 5)
- {
- coefficient = 1;
- anchorX = anchorX * coefficient + lineCenterX;
- anchorY += lineCenterY;
- }
- else
- {
- anchorX += lineCenterX;
- anchorY = anchorY * coefficient + lineCenterY;
- }
- }
- else if(param2 > param4)
- {
- curveLineType = 8;
- curveLineType = 0;
- lineCenterY = Math.abs((param2 - param4) / 2) + param4;
- lineCenterX = param1;
- if(param5 == 1 || param5 == 4 || param5 == 5)
- {
- coefficient = 1;
- anchorX = anchorX * coefficient + lineCenterX;
- anchorY += lineCenterY;
- }
- else if(param5 == 2 || param5 == 3 || param5 == 6)
- {
- coefficient = -1;
- anchorX = anchorX * coefficient + lineCenterX;
- anchorY += lineCenterY;
- }
- else
- {
- anchorX += lineCenterX;
- anchorY = anchorY * coefficient + lineCenterY;
- }
- }
- }
- coefficient *= -1;
- }
-
- private function getRadian(param1:Number) : Number
- {
- var _loc2_:Number = NaN;
- _loc2_ = 0;
- _loc2_ = angle / (180 / Math.PI);
- return radian;
- }
-
- public function getCoord(param1:MovieClip, param2:int, param3:int) : *
- {
- if(param1 != null)
- {
- param1.x = param2;
- param1.y = param3;
- }
- }
-
- public function getActionAnimal(param1:MovieClip) : *
- {
- chooseAnimal = param1;
- }
-
- public function moving(param1:MovieClip, param2:Boolean) : *
- {
- param1.x += xSpeed;
- param1.y += ySpeed;
- if(param2 == true)
- {
- param1.scaleX = mcScaleX;
- }
- moveSum += Math.sqrt(xSpeed * xSpeed + ySpeed * ySpeed);
- if(endX >= startX)
- {
- if(param1.x > endX)
- {
- param1.x = endX;
- param1.y = endY;
- param1.dispatchEvent(new Event("getSpeed",true));
- }
- }
- else if(endX <= startX)
- {
- if(param1.x < endX)
- {
- param1.x = endX;
- param1.y = endY;
- param1.dispatchEvent(new Event("getSpeed",true));
- }
- }
- if(endX == startX)
- {
- if(startY < endY)
- {
- if(param1.y >= endY)
- {
- param1.x = endX;
- param1.y = endY;
- param1.dispatchEvent(new Event("getSpeed",true));
- }
- }
- else if(startY > endY)
- {
- if(param1.y <= endY)
- {
- param1.x = endX;
- param1.y = endY;
- param1.dispatchEvent(new Event("getSpeed",true));
- }
- }
- }
- }
-
- public function outPutAngle() : Number
- {
- return angle;
- }
- }
- }
-