一種不匯出元件載入並操作其他swf中類和元件的方法

2022-05-06 14:24:11 字數 913 閱讀 9098

這是糾結了2天的經驗,不記錄下來對不起自己的時間啊。

問題是這麼發生的:2個網頁中的swf要用到統一一組簡單的ui元件(sprite的派生類),然後我第一想到的就是傳說中的rsl(執行時共享庫)。不過折騰了半天,似乎是因為不是單純的共享資源,還包含一部分用tweenlite控制的動畫**,直接操作元件裡舞台上拖放的命名元件。控制這些元件的**在要使用共享庫的fla中一直報告找不到的錯誤。

於是不再使用flash ide上設定rsl匯出的方法,自己用loader 去載入ui.swf,然後在ui.swf的文件類中用乙個工廠方法create(type:uitype)來建立各種元件例項,uitype是包含所有ui元素型別的列舉。但是問題依然存在,經過反覆試驗排查發現,只要是**中import了ui庫中和元件繫結的那些類,並且使用ui.swf的fla中有建立ui.swf中元件的**,就會報錯。錯誤的原因主要是在使用者的環境裡錯誤的編譯了 公用庫的**。自然地想到如果能徹底分離ui.swf的介面與實現,就可能解決這個問題。

於是最後的方案出現了, 為所有的ui元件定義了一套介面,放到ui.i包中讓使用ui的fla匯入,建立工作仍是交給文件類完成,只不過文件類從loader.content獲取之後保持object的型別,不import文件類的定義直接呼叫它的create方法,返回的結果as為對應的ui元素介面,比如imessagebox,即可。使用這種結構組織**後沒有再出現上文中提出的錯誤。隨後把loader載入ui.swf的邏輯封裝進另外乙個uimanager類,**看起來更加整齊了。

這個方案的好處是乙個swf中可以包含多個元件,不用把元件乙個乙個匯出,在文件類的create中按型別加入建立例項的**即可。定義介面會用掉一些時間,不過呼叫方可以由此獲得**提示,方便操作。

這個方案並不完美,還要等學習研究了製作基於uicomponent的元件方法之後再做比較,改進。

先做個記錄,詳細的**範例整理後再放出。

「不浪費」是一種精神

又乙個寒假過去了。寒假前,公尺老師為我們的住宿 吃飯問題著急 又不忍心發脾氣的場景,還在讓我心裡偷著樂著。這乙個寒假,我們在食堂吃飯,公尺老師努力的結果。為了讓我們在假期有乙個好的生活 學習環境,吃飯問題 住宿問題 喝水問題 安全問題,公尺老師處處盡心。在食堂吃飯的過程中,出現了乙個問題 浪費。浪費...

有一種思念叫不聯絡

有時候,你很想念乙個人 但你不會給他打 因為 打 給他 對方冷冷的一句 喂 會讓你不知說什麼好 還是不打比較好 發個資訊吧 好怕對方不回資訊 要不 就算回了也就簡短到讓人心疼的乙個 哦 打 給久未謀面的知己 以前 你們什麼都可以談 現在 通 了,只會談一些無關緊要的事 那種感覺並不好。此後 當你想她...

有一種思念叫不聯絡

有時候,你很想念乙個人 但你不會給他打 因為 打 給他 對方冷冷的一句 喂 會讓你不知說什麼好 還是不打比較好 發個資訊吧 好怕對方不回資訊 要不 就算回了也就簡短到讓人心疼的乙個 哦 打 給久未謀面的知己 以前 你們什麼都可以談 現在 通 了,只會談一些無關緊要的事 那種感覺並不好。此後 當你想她...