SplashScreenSource的妙用

简介: 默认初始屏幕体验 在托管 API 下为 Silverlight 定义的默认体验是:超出某一时间阈值(约为 0.5 秒)的任何加载都将在内容区域中显示基于 XAML 的动画。显示该默认动画和初始化序列的 XAML 被硬编码到 Silverlight 插件中。

默认初始屏幕体验


在托管 API 下为 Silverlight 定义的默认体验是:超出某一时间阈值(约为 0.5 秒)的任何加载都将在内容区域中显示基于 XAML 的动画。显示该默认动画和初始化序列的 XAML 被硬编码到 Silverlight 插件中。

为了替换默认初始屏幕,您为在 HTML 中定义 object 元素的 Silverlight 插件的 splashScreenSource 参数提供一个值。或者,用于 Silverlight 的 ASP.NET 控件将定义一些 API,这些 API 将所需的初始屏幕相关参数设置到其在 HTML 中的输出 object 元素中。



以上是其的官方解释,简单的说呢就是可以 利用初始屏幕来制作自定义的loading效果

官方的中文文档写的相当详细了,这里我就不在做重复的熬述。
http://msdn.microsoft.com/zh-cn/library/cc838130%28VS.95%29.aspx


做法
1.先自己做一个想要的初始屏幕的xaml(在blend中创建一个silverlight 1的项目,用blend画一个loading界面)
< Canvas
        
xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
        x:Name
="parentCanvas"
        xmlns:d
="http://schemas.microsoft.com/expression/blend/2008"  
        xmlns:mc
="http://schemas.openxmlformats.org/markup-compatibility/2006"  
        mc:Ignorable
="d" >
  
< Grid  x:Name ="LayoutRoot" >
    
< Grid   HorizontalAlignment ="Center"  VerticalAlignment ="Center"  Width ="280"  Height ="37.807" >
    
< Canvas  Width ="280"  Height ="37.807" >
      
< TextBlock  FontSize ="22"  Foreground ="#FF949494"  TextWrapping ="Wrap" >
        
< Run  Text ="SilverAlbum" />
      
</ TextBlock >
      
< TextBlock  x:Name ="StatusText"  
                 FontSize
="10"  
                 Foreground
="#FF949494"  
                 TextWrapping
="Wrap"  
                 Canvas.Left
="150"  Text =""  
                 Canvas.Top
="13.16" />
      
< Canvas  Canvas.Top ="25.807"  Width ="280"  Height ="12" >
        
< Rectangle  Stroke ="#FF949494"  StrokeThickness ="2"  Width ="280"  Height ="12" />
        
< Rectangle  x:Name ="ProgressBar"  
                   Width
="272"  
                   Height
="4"  
                   Fill
="#FF949494"  Canvas.Left ="4.26"  Canvas.Top ="4" >
          
< Rectangle.RenderTransform >
            
< TransformGroup >
              
< ScaleTransform  x:Name ="ProgressBarTransform"  ScaleY ="1"  ScaleX ="0" />
              
< SkewTransform />
              
< RotateTransform />
              
< TranslateTransform  Y ="0"  X ="0" />
            
</ TransformGroup >
          
</ Rectangle.RenderTransform >
        
</ Rectangle >
      
</ Canvas >
    
</ Canvas >
    
</ Grid >
  
</ Grid >
</ Canvas >

2.在html页面中silverlightHost的地方修改以下代码



3.编写js文件(做过silverlight1.0开发的朋友应该不会陌生,就是通过js来控制silverlight中的元素)
function  onSourceDownloadProgressChanged(sender, eventArgs) {
    sender.findName(
" LayoutRoot " ).Width  =  document.body.clientWidth;
    sender.findName(
" LayoutRoot " ).Height  = document.body.clientHeight;
    sender.findName(
" StatusText " ).Text  =  Math.round((eventArgs.progress  *   1000 ))  /   10   +   "  percent loaded " ;
    sender.findName(
" ProgressBarTransform " ).ScaleX  =  eventArgs.progress;
}

这样就完成了一个自定义的loading效果。  :)    很简单吧

看到这里再请看看不用SplashScreenSource的做法
对比下  ;)  哪种更见当方便?

效果预览: http://grmcac.com/silverlight/lab/silveralbum/
相关文章
|
1月前
|
安全 编译器 程序员
【C++ 泛型编程 进阶篇】C++ 可变参数模板的妙用:解决参数不足问题
【C++ 泛型编程 进阶篇】C++ 可变参数模板的妙用:解决参数不足问题
30 0
|
3月前
|
C++ 容器
C++11实用技术(四)for循环该怎么写
C++11实用技术(四)for循环该怎么写
24 0
|
4月前
|
机器学习/深度学习 算法 索引
Python函数、类和对象、流程控制语句if-else while的讲解及演示(图文解释 附源码)
Python函数、类和对象、流程控制语句if-else while的讲解及演示(图文解释 附源码)
35 0
|
4月前
|
算法
运算符的妙用以及部分机理解析
运算符的妙用以及部分机理解析
38 0
|
10月前
|
Python
while循环的妙用
while循环的妙用
51 1
|
10月前
|
JavaScript 前端开发 API
📕 重学JavaScript:请你列举一些常用的数组高阶函数
数组函数就是 JavaScript 高阶函数的一类,它的出现不仅可以帮助我们学习使用高阶函数,更重要的是它们可以让我们更方便地处理数组😊。这样的函数可以让我们的代码更加抽象、灵活和可复用😎。
56 0
|
11月前
|
算法
%和/的妙用
这个题一定要认真写,如果第一遍读不懂可以多读几遍,或者第二天再读 因为这个题的方法特别好
63 0
使用 Lambda 表达式的正确姿势,写得太好了叭
Lambda 表达式非常方便,在项目中一般在 stream 编程中用得比较多。 List<Student> studentList = gen(); Map<String, Student> map = studentList .stream() .collect(Collectors.toMap(Student::getId, a -> a, (a, b) -> a)); 理解一个 Lambda 表达式就三步: 1. 确认 Lambda 表达式的类型 2. 找到要实现的方法 3. 实现这个方法 就这三步,没其他的了。而每一步,都非常非常简单,以至于我分别展开讲一下,你就懂了。
|
Python 容器
吃透Python函数进阶嵌套等知识点
吃透Python函数进阶嵌套等知识点
|
JavaScript 前端开发
学弟的一张图,让我重学了一遍函数声明和函数表达式!
首先我们要知道,当函数声明与变量命名冲突的时候,要保持着**函数声明优先的原则**