自从silverlight出来以后,一直在关注这个技术,也参看了他们的一些具体实现代码,给我的一个总体的印象就是silverlight就是一个浏览器!
我觉得浏览器的最主要的3个功能,第一个就是发起和接收http连接,第二解析html,渲染页面效果,第三,集成脚本语言,控制页面元素。第一个功能发起http连接是比较容易的,但是第二个将那些与定义好的tag解析成页面,这就是一个非常核心的技术,我认为也是浏览器开发的一个难点。而silverlight的一个最核心的技术也是这个:将XAML解析,并渲染到界面。不过有一点浏览器的定位很复杂,相对,绝对,浮动,页面版式的变动特别复杂,而silverlight只是用了像素定位,那就简单多了。类似html,XAML把Carvas作为了根节点,然后有按钮标签,文本标签等等,类似于html.还有就是在XAML中调用外部javascript的方法很简单:例如在silverlight的一个媒体元素上,有这样一段标签:
<MediaElement
x:Name="ouch5"
Source="assets/ouch5.wma" AutoPlay="false" Width="0" Height="0"
MediaEnded="javascript:SoundEnded"/>
看看媒体元素的MediaEnded事件是这样直接调用了外部的js函数,再来看看这段js函数是怎样写的:
function SoundEnded(sender,args)
{
sender.stop();
sender.position = "00:00:00";
}
这种调用js的机制就和在button的 onclick事件里的没多少区别,并且silverlight更加趋向于.net中的事件处理机制,有发送者对象和事件参数,感觉非常完美。
然后我们再来看看javascript是怎样操作silverlight中的对象的。
silverlight = document.getElementById("agControl1");
这段代码是获取silverlight在页面上的引用,agControl1 是你在使用silverlight脚本创建代码里给它赋值的id.
var button = silverlight.content.findName("button");
这段代码就直接在silverlight中的button控件的引用,然后再对它的属性进行相关操作。
silverlight.content.findName("button");
这句话跟getElementById没有什么区别。
总结:silverlight非常适合于那些从事网页美工,设计师工作的人转来学习silverlight,因为他是基于XAML的,就类似于html,只要你把XAML的里面的标签就像掌握HTML的标签一样掌握了,写起来将非常容易,当然你也可以使用工具expression来可视化编写XAML,就像使用dreamweaver来编写html一样。另外访问操作silverlight编程体验类似于DOM操作,面向对象的访问方式,对网页编程人员来说学习成本非常少,很容易转来从事silverlight开发。