在flash專案中,我們一般都需要載入外部檔案:共享庫,xml,,**等等。在多數情況下,我們都希望能夠控制這些載入的檔案的先後順序。如在flash遊戲中,我們希望使用者先看到地圖,然後是可視範圍內的人物。有的時候,我們希望先載入xml,能暫停那些不重要的載入(地圖快取資料),先處理資料傳送。
為了解決以上提到的功能需要,我和我的同事austin一起著手寫乙個更好用的載入佇列。我們暫時取名為:loaderqueue。在一開始,我們就希望它能支援優先順序,多程序和更易用。
ok,看看它有哪些特色:
1. 基於介面,方便擴充套件易於學習
loaderqueue提供兩個介面:iloaderqueue用於定義對外的一致介面,主要負責新增和刪除不同的iloaderadapter,該介面目前有唯一的實現:loaderqueue。
iloaderadapter定義乙個一致的介面用於實現不同型別檔案的載入,目前內建的有loader、urlloader、sound和urlstream也可以根據專案需要新增更多。
基本用法:
//例項化loaderqueue,2程序, 延遲100毫秒2. 優先順序控制loaderqueue = new loaderqueue(2, 100, true);
//新增乙個載入
//新增乙個載入
從上圖可以看出,loaderqueue載入順序是從優先順序高的開始載入,在載入過程中,如果有優先順序高的載入插入,會暫停優先順序較低的載入,先載入高的物件。
3. 連線池
iloaderqueue.threadlimit 屬性用於控制同時可載入的物件數目。你可以在建構函式中指定,也可以在在載入過程中調整。
4. 快取管理
如果乙個檔案已經載入過(快取在瀏覽器中),事實上再次載入是不需要花費多少時間的,如果再次加入佇列,它有可能需要排隊(如果優先順序低的話),這無形浪費了很多時間,使用者體驗也不好,此時,設定 loaderqueue.jumpqueueifcached = true,可以開啟該功能。該引數預設為true。
支援禁用快取,設定loaderadptaer.preventcache = true;即可禁用快取。
5. 支援對單個或多個檔案載入進度及情況進行監控
loaderqueue只提供單個檔案是事件排程,當需要處理一批檔案的載入進度時,我們需要使用loaderprogress物件。示例如下:
//例項化loaderqueue,2程序, 延遲100毫秒6. 非索引式獲取乙個載入物件,而是直接獲得載入物件例項loaderqueue = new loaderqueue(2, 100, true);
//例項化乙個loaderprogress
var loaderprogress:loaderprogress = new loaderprogress();
//監聽進度事件
loaderprogress.addeventlistener(event.change,
function(event:event):void
);//新增乙個載入
//新增乙個載入
//開始對進度監聽
loaderprogress.start();
//停止對進度監聽
從上面的例子可以看到,建立乙個iloaderadapter例項時,loaderqueue並不儲存對該例項獲取的索引,因此,例項化iloaderadapter的物件必須自己保持iloaderadapter的指標。這樣的好處是例項建立者才可以獲得iloaderadapter例項,而不是任何物件都可以通過乙個string名稱就可以得到。
7.失敗重連
maxtries引數可以設定當載入失敗時重試次數,預設為3次。
該功能已經在乙個社交**中用到,效果很不錯。我會增加這個工具。有興趣的朋友可以看看。:)
demo:
python優先順序佇列 python 優先順序佇列
簡介 優先順序佇列是基於堆的,關於堆的時候可以參考文章堆,優先順序佇列就是入隊時,會分配乙個優先順序,之後出隊時,根據優先順序出列。如,入隊時 4,a 6,r 3 d 則出隊順序 6,r 4,a 3 d 優先順序佇列的python實現 class priorityqueue object def i...
Linux程序優先順序和調整優先順序
linux 是乙個多使用者 多工的作業系統,系統中通常執行著非常多的程序。但是 cpu 在乙個時鐘週期內只能運算一條指令 現在的 cpu 採用了多執行緒 多核心技術,所以在乙個時鐘週期內可以運算多條指令。但是同時運算的指令數也遠遠小於系統中的程序總數 那問題來了 誰應該先運算,誰應該後運算呢?這就需...
RTOS 優先順序翻轉與優先順序繼承
優先順序反轉,是指在使用訊號量時,可能會出現的這樣一種不合理的現象,即 高優先順序任務被低優先順序任務阻塞,導致高優先順序任務遲遲得不到排程。但其他中等優先順序的任務卻能搶到cpu資源。從現象上來看,好像是中優先順序的任務比高優先順序任務具有更高的優先權。具體來說 當高優先順序任務正等待訊號量 此訊...