日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

别指望在NativeWindow里添加Flex组件

發(fā)布時間:2024/4/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 别指望在NativeWindow里添加Flex组件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

別指望在NativeWindow里添加Flex組件

--------------------------------------------------------------------------------
作者: Y.Boy 2009年4月30日
?http://riaoo.com/?p=722


??? 在AIR里,NativeWindow 窗口沒有 addChild() 方法,那也就是說,不能把顯示對象直接添加到 NativeWindow 了。發(fā)現(xiàn) NativeWindow 有 stage 屬性,這個 stage 是 NativeWindow 窗口舞臺,可以往里面添加顯示對象。本以為就是這么簡單,但,發(fā)覺直接往這個 stage 添加 Flex 組件是不行的。就像你想在 flash 里使用 flex 組件一樣,行不通。
?
解決辦法有二:
?1.使用先進的 Window 組件,拋棄 NativeWindow;
?2.把你想添加到 NativeWindow 窗口里的組件先通過 addChild() 方法添加 到 WindowedApplication 里,確定所有組件都已經(jīng) createComplete 后,獲得它們的引用。此時,你就可以 close 掉 WindowedApplication,把引用了的組件直接添加到 NativeWindow.stage 里就是了。
?
第一種方法是最佳的,第二種方法是 Window 組件還沒出現(xiàn)時的應(yīng)急措施。

?

Flex:Air的NativeWindow和Window的區(qū)別(留意原文的右側(cè)Flash標簽云,酷) .
2011-05-15 20:45227人閱讀評論(0)收藏舉報
http://blog.csdn.net/huanghr_1/article/details/6422950


推薦原因:在Air窗口中寫HtmlTex用到。????
?
?? 由于小軟件開發(fā)到后期的時候發(fā)現(xiàn)自己的美術(shù)功底實在不夠,于是將程序轉(zhuǎn)為用Flash builder4 beta2開發(fā)。但是由于之前幾乎沒用過Flex開發(fā)過任何東西,因此不會Flex,所以在用Flash builder4 beta開發(fā)的時候遇到一些問題,解決過程中很是惱火,其中關(guān)于打開新窗口的問題很是糾結(jié)。
?
??????? 在開發(fā)AIR的過程中,不免要打開一個主程序窗口之外的窗口,這時候有3個方法打開新窗口,分別為NativeWindow和Window。事實上通用的方式使用NativeWindow,而Window是一個Flex封裝的方法,被封裝在mx.core.Window中,并且內(nèi)部引用了NativeWindow方法,而createRootWindow則是創(chuàng)建一個基于HTML的窗口。而在使用3個方法的時候,NativeWindow的DIY空間更大,但是它有一個很煩的局限性,那就是不能直接加入Flex組件,只能加入外部Loader進來的SWF或其他元素。
?
??????? 下面只討論前兩種方法。由于插件問題,代碼中所有半角雙引號都被替換為了:" 字符。為了避免錯誤,如要復制代碼,請使用代碼塊上方的工具,點擊“view code”可以在新視窗中查看完整無錯代碼,然后在此視窗復制即可。
?
??????? 用NativeWindow對象創(chuàng)建新窗口如下:
??????? var options:NativeWindowInitOptions = new NativeWindowInitOptions();
?????? options.transparent = true;//true/false
?????? options.systemChrome = NativeWindowSystemChrome.NONE;//none/STANDARD
?????? options.type = NativeWindowType.UTILITY;//type="utility";//"normal"//"lightweight"//"utility"
?????? newWindow= new NativeWindow(options);
?????? newWindow.title = "新窗口";
?????? newWindow.stage.align = StageAlign.TOP_LEFT;
?????? newWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
?????? newWindow.activate();
?
???????? 在使用該方法的時候,你不能向newWindow里面添加任何按鈕、DateChooser之類的Flex 組件,但是你可以像新窗口的舞臺對象里面添加外部加載SWF和Image等元素,具體方法為:newWindow.stage.addChild(someSprite)。
?
??????? 那么如何在新窗口中動態(tài)加入Flex 組件?使用Window方法。代碼如下:
??var newWindow:Window=new Window();
??????? var datePicker:DateChooser=new DateChooser();
?newWindow.transparent=true;
?newWindow.type=NativeWindowType.UTILITY;
?newWindow.systemChrome=NativeWindowSystemChrome.NONE;
?newWindow.addChild(datePicker);
?newWindow.title="新窗口";
?newWindow.height=300;
?newWindow.width=300;
?newWindow.open(true);
???????? 在new一個Window之前,你需要導入該包:import mx.core.Window;(Flash builder4下)。在使用Window方法創(chuàng)建新窗口的時候,可以將其transparent屬性設(shè)置為true和flase,在設(shè)置該屬性的時候必須保證open方法未調(diào)用才能成功,open方法一旦調(diào)用,該屬性會被設(shè)置為只讀。設(shè)置為false的時候新窗口將被系統(tǒng)鑲邊,而設(shè)置為true的時候與NativeWindow不同是這時進行組件鑲邊,即是會自動使用Window內(nèi)建的UI鑲邊,而NativeWindow的transparent被設(shè)置為true的時候,是沒有任何鑲邊的。在這一點上我很是惱火,因為我既想在新窗口中使用Flex組件,又不想有任何鑲邊,于是只有興嘆魚和熊掌不可兼得……
?
??????? 如何讓魚和熊掌兼得,本人繼續(xù)探索中……
?
??????? 補:后來在一個技術(shù)群里面說到這個問題的時候,一個網(wǎng)友提供了這種方法讓NativeWindow加入Flex組建的方法,即是先New一個Flex組件,等待改組件創(chuàng)建完成后將Flex組件加入到WindowAppliction里面,再加入到NativeWindow窗口中:
??var options:NativeWindowInitOptions = new NativeWindowInitOptions();
?options.transparent = true;//true/false
?options.systemChrome = NativeWindowSystemChrome.NONE;//none/STANDARD
?options.type = NativeWindowType.UTILITY;//type="utility";//"normal"//"lightweight"//"utility"
?newWindow= new NativeWindow(options);
?newWindow.title = "新窗口";
?newWindow.stage.align = StageAlign.TOP_LEFT;
?newWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
?newWindow.activate();
????
?datePicker=new DateChooser();
?this.addElement(datePicker);

?datePicker.addEventListener(FlexEvent.CREATION_COMPLETE,cp);
?
?function cp(e:FlexEvent):void{
??newWindow.stage.addChild(datePicker);
??datePicker.visible=true;
?}

轉(zhuǎn)載于:https://www.cnblogs.com/ketutyou/archive/2012/02/15/2352458.html

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的别指望在NativeWindow里添加Flex组件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。