2012-05-25 2 views
6

Я разрабатываю маневровый макет для игры в серебристом свете. В настоящее время я использовал элемент управления square на элементе управления Canvas. Для этого есть свойства. Я также хочу добавить функциональность на более позднем этапе. Речь идет о изгибе с использованием кривых Безье и построении этих квадратов на кривой с координатами x, y вместо прокрутки. Затем я хочу отправить позицию x, y в квадрат в файле XML.Оптимизация производительности для игры в тральщик в стиле silverlight

Мой вопрос в том, каким образом я должен использовать это, это будет оптимальная оптимизированная комбинация с точки зрения наименьшего потребления памяти, быстрой и эффективной работы, а также легкой реализации. Если у вас есть какие-либо другие идеи, пожалуйста, дайте мне знать. Спасибо заранее.!

ответ

2

Ну, в те дни я сам разобрался с ответом. Я продолжал через свой пользовательский элемент управления Square и использовал его в макете.

О построении из х/у позиций, я использовал это:

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); 
      } 
+0

И это работает нормально? – user1425606

+0

Да, @ user1425606, это работает лучше, чем ожидалось. Хотя потребовалось больше времени для поиска правильного решения – vaibhav

+0

, я также хочу сделать аналогичный макет в silverlight. – user1425606

2

Если вы можете нарисовать все как фигуры и изображения (например, векторную графику), и вы сможете воспользоваться аппаратным ускорением для графических элементов. Кроме того, вы получите более высокую производительность, если вы не определяете свои квадраты как UserControls, вы должны динамически создавать их в коде как фигуры, содержащие другие фигуры, а затем иметь объектную модель, связанную с фигурами на основе их положения (например, Словарные квадраты; словарные квадратики).

С точки зрения потребления памяти и доступа к файлам вы должны хранить позицию x, y в памяти как точку Strucutre и сериализовать файл (XML в порядке) только тогда, когда вам нужно (т.е. когда игрок покидает игру) ,

Смежные вопросы