Курсы по программированию

Формула программиста
основатель — Волосатов Евгений Витольдович
Новый видеокурс по Git

Игры со Спрайтами / Спрайт. Сериализация объекта

  • На этом уроке мы научимся сохранять и загружать объекты,
    используя технологию сериализации и десериализации.
  • Дата отправки отчёта: 20 января 2016 г.
  • Задание выполнено: за 2 час. 00 мин.
  • Чему научился: Изучил сериализацию и дисериализацию.
  • Что было сложным: Язык XML очень трудный... с непривычки, конечно, всё кажется неясным...
  • Комментарии: Когда-то я изучал C# по Зиборову , поэтому прекрасно помню урок по работе с записью/чтением. Я добавил возможность фильтровать файлы по их формату (txt, xml). Однако когда я открываю файл, а затем сохраняю его снова, то высвечивается вот такое вот имя большое (второй скрин) :( как можно изменить имя? В конструкторе формы указал вот это:
    open.FileName = "";
    save.FileName = "sprite.xml";
    А так урок хороший, но трудный, надо несколько раз его пройти :)
  • Архив проекта: Ссылка доступна после самостоятельного выполнения этого урока
  • Оценка видео-уроку:
Отчёт от 6925 за Игры со Спрайтами / Спрайт. Сериализация объекта


Отчёт от 6925 за Игры со Спрайтами / Спрайт. Сериализация объекта




Оцени работу

 
Сохранить страницу:

5649. Максим Лапшинов
Максим Лапшинов
ответить
→  Артём  # Игры со Спрайтами / Спрайт. Сериализация объекта / 2016-01-21 16:48

Почему трудный XML тебе? его за вечер можно понять и все


24. Оля
Оля
ответить
→  Артём  # Игры со Спрайтами / Спрайт. Сериализация объекта / 2016-01-20 23:04

Артем, хорошо что все же ты справился, а урок не простой, хотя знаю это только сейчас, знаю уже скоро и это освоишь на отлично! :)


689. Igorenzia
Igorenzia
ответить
→  Артём  # Игры со Спрайтами / Спрайт. Сериализация объекта / 2016-01-20 19:43

в первом случае вернется имя файла myfile
а во втором пустая строка


689. Igorenzia
Igorenzia
ответить
→  Артём  # Игры со Спрайтами / Спрайт. Сериализация объекта / 2016-01-20 19:41

если я правильно понял у тебя при сохранении передается не имя файла а путь.
если надо из пути добыть имя файла

string fileName = @"C:\mydir\myfile.ext";
string path = @"C:\mydir\";
string result;

result = Path.GetFileNameWithoutExtension(fileName);
Console.WriteLine("GetFileNameWithoutExtension('{0}') returns '{1}'",
    fileName, result);

result = Path.GetFileName(path);
Console.WriteLine("GetFileName('{0}') returns '{1}'",
    path, result);


  • Отчёт оценивали:
    8886Михаил Ермишин0   459Сергей Сергеевич+1   8946inward0   4699Сергей Витальевич+1   5760Мариша +1   4395Денис+1   1Евгений Витольдович+1   2773Никита+1   7645Александр Львович+1   689Igorenzia+1   8977Иван0   24Оля+1   2912Игорь+1   8194Сергей+1   2639Морозов Юрий Александрович+1   5565Frank+1   2630Михаил Кузнецов+1   6987MichGar+1   8275Tekashnik+1   Посетитель+1   1947Denis+1   8437Step1k+1   8380zhikharevav0   8274Виктор 0   5649Максим Лапшинов+1  

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: сериализации и десериализации
Трудности: все понятно
все хорошо
Научился: Сохранять в XML файл и загружать из него с помощью XML сериализации.
Трудности: У меня при загрузке возникла проблема, не отображался спрайт, ошибка оказалась в обработчике события при клике мышкой, т.к. я делал по-своему, при клике мышки у меня рисовалась ломаная линия, а при двойном щелчке линия перестает рисоваться. Проблема была в том, что в координаты x1,x2 и y1,y1 сохранялись одинаковые значения, ошибку исправил таким образом: private void picture_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { if (curLine.x1 == -1) { curLine.x1 = e.X; curLine.y1 = e.Y; } else { curLine.x2 = e.X; curLine.y2 = e.Y; sprite.AddLine(curLine); curLine.x1 = curLine.x2; curLine.y1 = curLine.y2; } return; } }
Немного покороче написал метод Save() public void Save(string filename) { try { XmlSerializer xml = new XmlSerializer(typeof(Sprite)); XmlWriter writer = XmlWriter.Create(filename); xml.Serialize(writer, this); } catch { } } Еще вы забыли добавить блок Try,Catch. Спасибо за урок!