白鷺引擎 - 本地坐標和舞台坐標的轉化 ( 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