⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intpoint.as

📁 Basic AS3 Geom Package
💻 AS
字号:

package de.geom
{

import flash.geom.Point;
	

public class IntPoint{
	
	public var x:int = 0;
	public var y:int = 0;
	
	/**
	 * Constructor
	 */
	public function IntPoint(x:int=0, y:int=0){
		this.x = x;
		this.y = y;
	}
	
	/**
	 * Return a Point instance with same value.
	 */
	public function toPoint():Point{
		return new Point(x, y);
	}
	
	/**
	 * Sets the location with a <code>Point</code>, the value will be transfer to int.
	 * @param p the location to be set.
	 */
	public function setWithPoint(p:Point):void{
		x = p.x;
		y = p.y;
	}
	
	/**
	 * Create a int point with point.
	 */
	public static function creatWithPoint(p:Point):IntPoint{
		return new IntPoint(p.x, p.y);
	}
		
	/**
	 * Sets the location of this point as same as point p.
	 * @param p the location to be set.
	 */
	public function setLocation(p:IntPoint):void{
		this.x = p.x;
		this.y = p.y;
	}
	
	/**
	 * Sets the location of this point with x and y.
	 * @param x the x coordinates.
	 * @param y the y coordinates.
	 */
	public function setLocationXY(x:int=0, y:int=0):void{
		this.x = x;
		this.y = y;
	}
	
	/**
	 * Moves this point and return itself.
	 * @param dx delta of x.
	 * @param dy delta of y.
	 * @return the point itself.
	 */
	public function move(dx:int, dy:int):IntPoint{
		x += dx;
		y += dy;
		return this;
	}

	/**
	 * Moves this point with an direction in radians and distance, then return itself.
	 * @param angle the angle in radians.
	 * @param distance the distance in pixels.
	 * @return the point itself.
	 */
	public function moveRadians(direction:int, distance:int):IntPoint{
		x += Math.round(Math.cos(direction)*distance);
		y += Math.round(Math.sin(direction)*distance);
		return this;
	}
	
	
	
	/**
	 * Returns the point beside this point with direction and distance.
	 * @return the point beside.
	 */
	public function nextPoint(direction:Number, distance:Number):IntPoint{
		return new IntPoint(x+Math.cos(direction)*distance, y+Math.sin(direction)*distance);
	}
	
	/**
	 * Returns the distance square between this point and passing point.
	 * @param p the another point.
	 * @return the distance square from this to p.
	 */
	public function distanceSq(p:IntPoint):int{
		var xx:int = p.x;
		var yy:int = p.y;
		
		return ((x-xx)*(x-xx)+(y-yy)*(y-yy));	
	}


	/**
	 * Returns the distance between this point and passing point.
	 * @param p the another point.
	 * @return the distance from this to p.
	 */
	public function distance(p:IntPoint):int{
		return Math.sqrt(distanceSq(p));
	}
	public function angleBetween(p:IntPoint):Number{
		
		var dx = x-p.x;
		var dy = y-p.y;
		return Math.atan2(dy, dx);
	
	}
    
    /**
     * Returns whether or not this passing object is a same value point.
     * @param toCompare the object to be compared.
     * @return equals or not.
     */
	public function equals(o:Object):Boolean{
		var toCompare:IntPoint = o as IntPoint;
		if(toCompare == null) return false;
		return x===toCompare.x && y===toCompare.y;
	}

	/**
	 * Duplicates current instance.
	 * @return copy of the current instance.
	 */
	public function clone():IntPoint {
		return new IntPoint(x,y);
	}
    
    /**
    * 
    */
	public function toString():String{
		return "IntPoint["+x+","+y+"]";
	}	
}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -