2010-06-16 26 views
1

我已經用Flash Builder 4構建了Air 2/Flex 4信息亭應用程序。目前,我正在實施觸摸屏瀏覽器以使用戶能夠瀏覽公司培訓視頻。 爲了提高網站在觸摸屏上的可用性,我已經將HTML組件放入Doug McCune的DragScrollingCanvas(更新爲使用flex 4'Scroller組件)更新以允許用戶通過拖動手指來滾動網頁穿過屏幕。 mouseDown事件用於開始滾動視口。 此外,網頁被修改,以禁用與下面的CSS文本選擇:Flex HTMLLoader組件沒有爲所有鼠標點擊引發mouseDown事件

html { 
    -webkit-user-select: none; 
    cursor: default; 
} 

我所面臨的問題是,爲HTMLLoader組件只觸發一個鼠標按下如果在網頁中的鏈接/輸入/按鈕被點擊,不當背景或任何文字被點擊時。

此外,如果我刪除了自定義css,那麼當選擇文本時,mouseDown事件不會觸發,但會在單擊之前突出顯示的文本時觸發。

作爲一種替代方案,我還嘗試添加一個與HTMLLoader尺寸相同的組容器來檢測mouseDown事件(以便組容器和HTMLLoader具有相同的Dragable父容器),並且能夠捕獲mouseDown事件並滾動預期的視口。但是,由於鼠標事件是由組容器處理的,我現在無法瀏覽網頁。

有沒有人知道爲什麼HTMLLoader組件沒有爲所有鼠標點擊引發mouseDown事件?

回答

0

我面臨同樣的問題,一種解決這個問題的方法是在加載網頁完成時編寫javascript。

我不喜歡這樣寫道:

<mx:HTML id="html" ... > 
    <mx:complete> 
    var document:Object = html.htmlLoader.window.document; 
    var body:Object = document.getElementsByTagName("body"); 
    body[0].onmousedown = function(o:Object):void 
    { 
     trace("mouseDown"); 
     ... 
    } 
    </mx:complete> 
</mx:HTML> 
+0

我只是把自己放在腦袋裏,我無法相信我沒有想到這一點 - 偉大的解決方案謝謝! – shane 2010-08-03 04:08:40

1

還有另一種方式來解決這個問題,唯一的就是添加鼠標按下事件偵聽器HTMLLoader對象的父。將useCapture參數設置爲true。

parent.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler, true);