這是一個silverlight游戲:http://keleyi.com/keleyi/phtml/silverlight/ 接了個單子,非要用Silverlight 5來作一個項目,之前從來沒接觸過這東西,為了工作,硬著頭皮也要上了。摸索了一晚上,大至整理出一些項目中需要的東西,以下作為初探記錄:S ...
這是一個silverlight游戲:http://keleyi.com/keleyi/phtml/silverlight/
接了個單子,非要用Silverlight 5來作一個項目,之前從來沒接觸過這東西,為了工作,硬著頭皮也要上了。摸索了一晚上,大至整理出一些項目中需要的東西,以下作為初探記錄:
Silverlight 5與Javascript的交談方式
Silverlight 5屬於客戶端的東西,客戶端的東西與伺服器端交流,第一時間想到了基於javascript的ajax這個萬能膠,所以先從Silverlight 5與Javascript交互方式入手。
一、Silverlight 5發言,Javascript傾聽
從Silverlight 5里向Javascript發送程式運行請求。
Silverlight 5端代碼具體如下:
HtmlPage.Window.Invoke("Javascript函數方式", "傳值-Oyiboy");
通過以上代碼可以直接在Silverlight 5里運行Javascript的腳本代碼,併發送必要的數據出來。
二、Javascript發言,Silverlight 5傾聽
Javascript使用ajax獲取伺服器端數據後發送給Silverlight 5,以達到Silverlight 5與伺服器端的交互效果。
Silverlight 5端代碼具體如下:
[ScriptableMember()]//這行是關鍵,必須有這個javascript才能請求到這個方法
public void setVal(string D)
{
this.textView.Text = D;
}
//javascript主動要求返回值
[ScriptableMember()]
public string returnVal()
{
return this.textView.Text;
}
Html代碼調整:
需要在Silverlight 5插件的object代碼內里添加以下參數設置句,以達到插件在載入後獲取siliverlight對象。
Javascript代碼具體如下:
//siliverlight對象 var siliverlightObj = null; //上面那個HTML代碼內設置的Silverlight 5 onLoad事件觸發的函數 function siliverLoaded(sender, args) { siliverlightObj = sender.getHost(); } //以下代碼中的.buttonSet和.buttonReu是兩個帶這些class的按鈕,按鈕就不詳細寫出來了 //這個是運行Silverlight 5內的setVal方法 $(".buttonSet").click(function () { siliverlightObj.Content.Main.setVal("javascript傳入值-Oyiboy"); }) //這個是運行Silverlight 5內的returnVal方法 $(".buttonReu").click(function () { alert(siliverlightObj.Content.Main.returnVal()); }); // hovertree.com
以上幾個方式,靈活使用的活基本上就完全解決了Silverlight 5與伺服器端之間的交流,好吧,雖然這篇的東西的主題是Silverlight 5與Javascript,但最終目的還是Silverlight 5與伺服器端的交互,反正ajax也不是什麼新物,所以就跳過了。
感想:通過Silverlight 5的對象siliverlightObj.Content.Main這一大竄東西來看,siliverlightObj還能作更多的事了,具體還要慢慢摸索了,如果以後有需要用到的話,還可能會出這個的說明文章吧,或許。
補漏:
關於siliverlightObj.Content.Main中的Main是指在Silverlight 中app.xaml的Application_Startup事件中註冊的訪問名稱,具體代碼如下:
{
this.RootVisual = new MainPage();
System.Windows.Browser.HtmlPage.RegisterScriptableObject("Main", this.RootVisual);
}
從代碼中可知,如果有多個xaml頁的話,只要在這裡註冊不同的名稱就可以引用不同xaml頁內聲明的Javascript方法了。
剛剛整理代碼時在APP.xaml發現這句代碼才想起把這個給漏了,今天補回。
silverlight加密:http://keleyi.com/tool/md5.htm
轉自:http://hovertree.com/h/bjaf/silverlight5.htm
silverlight數字時鐘: