簡體   English   中英

FLEX:UIComponent單擊處理程序?

[英]FLEX: UIComponent Click Handler?

謝謝閱讀。

我試圖將標簽和圖像並排放置在UIComponent上。 出於效率考慮,我想使用UIComponent,並且整個組件比帶有圖標的按鈕還要復雜。

我試圖在整個UIComponent上獲得一個單擊處理程序,以便在標簽或圖像上發生單擊時都調用相同的[click]事件處理程序。 如果在根組件上添加單擊處理程序,則它可以工作,但是當我在標簽和圖像之間引入空格時,它們之間的空間變得不可單擊。 我通過對標簽和圖像使用move(x,y)方法在x / y坐標之間留出很小的間隙來產生空間。

有什么想法可以解決這個問題嗎?

謝謝。

關於倒矛的回答,這不是錯誤,它是已知的行為。 在某些情況下,您不希望容器的背景捕獲點擊,而這種行為使您可以控制它。

reverseSpear是正確的,因為UIComponent不處理其自己的背景樣式。 您可以繪制自己的透明背景來捕獲鼠標事件:

override protected function updateDisplayList(w:Number, h:Number):void
{
    super.updateDisplayList(w, h);

    var g:Graphics = this.graphics;
    g.clear();
    g.beginFill(0xFF0000, 0); // Fully transparent colour.
    g.drawRect(0, 0, w, h); // Draw to the full size of the UIComponent.
    g.endFill();
}

您可以改用mx:Spacer嗎? UIComponent不是容器,但這可能是您的問題。 您可以嘗試擴展mx.core.Container,而不是使用UIComponent。 但是先嘗試使用墊片。

編輯:我對這個問題的思考越多,我就會認為隔離墊會起作用。 對於UI組件單擊處理程序,真正發生的是UI組件中的各個元素正在注冊單擊,並且它們正在冒泡。 像建議的其他答案一樣,進行移動時,實際上沒有任何可記錄點擊的內容。 墊片應解決該問題,並且更容易。

我認為UI組件與畫布(從UI組件擴展)在處理點擊時遇到的問題相同。 單擊畫布時,即使將alpha設置為0(完全透明),也不會給畫布提供背景,否則不會發生任何事情。 這是Adobe知道的一個錯誤,但尚未修復,其想法是沒有BG實際上意味着那里沒有東西。 只要給它一個背景就可以使其點擊。 現在很不幸,UIComponent沒有任何背景樣式,您可以切換到畫布嗎? 另一種選擇是在UIComponent中包括一個圖像,將其alpha設置為0,將高度和寬度設置為100%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM