RubyConf大会演示:IronRuby运行在Silverlight之上

在RubyConf大会之上,John Lam对微软为动态语言提供的新特性进行了预先介绍,介绍中给出了可以使Ruby运行在动态语言运行时DLR以及Silverlight之上的示例。

RubyConf大会的演示示例不同于其他Silverlight的演示,代码是用Ruby语言编写,而非编写XAML来呈现Silverlight引擎。对此John Lam谈到:

就我所知,这是第一批Code-First的Silverlight 1.1应用示例之一。大多数Silverlight应用通过创建提交到XAML解析器的XAML字串来生成UI界面。但当你拥有Ruby这样优雅的语言之后,使用字串创建解析树就显得有些笨重了。

示例中的XAML标记如下所示:

<Storyboard x:Name="Timeline1" TargetName="ScaleTransform1">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="ScaleX">
<SplineDoubleKeyFrame KeyTime="00:00:00.0" Value="0.200"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.2" Value="0.935"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.3" Value="0.852"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.4" Value="0.935"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="ScaleY">
<SplineDoubleKeyFrame KeyTime="00:00:00.0" Value="0.200"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.2" Value="0.935"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.3" Value="0.852"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.4" Value="0.935"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>

微软提供了在DLR之上运行动态语言的机制,并在.NET CLR之上开发的IronRuby对于Ruby编程语言进行的全面的实现。

为DLR编写代码的目标是,可以编写本地代码并且不需手工编写XAML。开发者可以编写如下的Ruby代码来代替上面列出的XAML代码:

class BounceAnimation < AnimationBase
def initialize(scale_transform_element)
@obj = Wpf.build(Storyboard, :name => random_name,
:target_name => scale_transform_element) {

add(DoubleAnimationUsingKeyFrames, :begin_time=>'00:00:00',
:target_property => "ScaleX") {

add(SplineDoubleKeyFrame, :key_time => '00:00:00.0', :value => 0.200)
add(SplineDoubleKeyFrame, :key_time => '00:00:00.2', :value => 0.935)
add(SplineDoubleKeyFrame, :key_time => '00:00:00.3', :value => 0.852)
add(SplineDoubleKeyFrame, :key_time => '00:00:00.4', :value => 0.935)
}

add(DoubleAnimationUsingKeyFrames, :begin_time=>'00:00:00',
:target_property => "ScaleY") {

add(SplineDoubleKeyFrame, :key_time => '00:00:00.0', :value => 0.200)
add(SplineDoubleKeyFrame, :key_time => '00:00:00.2', :value => 0.935)
add(SplineDoubleKeyFrame, :key_time => '00:00:00.3', :value => 0.852)
add(SplineDoubleKeyFrame, :key_time => '00:00:00.4', :value => 0.935)
}
}
end
end

较之编写XAML,使用Ruby语言更为方便直接,并且更易于让人读懂。尽管这些特性在示例中得到展示,但其中小部分特性将在下一个版本Silverlight 1.1的CTP出现时才可以使用,届时开发者可以在浏览器中运行IronRuby。

关于IronRuby的更多信息,可以在IronRuby的站点中找到,并且这个示例的源代码可以在John Lam的blog上下载。

查看英文原文: IronRuby on Silverlight Demo at RubyConf

你可能感兴趣的:(RubyConf大会演示:IronRuby运行在Silverlight之上)