[Android] 疑難雜症 - Flex AIR的HTML Component在Android上無法正常顯示
一、問題描述:
Flex AIR程式如果需要內嵌Html Content功能時,通常會使用Html組件(mx.controls.HTML)來呈現,但是直接將含有此組件的AIR程式發佈至手機平台,將會產生網頁內容無法正常顯示的問題。
二、問題癥結:Mobile Device不支持 Flex HTML Component
由於Adobe MultiScreen計畫,因此它針對Html Content顯示建立了StageWebView類別,用來滿足各種類型裝置顯示Html內容的開發需求,目前除了TV之外其它裝置都有支援。StageWebView在Desktop Device上執行時會使用AIR WebKit engine,而若是移殖到Mobile Device,其功能會因於Device OS的Web Control機制不同而不同,總而言之,在Mobile平台上要正常顯示HTML內容請使用StageWebView。
三、解決方法:使用StageWebView
雖然StageWebView跟Flex HTML Component功能相似,但是實際使用起來卻有些許不同:其差異如下:
1. StageWebView不屬於DisplayObject,因此它不會被加入DisplayList,只能透過其stage屬性直接顯示在該stage上,它會被放在任何DisplayObject的上方。
2. 因為StageWebView物件不是DisplayObject,因此要改變其位置、大小時無法直接修改其x、y、width、height等屬性達成,但可以藉由其viewPort屬性來更改它的顯示位置及大小(位置是以stage上的座標為參考),但目前無法改變其顯示Depth,所以如果要重疊兩個物件時要注意。
3. StageWebView在取得focus後,當Keyboard input事件發生時,StageWebView物件有優先機會處理,Stage觸發的Keyboard input事件將不被處理,一般的事件處理流程在此不適用,因為StageWebView物件不在DisplayList裡。
Flex AIR程式如果需要內嵌Html Content功能時,通常會使用Html組件(mx.controls.HTML)來呈現,但是直接將含有此組件的AIR程式發佈至手機平台,將會產生網頁內容無法正常顯示的問題。
二、問題癥結:Mobile Device不支持 Flex HTML Component
由於Adobe MultiScreen計畫,因此它針對Html Content顯示建立了StageWebView類別,用來滿足各種類型裝置顯示Html內容的開發需求,目前除了TV之外其它裝置都有支援。StageWebView在Desktop Device上執行時會使用AIR WebKit engine,而若是移殖到Mobile Device,其功能會因於Device OS的Web Control機制不同而不同,總而言之,在Mobile平台上要正常顯示HTML內容請使用StageWebView。
三、解決方法:使用StageWebView
雖然StageWebView跟Flex HTML Component功能相似,但是實際使用起來卻有些許不同:其差異如下:
1. StageWebView不屬於DisplayObject,因此它不會被加入DisplayList,只能透過其stage屬性直接顯示在該stage上,它會被放在任何DisplayObject的上方。
2. 因為StageWebView物件不是DisplayObject,因此要改變其位置、大小時無法直接修改其x、y、width、height等屬性達成,但可以藉由其viewPort屬性來更改它的顯示位置及大小(位置是以stage上的座標為參考),但目前無法改變其顯示Depth,所以如果要重疊兩個物件時要注意。
3. StageWebView在取得focus後,當Keyboard input事件發生時,StageWebView物件有優先機會處理,Stage觸發的Keyboard input事件將不被處理,一般的事件處理流程在此不適用,因為StageWebView物件不在DisplayList裡。
感謝大大分享
回覆刪除