博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Silverlight:Downloader的使用(event篇)
阅读量:6249 次
发布时间:2019-06-22

本文共 4236 字,大约阅读时间需要 14 分钟。


(1)Downloader的使用

首先我们看什么是Downloader,就是一个为描述Silverlight plug-in下载功能的集合.Downloader能异步的通过HTTP GET Request下载内容.他是一个能帮助Silverlight下载内容的一个对象,这些下载内容包括(XMAL content,JavaScript content,ZIP packages,Media,images).当Silverlight plug-in安装时候,并不能完全提供所有应用程序的内容,但在一经请求这些内容就会响应应用程序的需要.更重要的是,你能在呈现内容后它仍然能被使用,而且不需要刷新业面.Downloader对象提供了初始数据传输的功能,通过事件和状态性质监控数据传输过程,并重新找到数据过程.
这个Downloader 对象的属性和方法模仿XMLHttpRequest(XHR)的一系列的APIs.XHR提供 JavaScript和其他Web浏览器脚本语言来传输和操作通过HTTP来于web Server端的XML数据.
通常你不详细指定Downloader 的URI;但你能指定URIs,并使用URI的配置是最初在安装Silverlight plug-in所指定主机器的HTML页面的地址.Downloader不能被用来跨域下载文件(内容不是来于最初始主机也面的地址).
下面给出一个事列显示怎样create, initialize, and execute 一个下载请求.为一个 被操作者挂上两个事件是(Completed, DownloadProgressChanged),但被操作者没有被指定,还有DownloadFailed也没有被定义.所以你要自己写一个.
//
 Event handler for initializing and executing a download request.
function
 onMouseLeftButtonUp(sender, eventArgs)
{
    
// Retrieve a reference to the plug-in.
    var slPlugin = sender.getHost();
    
// Create a Downloader object.
    var downloader = slPlugin.createObject("downloader");
    
// Add DownloadProgressChanged and Completed events.
    downloader.addEventListener("downloadProgressChanged", onDownloadProgressChanged);
    downloader.addEventListener(
"completed", onCompleted);
    
// Initialize the Downloader request.
    // NOTE: downloader APIs disallow file:\\ scheme
    // you must run this sample over localhost: or off a server or the following call will fail
    downloader.open(
"GET""promo.png");
    
// Execute the Downloader request.
    downloader.send();
}

(2):DownloadFailed

    当下载请求完成时没有下载内容时触发.

参数:
  参数名 描述  
 类型
  downloaderObject
 一个Downloader对象. Object
  token  是一个函数的返回值,能随意的保留如变量.如你想要调用RemoveEventLister去删除这个被操作者,你将需要这个参数   integer
  eventhandlerFunction  在脚本中被定义的你的事件函数名,当使用AddEventListener pararmeter,就不需要提供函数名.  Object
事件参数:
  sender
  识别调用事件的对象 
 Object
  eventArgs  
 参数始终为 null    Object
     
         

DownloadFailed 当下载请求完成时没有下载内容时触发.异步的调用Downloader的Send方法.主要由Status和StatusText的属性来反应HTTP的状态值来确定错误的下载请求.

你还能在脚本中添加一个事件名来添加操作者:
downloaderObject.AddEventListener(
"
DownloadFailed
"
"
eventhandlerFunction
"
)
这里就回返回一个token;删除操作时这个token就不是绝对需要,在这里是添加操作.所以需要.
DownloadFailed当下载请求完成时没有下载内容时触发,你使用一个Completed事件去取得Downloader对象所响应的文本.当你正在下载发生突发的错误,你将还是能添加一个DownloadFailed事件到你的应用程序和为DownloadFailed事件写入适当代码,最终解决你的内容不存在的问题.

(3)DownloadProgressChanged

在求情下载期间被出发.
参数:
  参数名 描述  
 类型
  downloaderObject
 一个Downloader对象. Object
  token  是一个函数的返回值,能随意的保留如变量.如你想要调用RemoveEventLister去删除这个被操作者,你将需要这个参数   integer
  eventhandlerFunction  在脚本中被定义的你的事件函数名,当使用AddEventListener pararmeter,就不需要提供函数名.  Object
事件参数:
  sender
  识别调用事件的对象 
 Object
  eventArgs  
 参数始终为 null    Object
     
         

DownloadProgressChanged 事件能被使用监控下载进程.DownloadProgressChanged是按照被下载内容总长度的0.05显示,最高可达到1.0.当下载状态改变时都将出发Completed 或DownloadFailed.
你还能在脚本中添加一个事件名来添加操作者:
downloaderObject.AddEventListener(
"
DownloadProgressChanged
"
"
eventhandlerFunction
"
)
语法这里还是就回返回一个token;删除操作时这个token就不是绝对需要,在这里是添加操作.所以需要.
在事件数据中这个进程要数不能被转载.取而代之的是使用Downloader对象的属性触发事件.That object is always the sender of the event.
------------------------------------------------------------
//
 Event handler for updating visual progress indicator
function
 onDownloadProgressChanged(sender, eventArgs)
{
    
// Calculate the downloaded percentage.
    var percentage = Math.floor(sender.downloadProgress * 100);
    
// Update the Rectangle and TextBlock objects of the visual progress indicator.
    progressText.text = percentage + "%";
    progressRectangle.width 
= percentage * 2;
}

(4)Completed

在请求下载内容完成时触发.
Completed在请求下载内容完成时触发.异步的调用Downloader的Send方法.主要由Status和StatusText的性质来反应HTTP的状态值来确定错误的下载请求.
你还能在脚本中添加一个事件名来添加操作者:
downloaderObject.AddEventListener(
"
Completed
"
"
eventhandlerFunction
"
)
语法这里还是就回返回一个token;删除操作时这个token就不是绝对需要,在这里是添加操作.所以需要.
Completed在请求下载内容完成时触发.并返回下载内容,你使用一个Completed事件去取得Downloader对象所响应的文本,在选择使用ResponseText性质或GetResponseText方法时.依赖于下载方式是否以包的形式,如是包的形式你就要指定part.
事例是定义一个取得下载内容的Completed事件函数,是单个文件下载(没有使用包)
//
 Event handler for the Completed event.
function
 onCompleted(sender, eventArgs)
{
    
// Retrieve downloaded XAML content.
    var xamlFragment = sender.ResponseText;
    
// Create the objects from the XAML content.
    var plugin = sender.getHost();
    
var button = plugin.content.createFromXaml(xamlFragment);
    
// Add downloaded XAML content to the root Canvas of the plug-in.
    var rootCanvas = sender.findName("rootCanvas");
    rootCanvas.children.add(button);
}
你可能感兴趣的文章
mysql explain
查看>>
golang交叉编译工具,gox使用入门
查看>>
Redis Master-Slave 读写分离测试
查看>>
git bash常用命令行以及初次接触yo以及bower
查看>>
修改MySQL默认空密码
查看>>
spring mvc访问静态文件(css/js/img)访问不到
查看>>
spring boot框架学习学前掌握之重要注解(1)-sprng的java配置方式
查看>>
plsql 书籍基础表结构
查看>>
nginx 第三方模块 modsecurity安装使用
查看>>
Kettle使用问题记录
查看>>
Android 透明(沉浸式)状态栏设计
查看>>
关于UIView的autoresizingMask属性
查看>>
sparkSQL UDF创建
查看>>
spring4中获取泛型的bean
查看>>
Ansible notes
查看>>
js实现二叉树
查看>>
【工具使用系列】关于 MATLAB 硬件通讯
查看>>
(三)SpringBoot——模板引擎thymeleaf
查看>>
web应用路径获取实例
查看>>
建立发布智能合约
查看>>