總覽
命中是指指標事件與圖形檢視之間的互動點。
命中測試是指「觀察項目」判斷應轉送哪些命中的程序 可向哪些客戶放送
命中區域
客戶提交的圖像內容本身並無直接關係,相反地 是附加至 Flatland 轉換的矩形命中區域 內容檢視畫面來接收輸入事件。
為方便開發人員使用 Flatland API,每個資料檢視都有預設命中 區域。這些命中區域為一般命中區域,但間接加入 呼叫 SetRootView() 的根轉換詳情請參閱 「預設命中區域」一節。
語意瀏覽權限
Flatland 用戶端可附加至轉換的兩種命中區域類型: 語意上可見和語意不可見的命中區域如果 大多數用戶端可以忽略語意可見性,因為其僅用於極少數 以及無障礙功能設計詳情請參閱 語意瀏覽權限 頁面。
演算法的概要總覽
假設在某個點 (x,y) 出現命中,這個 View 包含地理位置最頂層 (以「最後」為主) 與語意相容的命中區域,有交集 (x,y) 符號 才會收到命中。接著將相關規定分為多個部分。
熱門
如果父項和子項轉換有內容,子項轉換就會繪製在 它在父項轉換的頂端,且在父項後面,也位於父項之後。
假設兩個同層轉換具有相同父項,則子項透過 last 新增 AddChild() 位於同層級之後,位於其上。
語意相容性
語意命中測試不會與語意上看不見的命中區域互動。
請參閱語意瀏覽權限 頁面。
重疊
如果命中區域邊框上的命中資料也會計入該命中區域, 也就是匹配區域
如果兩個以上轉換共用邊界,該分解器會進入 擷取訓練資料
預設命中區域
根據預設,雖然檢視畫面本身並非可點擊,但 API 用戶端通常預期會預期 因此 Flatland 建立了全螢幕 透過某個管道安裝根轉換時,檢視表的預設命中區域 (DHR) SetRootTransform() 呼叫,除非用戶端手動指定自己的命中 區域。
DHR 的大小最大,因此將 View 調整成較大應該不會導致 螢幕上的一部分會變得難以置信
下列規則可摘要說明預設命中區域的語意:
- 在 SetRootTransform(T) 呼叫期間,系統會在根轉換 T 中新增 DHR 只有在「之前」沒有進行 SetHitRegions(T) 呼叫的情況下才會發生。
- 在 SetRootTransform(T)「之後」呼叫 SetHitRegions(T, hit_region_vector) 呼叫會覆寫 DHR,即使 |hit_region_vector| 也一樣沒有內容。
- 系統只會為指定的根轉換安裝 DHR,只要為根轉換 View。
- 特定轉換 T 的 DHR 不會受到 任何其他變造方式,U.
以下舉幾個例子來說明語意。
情境 1:
SetRootTransform(T)
結束狀態:T 有 DHR。
情境 2:
SetRootTransform(T)
SetRootTransform(U)
結束狀態:T 沒有命中區域,U 則使用 DHR。
情境 3:
情境 3A
SetRootTransform(T)
SetHitRegions(T, {HR1})
情境 3B
SetHitRegions(T, {HR1})
SetRootTransform(T)
3A 和 3B 的結束狀態:T 有一個命中區域,HR1。沒有 DHR。
情境 4:
SetRootTransform(T)
SetHitRegions(T, { {} })
結束狀態:T 沒有命中區域
情境 5
SetRootTransform(T)
SetRootTransform(U)
SetHitRegions(T, {HR1, HR2})
結束狀態:T 有兩個命中區域,HR1 和 HR2。你們有 DHR。