白鷺引擎(egret)中錨點(anchoroffset)的位置體會
原文連結
首先關於錨點的作用,我們就以一根線段旋轉90度為例:
先繪製一根水平的直線,長度為100
protected startCreateScene(): void {
this.drawOneLine();
}
protected drawOneLine(){
let ns = new egret.Shape();
ns.x = 100;
ns.y = 100;
ns.graphics.lineStyle(2,0xFF0000);
ns.graphics.moveTo(0,0);
ns.graphics.lineTo(100,0);
this .addChild(ns);
}
現在我們修改下程式碼,在預設錨點的情況下,旋轉90度。為了方便觀察,我給線段做了漸變處理,越靠近90度的線段顏色越淺:
protected startCreateScene(): void {
this.drawLine(0);
}
protected drawLine(angle): void {
let ns = new egret.Shape();
ns.x = 100;
ns.y = 100;
ns.graphics.lineStyle(2,0xFF0000);
ns.graphics.moveTo(0,0);
ns.graphics.lineTo(100 ,0);
ns.alpha = 1-(angle/90)*0.9;
ns.rotation = angle;
this.addChild(ns);
if(angle < 90){
this.drawLine(angle+15);
}
}
現在我們設定錨點,將中心點居中
protected startCreateScene(): void {
this.drawLine(0);
this.drawLineCenter(0);
}
protected drawLineCenter(angle): void {
let ns = new egret.Shape();
ns.x = 100;
ns.y = 300;
ns.anchorOffsetX = 50; // 設定錨點橫座標,位於線段中心
ns.graphics.lineStyle(2,0x000000);
ns.graphics.moveTo(0,0);
ns.graphics.lineTo(100,0);
ns.alpha = 1-(angle/90)*0.9;
ns.rotation = angle;
this.addChild(ns);
if(angle < 90){
this.drawLineCenter(angle+15);
}
}
關於錨點是如何影響元素旋轉的這個示例已經很清楚了。
接下來說這篇文正的關鍵,上圖中有一個不太正常的地方,即黑色線段往左偏移,這個對於剛接觸錨點概念的同學來說,無疑是非常殘忍的,說白了就是個坑。明明所有元素都放在其應該出現的位置上,並且實現了動效,所有的屬性設定也都正確,怎麼元素就偏了呢?
現在,我們仍然以長度100的水平線段為例,將錨點依次設定為0,50,100,觀察這三根線段的情況,程式碼如下:
protected startCreateScene(): void {
this.drawLineAnchor(100,100,0);
this.drawLineAnchor(100,150,50);
this.drawLineAnchor(100,200,100);
}
protected drawLineAnchor(x,y,anchorX):void{
let ns = new egret.Shape();
ns.x = x;
ns.y = y;
ns.anchorOffsetX = anchorX;
ns.graphics.lineStyle(2,0x000000);
ns.graphics.moveTo(0,0);
ns.graphics.lineTo(100,0);
this.addChild(ns);
}
從上圖中可以很明顯的看到錨點對於畫面中真實繪製出線段的影響,即元素a在畫面中實際的橫座標為x’ = a.x - a.anchorOffsetX。程式碼在執行到moveTo那一行時,元素根據屬性被定位到x=100,y=100後,由於其左上角的錨點被設定為anchorOffsetX=50,anchorOffsetY=0的關係,因此會按照錨點的設定位置向左偏移50再開始繪製初始點。
所以,如果我們必須改變moveTo的初始點和終點,或者改變元素本身的x座標,才能達到和原線段相同的位置:
protected startCreateScene(): void {
this.drawLineAnchor(100, 100, 0);
this.drawLineAnchorFixMove(100, 150, 50); // 修改起點終點
this.drawLineAnchorFixX(100, 200, 100); // 修改x座標
}
protected drawLineAnchor(){...} // 方法略
protected drawLineAnchorFixMove(x, y, anchorX): void {
let ns = new egret.Shape();
ns.x = x;
ns.y = y;
ns.anchorOffsetX = anchorX;
ns.graphics.lineStyle(1, 0x000000);
ns.graphics.moveTo(0 + anchorX, 0); // 修改線段起始點
ns.graphics.lineTo(100 + anchorX, 0); // 修改線段終點
this.addChild(ns);
}
protected drawLineAnchorFixX(x, y, anchorX): void {
let ns = new egret.Shape();
ns.x = x + anchorX; // 修改整個容器的橫座標
ns.y = y;
ns.anchorOffsetX = anchorX;
ns.graphics.lineStyle(1, 0x000000);
ns.graphics.moveTo(0, 0);
ns.graphics.lineTo(100, 0);
this.addChild(ns);
}
現在大家應該能理解設定錨點之後元素的具體位置了。
相關推薦
白鷺引擎(egret)中錨點(anchoroffset)的位置體會
原文連結 首先關於錨點的作用,我們就以一根線段旋轉90度為例: 先繪製一根水平的直線,長度為100 protected startCreateScene(): void { this.drawOneLine(); } prot
html中錨點的使用
gets intval 16px itl eth 什麽 current erl -h 如今總結一下控制錨點的幾種情況: 1. 在同一頁面中 [html] view plaincopy <a name=&q
白鷺引擎egret打包成微信小遊戲
1、匯入專案以後開啟檔案egretproperties.json修改target 下面的current的web為wxgame r 然後點開打包 在這裡填寫微信小遊戲id以及命名,打包成功以後,即可用微信開發者工具來允許,如果報錯請把縮放模式改成f
vue中錨點的三種方法
第一種: router.js中新增 mode: 'history', srcollBehavior(to,from,savedPosition){ if(to.hash){ return { selector:to.hash } } } 元件: &
cocos2d-x中錨點設定及定位方式
說 在 前面: 以下 是 基於 cocos2d-2.0-x-2.0.3 作 的 總結 在cocos2d示例程式碼HelloCpp中,為什麼要將CCMenu設定位置到CCPointZero,即使CCMenu的錨點是在(0.5, 0.5)? 這是因為CCMenu沒有使
點選導航,滑動到網頁中的指定位置(JS實現滑動錨點定位)
在一個網頁頁面中,可能會分為很多的模組內容,當我點選導航欄的某一項時,希望顯示對應的內容,例如,點選下圖導航中的報告服務後,希望網頁滑動到 “報告服務” 的模組,點選城市品牌滑動到“城市品牌”的模組。
錨點的使用(連結到網頁中某個位置)
概述 使用命名錨記可以在文件中設定標記,這些標記通常放在文件的特定主題處或頂部。然後可以建立到這些命名錨記的連結,這些連結可快速將訪問者帶到指定位置。 建立到命名錨記的連結的過程分為兩步。首先,建立命名錨記,然後建立到該命名錨記的連結。 建立命名錨
html錨點 點擊跳轉到頁面指定位置
刷新 mlp kml fwe dpf sil ava vlm pyc 本來是在看阮大神寫的ajax教程,突然發現點擊目錄文字會跳轉到相對應的文本內容,於是乎激發了我的興趣。 這個究竟怎麽做的,剛開始看的時候一知半解,找度娘就是:“點擊跳轉到頁面指定位置”,找了下,原來專業術
html中設置錨點定位的幾種常見方法
element 針對 htm com script int nbsp onclick .get 1,使用id定位: <a href="#1F" name="1F">錨點1</a> <div name="1F"> <p>
canvas和白鷺引擎中平移,旋轉,縮放
都是 canvas 引擎 偏移 坐標 這一 text sla 偏移量 canvas中的 translate() 和白鷺引擎中的 .x 或者 .y 所導致的平移效果並不是移動 目標元素,而是移動目標元素父親所在的坐標系。 例如 bgg.translate(100,100)
關於Unity中NGUI的Pivot和錨點
wid height http -1 貼圖 關於 位置 ngui 技術 Pivot 創建一個Sprite1節點,關聯一個圖集和一張貼圖,用圖中的六個按鈕調整這個貼圖的Pivot點,一共有八個點可以選擇 再創建一個Sprite2節點,作為Sprite1節點的子節點,關聯一個圖
[原創]css中a標簽去掉錨點文本下劃線
記錄 asp href 實例 參數 ext -s get 其他 我對博客的認識是:記錄問題,解決問題,分享知識。如果有輪子,我不需要造輪子。 1.問題解決方式: 設置屬性:text-decoration:none; 2.更多屬性參數參考 text-decor
HTML中a標簽的錨點
錨點 找到 type span head pre 要去 img itl 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"
白鷺引擎實現點選後長按離開事件繫結
白鷺引擎 版本:5.2.8 描述:實現長按效果 繫結事件: this.物件.addEventListener(egret.TouchEvent.TOUCH_BEGIN,this.onPlayClick,this); //離開的事件
egret白鷺引擎應用
工具:EgretLauncher(管理專案),EgretWing(開發),TextureMerger(Sprite Sheet圖片整合 Egret MovieClip動圖gif製作) 文件:egret擴充套件庫 頁面UI:exml=>Group包含,九宮格詳細約束實線適配
html中a標籤錨點定位雙擊跳轉路徑的問題
###錨點 在製作網頁時,我們常常遇到需要新增側邊導航,通過點選導航讓頁面自動滾動到指定位置,如:電商網站的樓層。這就涉及到<a>標籤的錨點應用,把它稱為“錨點標籤”。 通俗的講,我們想要讓頁面跳轉到的位置,就是錨點。錨點是一種超連結,只不過它是頁面內部的超連結,它指向頁
【Egret優化分享】白鷺引擎王澤:重度H5遊戲效能優化技巧
本文轉自:https://mp.weixin.qq.com/s/GIzXA51D7_hMqajCRuJE2g 9月15日,無懼17級颱風“山竹”,320名開發者齊聚廣州貝塔空間共同探討“怎樣做一款賺錢的小遊戲”。針對眾多開發者關心的重度H5遊戲效能優化技巧,我們整理了現場速記分享給
OpenCv-C++-亞畫素級別角點檢測(檢測子畫素中的corner的位置)
使用亞畫素級別角點檢測,返回角點的浮點數值,它的精度比整數畫素更準確。可以用cornerSubPix()函式將角點定位到子畫素,從而取得亞畫素級別的角點檢測效果。 使用函式: void cv::cornerSubPix ( InputArray image, InputOutputArray
vue專案中關於錨點的(帶變數)使用方法(全域性使用)
問題 在普通html中,錨點的使用方法是: <a href="#123">點選就定位到123的錨點</a> ... <div id="123">這裡是錨點的位置</div> 但在vue專案中,各個頁面被劃分成了很多元件,經常是在
影象中某點繞點旋轉後的座標,影象旋轉座標位置
影象中某點繞點旋轉後的座標,影象旋轉座標位置 在平面座標上,任意點P(x1,y1),繞一個座標點Q(x2,y2)旋轉θ角度後,新的座標設為(x, y)的計算公式: x= (x1 - x2)* cos(θ) -