blog好久没有换样子了,那个皮肤都用了一年多了,算是用的时间最长的一个皮肤了。抽空做了个新皮肤,不过这个还不是最初我想象的样子,再慢慢修改好了……
…
Silverlight 1.0 Released
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
Youtube Desktop视频观看新体验

今天一大早过来就收到了YoutubeDesktop的邀请,赶紧过去登陆了,体验一下Youtube Desktop Beta版到底能带来哪些不一样的东西。登陆以后,点击一个视频即可开始播放,其基本界面如下:
在这个页面中,视频缩略图的数量和排列顺序则会根据当前浏览器窗口的大小自动排列变化,浏览器是不会出现滚动条的,浏览器窗口越大,每页显示数量越大,当浏览器窗口变小,视频数量也会减少,其排列方式也会自动变化。登陆进去可以看到前一百条视频,而通过顶部的搜索则可以显示全部搜索结果,从几条至几十万条或者更多。中间的播放器界面如下:
可以看到,其界面和播放功能设计几近于一个桌面播放器,并支持把视频从页面中拖拽到播放器列表中,这也应该是为什么叫Youtube Desktop的原因了。在这个播放器中,你同样可以保存播放列表(需要登陆,或许这个播放列表也应该是可以共享的)。在播放控制栏下面一行,则是收藏和分享的一些按钮。…
返回指定Canvas中的所有TextBlock
还是因为要用中文,所以需要遍历所有的TextBlock,一一设置字体……还好,不算复杂,先找根Canvas中的节点,如果是TextBlock就加入到List中,如果是Canvas的话就递归一次,然后把返回结果也加入到List中,最终返回一个TextBlock数组。
…TextBlock[] FindAllTextBlock(Canvas container)
{
Listtbl = new List (); for (int i = 0; i < container.Children.Count; i++)
{
//如果是TextBlock,就加入到List中
if (container.Children[i].GetType() == typeof(TextBlock))
tbl.Add(container.Children[i] as TextBlock);
//如果是Canvas,就继续递归查找
else if (container.Children[i].GetType() == typeof(Canvas))
Silerlight也可以不放在页面的顶层
很多插件都是位于页面的顶层的,在页面上无论如何也覆盖不了,默认的Silverlight设置也是这样的,但是加一个参数就可以把Silverlight从顶层拿下来了,然后你就可以在上面放上你要的文字,文本框,甚至透明的flash。这个参数就是isWindowless,依然是修改createSilverlight方法,在properties代码块中加上如下一行:
isWindowless: “true”,
这样就把Silverlight从顶层拿下来了。剩下的你就可以发挥啦,用CSS把flash、文本框、按钮放上去吧!…
Silverlight读XML是件痛苦的事情
本来以为Silverlight读XML那岂不是太方便了,没想到用Silverlight来读取XML中的节点原来是件非常令人痛苦的事情,尽管你用的是C#!因为Sivlerlight把WPF精简得太厉害,读XML只有XmlReader了……XmlReader是不支持XPath和XmlDocument的(这么好的东西都不要,莫非是因为Silverlight的体积问题?)
如果要用Silverlight读XML,建议看看这两篇文章:
1. Working with XML in Silverlight
有个建议,在读取每个节点的值之前最好先判断一下节点的类型(NodeType),否则很有可能出现一些不可解释的“灵异”现象………
让网页中的Silverlight背景也透明
Silverlight的背景也是可以透明的,改改JS代码就好了~
打开TestPage.html.js(默认的文件名),修改createSilverlight()函数,在properties大括号中增加两行:
isWindowless: “true”,
background: “#00ffffff”,
由于Sivlerlight中的颜色采用ARGB模式,即Alpha、Red、Green、Blue各用两位十六进制数来表示,所以只要把代表Alpha的那两位设置为00就行了,其他的随便了,反正透明了也看不到。
如果是把这两行放到原来代码的最后面(properties大括号以内),要记得把原来的最后一行代码末尾加上一个半角的逗号,而现在的最后一行就不要那个逗号了,即这个样子的:
…properties: {
width: “100%”,
height:
视频:好玩,Gmail背后的故事
上了Gmail,发现右上角有个醒目的链接“Watch Our Video”,点过去一看,原来是一段关于Gmail是怎样传送的视频。视频中的人物都是各显身手,绝技不断,很有些意思,可以看看哦~
视频播放地址:http://www.youtube.com/watch?v=VfDW7qAdFGk
(nnd,才发现我的BLOG没有插入视频功能……)…
在Silverlight中实现定时器功能
上次写了一篇WPF中的定时器类,那个定时器类在Silverlight中也被精简下岗了(还有许多常用的方法或被精简了或直接下岗了,使用起来远没有WPF方便……),定时器还得用,而Timer类实在是不好用(都是因为线程……),只有另想办法了。有个不错的方式,通过Storyboard来实现,把Storyboard的时间设置为一秒,然后在这个Storyboard结束后进行你想要的操作,同时重新开始这个Storyboard,那么这就相当于一个一秒的定时器了,方法很巧。实现代码如下:
…loopTimer = new Storyboard();
loopTimer.Duration = TimeSpan.FromSeconds(1);
loopTimer.SetValue(Storyboard.NameProperty, “looptimer”);
this.Resources.Add(loopTimer);
在Silverlight中使用中文
前面的操作方法请参考此文: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或者其它文件压缩程序打开)