BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Robert Bazinet 关注 0 他的粉丝 ,译者 高昂 关注 1 他的粉丝 发布于 2007年11月16日. 估计阅读时间: 7 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

ironruby的更新频率太低了 by jianxiao jiang

有时10天半月也不来个一回

是啊。 by Chen Jerome

是啊,什么时候才能在asp.net里使用ironruby呢?

------------------------------------------
[Ruby中文社区] - ruby-lang.org.cn

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT