将SL4 程序移植到WP7(附Teched2010“.NET研究”真机图)

简介:   前不久WP7 已经在国外上市,这意味着相应的WP7 应用程序和游戏将会蜂拥而至,由于之前研究过一阵SL,看到WP7 到来手便开始发痒。本篇将原来一个SL 模拟Nano5 的程序移植到WP7,为大家简单演示一下移植过程。

  前不久WP7 已经在国外上市,这意味着相应的WP7 应用程序和游戏将会蜂拥而至,由于之前研究过一阵SL,看到WP7 到来手便开始发痒。本篇将原来一个SL 模拟Nano5 的程序移植到WP7,为大家简单演示一下移植过程。SL 程序请参考《Silverlight 模拟Nano5 界面效果》。

  素材移植

  注意,您的计算机上需要安装Windows Phone Developer Tools上海企业网站设计与制作/a>。首先我们来新建一个WP7 应用程序。

New

  由于SL 程序比较简单只包含一些图片,所以将所有素材资源复制到WP7 项目。如下图SL4 与WP7 项目列表对比。

SL4

WP7

  程序移植

  接下来先对XAML 程序进行移植,原来SL4 程序里XAML 只有一个<Canvas>。

<Canvas x:Name="LayoutRoot" MouseLeftButtonDown="LayoutRoot_MouseLeftButtonDown" />

  在WP7 中需要将<Canvas> 放入ContentPanel <Grid>。

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"
ManipulationDelta="ContentPanel_ManipulationDelta">
<
Canvas x:Name="imageList" Background="Transparent"/>
</
Grid>

  下面移植C# 程序,可以将SL4 的C# 程序全部复制到WP7 中再逐一对错误提示进行修改和调整。

  MainPage() 方法

  SL4:

public MainPage()
{
InitializeComponent();
addImages()上海网站建设;
HtmlPage.Window.AttachEvent("DOMMouseScroll", LayoutRoot_MouseWheel);
HtmlPage.Window.AttachEvent("onmousewheel", LayoutRoot_MouseWheel);
HtmlPage.Document.AttachEvent("onmousewheel", LayoutRoot_MouseWheel);
startShow();
}

  WP7:不再需要支持不同浏览器的鼠标滚轮事件。

public MainPage()
{
InitializeComponent();
addImages();
startShow();
}

  事件触发

  SL4:通过MouseWheel 鼠标滚轮事件来切换专辑封面。

private void LayoutRoot_MouseWheel(object sender, HtmlEventArgs args)
{

double mouseDelta = 0;
ScriptObject e = args.EventObject;
// Mozilla and Safari
if (e.GetProperty("detail") != null)
{
mouseDelta = ((double)e.GetProperty("detail"));
}

// IE and Opera
else if (e.GetProperty("wheelDelta") != null)
mouseDelta = ((double)e.GetProperty("wheelDelta"));

mouseDelta = Math.Sign(mouseDelta);

moveIndex((mouseDelta > 0) ? 1 : -1);
}

  WP7:通过ManipulationDelta 触屏事件来完成。

private void ContentPanel_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
if (e.DeltaManipulation.Translation.X > 0)
{
moveIndex(1);
}
else
{
moveIndex(-1);
}
}

  测试运行

  打开WP7 模拟器后,原来的SL4 程序仍然可以在WP7 中正常运行,唯一区别就是原来的鼠标操作变为了触屏操作。

T<a style='color:w<a style='color:white;' href='http://www.93tj.com'>上海闵行企业网站设计与制作</a>hite;' href='http://www.93tj.com'>上海徐汇企业网站设计与制作</a>est

  总结

     当然本篇的SL4 程序相对来说比较简单,没有复杂的动态效果或类库调用。在本次Teched2010 大会也和泳涛兄(WP7 MVP)交流了一下。其实SL 程序移植到WP7 也并非易事。首先,要将原来SL 项目里所有使用的资源全部复制到WP7 项目。除图、音、影以外,更重要的是项目中引用的类库,有些类库可能在WP7 中并不支持上海闵行企业网站制作。其次,要将SL 的XAML 代码移植到WP7,所谓WP7 中的SL 开发平台只是SL 的一部分,也就是说有些SL 的控件、属性在WP7 不能使用,所以要做进一步的调整。最后,要把C# 程序移植到WP7,这也是很复杂的过程,其中涉及的因素很多,可借助VS 强大的调试功能进行修改。后续我还会对一些稍微复杂些的程序进行移植,也希望大家分享自己的开发经验。

  源代码:WP7Nano5.zip

  Teched2010

  最后上几张Teched2010 中用于Demo 演示和展示的WP7 真机。机型:三星

  可以按自己的喜好设置主题颜色:

IMAG0037

IMAG0039

  手机游戏:刺客信条、极品飞车,都是大作啊!玩了一下极品飞车,运行很流畅,通过重力感应控制赛车转向。

IMAG0038

  美中不足的是当前WP7 本身还不支持中文输入,也没有手写输入。要是用WP7 发短信可麻烦了,但似乎有第三方开发的软件可以支持。期待WP7 早日登陆国内市场。

目录
相关文章
|
JSON 缓存 小程序
.NET生成小程序码,并合自定义背景图生成推广小程序二维码
.NET生成小程序码,并合自定义背景图生成推广小程序二维码
207 0
.NET生成小程序码,并合自定义背景图生成推广小程序二维码
.Net Micro Framework研究—Digi开发板初探
写的比较基础全面,由于我们北航的研发团队先研究了Digi的开发板,所以直到今天Digi开发板才到我的手上,我的《Micro Framework研究》系列文章以后也会陆续推出
704 0
.Net Micro Framework研究—IO读写
试验平台:Digi MF开发板
437 0
.Net Micro Framework研究—串口操作
试验平台:Digi MF开发板,Digi提供的示例中包含了串口的示例程序
557 0
|
网络协议
.Net Micro Framework研究—TCP/IP通信
关于网络通信方面,Digi提供了两个程序,一个是TCP Server运行在Digi的开发板上,一个是TCP Client程序,运行在PC上,通过网络,上位机很容易控制Digi开发的IO信号
621 0
.Net Micro Framework研究—模拟器改造
由于Digi提供的开发板没有LCD显示屏,所以有关绘图方面的操作,只好在模拟器上进行了。
541 0
|
Windows
.Net Micro Framework研究—中文显示
微软示例程序中,仅支持两种字体(small.tinyfnt和NinaB.tinyfnt),并不支持中文。
581 0
.Net Micro Framework研究—绘图
目前在VS2005的环境里,还不支持.Net Micro Framework界面的所见即所得绘制,界面制作有三种方式,一是窗体直接绘图,二是Panel+形状对象、三是窗体+控件。第一种做法让人觉得又回到了DOS时代,回到了SCREEN 12的16色的世界里。
483 0
.Net Micro Framework研究—Shapes命名空间
在Microsoft.SPOT.Presentation.Shapes命名空间下,包含几个形状对象,主要有Ellipse、Line、Polygon、Rectangle,同样也只有Rectangle实现的最好,其他形状都不支持填充色,虽然每个对象都有Fill属性。
620 0
.Net Micro Framework研究—窗体控件
目前版本的MF对TCP协议栈支持也并不完善(对串口也谈不上完善,毕竟不支持奇偶校验、停止位设置),Digi的以太网口是加入了自己的处理方案,明年二月份微软将要发布的MF V3.0版,就已经完全支持TCP了,到时候MF最理想的应用也许就是通信转换了。
494 0