class Main extends egret.DisplayObjectContainer { /** * Main 类构造器, 初始化的时候自动执行, ( 子类的构造函数必须调用父类的构造函数 super ) * constructor 是类的构造函数, 类在实例化的时候调用 * egret.Event.ADDED_TO_STAGE, 在将显示对象添加到舞台显示列表时调度 */ public constructor(){ super(); this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this); } /** * 本地坐标与显示坐标的转换, 默认情况下, 显示对象的 x 和 y 都是些相对父显示对象的 * 如果要让显示对象相对于其他显示对象, 如主屏幕, 可以利用坐标的转化 * 显示对象.globalToLocal(x, y) 将舞台坐标转化为该显示对象内部本地坐标 ( 常用 ) * 显示对象.localToGlobal(x, y) 将本地坐标转化为该现实对象所在舞台坐标 ( 不常用 ) */ private onAddToStage(event:egret.Event){ // 创建一个空的 DisplayObjectContainer,把它的 x 和 y 坐标都改为
var container: egret.DisplayObjectContainer = new egret.DisplayObjectContainer(); container.x = 200; container.y = 200; this.addChild(container); // 画一个红色的圆,添加到 container 中
var circle: egret.Shape = new egret.Shape(); circle.graphics.beginFill(0xff0000); circle.graphics.drawCircle(25,25,25); circle.graphics.endFill(); container.addChild(circle); // 给圆增加点击事件 egret.TouchEvent.TOUCH_TAP, 事件类型只能用白鹭提供的
circle.touchEnabled = true; circle.addEventListener(egret.TouchEvent.TOUCH_TAP, onClick, this); function onClick():void{ // 把舞台左上角的坐标(0,0)转换为 container 内部的坐标
// egret.Point 坐标类, 两个属性 x 和 y , 对应横纵坐标
var targetPoint: egret.Point = container.globalToLocal(0,0); // 重新定位圆,可以看到圆形移到了屏幕的左上角
circle.x = targetPoint.x; circle.y = targetPoint.y; } } }