白鹭引擎 - 本地坐标和舞台坐标的转化 ( globalToLocal, localToGlobal )


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; } } }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM