我正在爲Silverlight遊戲設計一種掃雷類型的佈局。目前,我在Canvas
控件上使用了square
用戶控件。有屬性分配給它。 我也想在稍後階段添加功能。它是關於使用貝塞爾曲線彎曲並用x,y座標繪製曲線上的這些平方而不是循環。然後我想發送一個XML文件中的正方形的x,y位置。優化掃雷遊戲風格的性能silverlight
我的問題是,以最少的內存消耗,快速高效的性能以及易於實現的方式,我應該採用什麼方式進行最佳優化組合。 如果您的專家有任何其他想法,請讓我知道。 在此先感謝。
我正在爲Silverlight遊戲設計一種掃雷類型的佈局。目前,我在Canvas
控件上使用了square
用戶控件。有屬性分配給它。 我也想在稍後階段添加功能。它是關於使用貝塞爾曲線彎曲並用x,y座標繪製曲線上的這些平方而不是循環。然後我想發送一個XML文件中的正方形的x,y位置。優化掃雷遊戲風格的性能silverlight
我的問題是,以最少的內存消耗,快速高效的性能以及易於實現的方式,我應該採用什麼方式進行最佳優化組合。 如果您的專家有任何其他想法,請讓我知道。 在此先感謝。
好吧,在這幾天裏,我自己整理了答案。我繼續通過我的Square
用戶控件並在佈局中使用它。
關於X/Y軸位置的標繪,我用這個:
Point point = myElement.TransformToVisual(App.Current.RootVisual as FrameworkElement)).Transform(new Point(0, 0));
有節省XML文件,因爲Silverlight 4中沒有給出提升的權限在瀏覽器應用中的故障。但後來我用我的保存按鈕點擊事件:
SaveFileDialog dlgSave = new SaveFileDialog();
dlgSave.DefaultExt = "xml";
dlgSave.Filter = "XML Files (XML)|*.xml;";
dlgSave.FilterIndex = 1;
strXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + myXML.ToString();//myXML is the XDocument I created globally and saved data in it
try
{
bool check = (bool)dlgSave.ShowDialog();
if (check)
{
using (Stream stream = dlgSave.OpenFile())
{
StreamWriter sw = new StreamWriter(stream, System.Text.Encoding.UTF8);
sw.Write(strXML);
sw.Close();
stream.Close();
}
MessageBox.Show("XML Saved successfully");
}
catch (SecurityException)
{
MessageBox.Show("There seems to be an issue with saving XML file on the disk, please try again...", "Something's not right", MessageBoxButton.OK);
}
catch (UnauthorizedAccessException)
{
MessageBox.Show("Saving here requires authorised permissions", "Access Denied", MessageBoxButton.OK);
}
如果您可以將所有內容繪製爲形狀和圖像(即矢量圖形),並且您將能夠利用圖形元素的硬件加速。此外,如果您不將方塊定義爲UserControl,則會獲得更好的性能,您應該在代碼中動態創建它們作爲包含其他形狀的形狀,然後根據其位置將對象模型鏈接到形狀(例如字典正方形;字典squareElements)。
就內存消耗和文件訪問而言,只有在需要的時候(例如,當玩家離開遊戲時),您應該在內存中保留方塊的x,y位置作爲Point strucutre並序列化爲文件(XML很好) 。
這工作正常嗎? – user1425606
是的,@ user1425606,這比預期的更好。雖然花了更多的時間來尋找合適的解決方案 – vaibhav
我也想在silverlight中做類似的佈局。 – user1425606