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