Silverlight中有一個(gè)Downloader對象,可以用來下載Silverlight應(yīng)用程序中相應(yīng)的文件,比如腳本、媒體文件等等。有了它就可以根據(jù)應(yīng)用程序的具體需要來下載相應(yīng)的文件,而不必在Silverlight插件初始化的時(shí)候就將整個(gè)應(yīng)用程序所需要的文件全部下載下來。這樣不僅可以節(jié)省用戶下載應(yīng)用程序所花費(fèi)的等待時(shí)間,還可以直接在應(yīng)用程序中動態(tài)使用下載下來的內(nèi)容而無需刷新整個(gè)頁面。
Downloader對象能夠初始化數(shù)據(jù)傳輸,監(jiān)視數(shù)據(jù)傳輸?shù)倪M(jìn)程,并能很方便的得到所下載的文件。加載應(yīng)用程序時(shí)的進(jìn)度條的實(shí)現(xiàn)就需要用到Downloader這個(gè)對象的強(qiáng)大功能。此外,Downloader對象還可以用來下載ZIP壓縮包,并可以從所下載的ZIP包中獲取單個(gè)文件。
要使用Downloader對象,首先要使用Silverlight的CreateObject方法在Silverlight插件中創(chuàng)建一個(gè)Downloader的對象實(shí)例。Downloader中有以下幾個(gè)常用的方法:
◆ Open方法用來實(shí)例化Downloader對象,并用來指定要下載的內(nèi)容。這個(gè)方法包含兩個(gè)類型為字符串的參數(shù):第一個(gè)參數(shù)指定了下載的行為,目前只支持"GET";第二個(gè)參數(shù)是一個(gè)URI,指明了下載的文件。
◆ Send方法用來執(zhí)行下載的請求。該方法不包含任何參數(shù),并用異步方法下載文件。
由于Downloader對象用異步方法下載文件,因此對下載后的文件操作一般都是通過事件觸發(fā)的方法來執(zhí)行的。可以使用addEventListener方法為Downloader的對象實(shí)例添加事件監(jiān)聽。addEventListener方法包含兩個(gè)參數(shù):第一個(gè)參數(shù)指明了所要偵聽的Downloader事件;第二個(gè)參數(shù)指明了事件處理姆椒。Downloader對象一共有三個(gè)事件:
◆ Completed事件在下載請求完成,并返回下載內(nèi)容的時(shí)候觸發(fā)。
◆ DownloadFailed事件在下載失敗時(shí)返回。
◆ DownloadProgressChanged事件在下載過程中觸發(fā)。
一個(gè)使用Downloader對象的例子
function onDemandLoaded(sender, eventArgs)
...{
//首先得到當(dāng)前Silverlight插件的引用
var SilverlightPlugin = sender.getHost();
//創(chuàng)建一個(gè)Downloader對象
var downloader = SilverlightPlugin.createObject("downloader");
//初始化Downloader對象
downloader.open("GET", "myPage.xaml");
//執(zhí)行下載請求
downloader.send();
//添加事件偵聽
downloader.addEventListener("downloadProgressChanged", onDownloadProgressChanged);
downloader.addEventListener("completed", onCompleted);
}
function onDownloadProgressChanged(sender, eventArgs)
...{
//sender返回的即是已下載的文件對象
}
function onCompleted(sender, eventArgs)
...{
}
轉(zhuǎn)帖于:軟件水平考試_考試吧