|
前不久WP7 已經(jīng)在國外上市,這意味著相應(yīng)的WP7 應(yīng)用程序和游戲將會蜂擁而至,由于之前研究過一陣SL,看到WP7 到來手便開始發(fā)癢。本篇將原來一個SL 模擬Nano5 的程序移植到WP7,為大家簡單演示一下移植過程。SL 程序請參考《Silverlight 模擬Nano5 界面效果》。
素材移植
注意,您的計算機(jī)上需要安裝Windows Phone Developer Tools。首先我們來新建一個WP7 應(yīng)用程序。
由于SL 程序比較簡單只包含一些圖片,所以將所有素材資源復(fù)制到WP7 項(xiàng)目。如下圖SL4 與WP7 項(xiàng)目列表對比。
程序移植
接下來先對XAML 程序進(jìn)行移植,原來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# 程序全部復(fù)制到WP7 中再逐一對錯誤提示進(jìn)行修改和調(diào)整。
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:不再需要支持不同瀏覽器的鼠標(biāo)滾輪事件。
public MainPage()
{
InitializeComponent();
addImages();
startShow();
}
事件觸發(fā)
SL4:通過MouseWheel 鼠標(biāo)滾輪事件來切換專輯封面。
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);
}
}
測試運(yùn)行
打開WP7 模擬器后,原來的SL4 程序仍然可以在WP7 中正常運(yùn)行,唯一區(qū)別就是原來的鼠標(biāo)操作變?yōu)榱擞|屏操作。
總結(jié)
當(dāng)然本篇的SL4 程序相對來說比較簡單,沒有復(fù)雜的動態(tài)效果或類庫調(diào)用。在本次Teched2010 大會也和泳濤兄(WP7 MVP)交流了一下。其實(shí)SL 程序移植到WP7 也并非易事。首先,要將原來SL 項(xiàng)目里所有使用的資源全部復(fù)制到WP7 項(xiàng)目。除圖、音、影以外,更重要的是項(xiàng)目中引用的類庫,有些類庫可能在WP7 中并不支持。其次,要將SL 的XAML 代碼移植到WP7,所謂WP7 中的SL 開發(fā)平臺只是SL 的一部分,也就是說有些SL 的控件、屬性在WP7 不能使用,所以要做進(jìn)一步的調(diào)整。最后,要把C# 程序移植到WP7,這也是很復(fù)雜的過程,其中涉及的因素很多,可借助VS 強(qiáng)大的調(diào)試功能進(jìn)行修改。后續(xù)我還會對一些稍微復(fù)雜些的程序進(jìn)行移植,也希望大家分享自己的開發(fā)經(jīng)驗(yàn)。
源代碼:WP7Nano5.zip
Teched2010
最后上幾張Teched2010 中用于Demo 演示和展示的WP7 真機(jī)。機(jī)型:三星
可以按自己的喜好設(shè)置主題顏色:
手機(jī)游戲:刺客信條、極品飛車,都是大作啊!玩了一下極品飛車,運(yùn)行很流暢,通過重力感應(yīng)控制賽車轉(zhuǎn)向。
美中不足的是當(dāng)前WP7 本身還不支持中文輸入,也沒有手寫輸入。要是用WP7 發(fā)短信可麻煩了,但似乎有第三方開發(fā)的軟件可以支持。期待WP7 早日登陸國內(nèi)市場。
it知識庫:將SL4 程序移植到WP7(附Teched2010真機(jī)圖),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。