Silverlight 1.0正式版发布,安装包大小1.37M,仍然比1.1 Alpha小很多。目前只发布了Windows平台和Mac平台的正式版。
下载地址:
http://www.microsoft.com/silverlight/downloads.aspx
SDK下载地址:
http://msdn.microsoft.com/vstudio/eula.aspx?id=a40f3ffc-2657-02ec-7d67-7a79b4eac832
看了一下SDK中的更新说明,和1.1 Alpha版的SDK更新说明做了一下对比,两者的Enhancements是一致的,而1.0正式版的Breaking Changes则比1.1 Alpha多出这样三条:
OnLoad, OnError, OnResize, OnFullScreenChange are now Function Pointer Based Rather than String Based
AddEventListener now Returns a Token to be Passed to removeEventListener to Un-Register Event Handlers
Replace <control>.settings.version Property with isVersionSupported method
还是因为要用中文,所以需要遍历所有的TextBlock,一一设置字体……还好,不算复杂,先找根Canvas中的节点,如果是TextBlock就加入到List中,如果是Canvas的话就递归一次,然后把返回结果也加入到List中,最终返回一个TextBlock数组。
TextBlock[] FindAllTextBlock(Canvas container)
{
List<TextBlock> tbl = new List<TextBlock>();
for (int i = 0; i < container.Children.Count; i++)
{
//如果是TextBlock,就加入到List中
if (container.Children.GetType() == typeof(TextBlock))
tbl.Add(container.Children as TextBlock);
//如果是Canvas,就继续递归查找
else if (container.Children.GetType() == typeof(Canvas))
tbl.AddRange(FindAllTextBlock(container.Children as Canvas));
}
return tbl.ToArray();
}
很多插件都是位于页面的顶层的,在页面上无论如何也覆盖不了,默认的Silverlight设置也是这样的,但是加一个参数就可以把Silverlight从顶层拿下来了,然后你就可以在上面放上你要的文字,文本框,甚至透明的flash。这个参数就是isWindowless,依然是修改createSilverlight方法,在properties代码块中加上如下一行:
isWindowless: "true",
这样就把Silverlight从顶层拿下来了。剩下的你就可以发挥啦,用CSS把flash、文本框、按钮放上去吧!
本来以为Silverlight读XML那岂不是太方便了,没想到用Silverlight来读取XML中的节点原来是件非常令人痛苦的事情,尽管你用的是C#!因为Sivlerlight把WPF精简得太厉害,读XML只有XmlReader了……XmlReader是不支持XPath和XmlDocument的(这么好的东西都不要,莫非是因为Silverlight的体积问题?)
如果要用Silverlight读XML,建议看看这两篇文章:
1. Working with XML in Silverlight
有个建议,在读取每个节点的值之前最好先判断一下节点的类型(NodeType),否则很有可能出现一些不可解释的“灵异”现象……
Silverlight的背景也是可以透明的,改改JS代码就好了~
打开TestPage.html.js(默认的文件名),修改createSilverlight()函数,在properties大括号中增加两行:
isWindowless: "true",
background: "#00ffffff",
由于Sivlerlight中的颜色采用ARGB模式,即Alpha、Red、Green、Blue各用两位十六进制数来表示,所以只要把代表Alpha的那两位设置为00就行了,其他的随便了,反正透明了也看不到。
如果是把这两行放到原来代码的最后面(properties大括号以内),要记得把原来的最后一行代码末尾加上一个半角的逗号,而现在的最后一行就不要那个逗号了,即这个样子的:
properties: {
width: "100%",
height: "100%",
version: "1.1",
enableHtmlAccess: "true",
isWindowless: "true",
background: "#00ffffff"
},
就这么简单!
上次写了一篇WPF中的定时器类,那个定时器类在Silverlight中也被精简下岗了(还有许多常用的方法或被精简了或直接下岗了,使用起来远没有WPF方便……),定时器还得用,而Timer类实在是不好用(都是因为线程……),只有另想办法了。有个不错的方式,通过Storyboard来实现,把Storyboard的时间设置为一秒,然后在这个Storyboard结束后进行你想要的操作,同时重新开始这个Storyboard,那么这就相当于一个一秒的定时器了,方法很巧。实现代码如下:
loopTimer = new Storyboard();
loopTimer.Duration = TimeSpan.FromSeconds(1);
loopTimer.SetValue<string>(Storyboard.NameProperty, "looptimer");
this.Resources.Add(loopTimer);
loopTimer.Completed += new EventHandler(loopTimer_Completed);
loopTimer.Begin();
void loopTimer_Completed(object sender, EventArgs e)
{
loopTimer.Begin();
//在这里做你想做的事吧~
}...
前面的操作方法请参考此文:http://silverlight.cn/forums/thread/549.aspx
我使用的是方案二:
* 首先使用Word或者写字板应用程序,使用您中意的字体输入你的Silverlight中所需要的文字;
* 然后在Word或者写字板当中选择“打印”功能,打印机选择Microsoft XPS Document Writer(在您安装了.NET 3.0 Framework)后会自动增加;
* XPS Document Writer本身是一个打印到文件功能,在其文件选择框中选择文件路径,并且给出相应的文件名;
* 打印完成后,在文件浏览器中找到完成的XPS文件,并且将其后缀名由".xps"修改为".zip";(其实微软的好多文件格式目前都使用了ZIP格式,比如Office 2007中的DOCX、PPTX、XLSX等等,都可以将名字改为ZIP后缀名,并且使用WinZip或者其它文件压缩程序打开)
* 直接找到这个压缩文件包中的“\documents\1\resources\fonts”中的文件,并且将其提取出来,这个文件名大部分为一个GUID加一个ODTTF后缀名;
* 将提取出来的ODTTF文件再次使用ZIP格式打包成myfonts.zip文件,并且放在您的Silverlight应用程序的根目录中...
2007-8
Silverlight是微软正在推广的专门针对Flash的一个浏览器插件,被众多人誉为“Flash”杀手,但从我了解的来看,Silverlight要在短期内打败Flash,并不会有那么容易。
1、跨域读取数据的问题
基于安全考虑,浏览器插件和脚本都是不可以跨域的,Silverlight亦是如此(Silverlight在读取视频文件时可以跨域)。Flash只需在需要跨域的根域下放置一个XML文件即可轻松搞定跨域问题,而Silverlight则需要通过WebService来解决,如果要用WebService,Flash同样也可以随意跨域了。
2、动画制作与设计功能不够强大
Flash在这个方面占有绝对优势,无论从动画设计还是动画编程来说,无论从轻松易用和复杂程度来说Silverlight远远不及Flash。虽然Silverlight可以利用面向对象的C#来进行编程,而AS 3也已经完全成为一种面向对象的编程预言,其语法结构与C#非常类似,Silverlight在这个方面已经没有太多的优势。
从微软官方提供的例子来看,Silverlight更多用于开发一些动态多媒体应用,而不是动画,的确,Silverlight在对多媒体方面的支持比Flash更强,因为Silverlight已经内嵌了Windows Media Player的解码器,使得Silverlight的体积从1.0版的不到2M增加到1.1 Alpha版的将近5...
Processed in 0.87528 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号
2007-9
2007-9
用户中心
日志分类

最新日志
最新评论
统计信息






友情链接