Это практично для повторного кода от Flash в C #?
-
30-09-2019 - |
Вопрос
Моя цель состоит в том, чтобы получить лучшее понимание характеристик C # и становится более комфортной созданием простых приложений. Я довольно компетентен с Flash (ActionScript 3), и нашел старую игру Tic-Tac-Toe, которую я написал. Я начал задаваться вопросом о портировании этого кода в приложение C #. Не зная много о C #, мне интересно, насколько сложно будет миграция.
С одной стороны, основная игровая логика синтаксически аналогична, и поэтому будет легко в порту.
Однако, насколько касается графики, я даже не знаю, с чего начать. До сих пор я только разобрался в формате Windows Forms и консоли в C #.
Мне интересно, если эти концепции Flash имеют аналогичные аналоги в C #, или если процедуры и синтаксис радикально отличаются:
- Размещение графических элементов на сцену
- Рендеринг строк из начальных / координат
- Прослушиватели событий на клипы
- Поднимите изображение внутри графического элемента (или, в мою версию Flash, NextFrame () в кино-клипе)
Решение
Вы можете попробовать разработать вашу маленькую игру, используя Silverlight. Приложения Silverlight, кодированные с использованием C # и XAML, довольно похожи в форме с помощью Flash Applications, и вы должны найти все необходимое без проблем.
Поэтому я предлагаю вам загрузить Sizerlight SDK (бесплатно) и попробовать.
Другие советы
Во-первых, вспышка - это для WPF (достаточно близко), так как ActionScript - C #.
Модель WPF / Silverlight намного похоже на гибкость, что она прошивка. Все добавляется к дереву пользовательского интерфейса в качестве объекта, даже линии.
Аналогично, добавляя обработчики событий для элементов управления (например, кнопка Click) можно сделать в «коде позади» (код, который живет с видом), но рекомендация состоит в том, чтобы использовать шаблон MVVM. Если вы новичок в концепции разделения опасений и тестирования подразделения, не стесняйтесь начать с более простых «кода за» методом.
В то время как WPF и Silverlight очень похожи, я бы порекомендовал начать с Silverlight, поскольку SDK и доступные образцы богаты. Вы можете легко переместить на WPF позже (хотя портирование приложения из Silverlight к WPF не автоматически).
Ознакомьтесь с изображениями, как вы упомянули, будут сделаны через «визуальные состояния» в Silverlight (или, возможно, изменяющий ссылку на изображение, что более «Hacky»).
Посмотрите на следующие ссылки, чтобы начать:
- Узнать @ Silverlight.net.
- Silverlight на MSDN
- Формы и рисование (Silverlight)
Если вы смотрите специально для игры и тому подобное, вы можете посмотреть в бесплатную структуру XNA. Тем не менее, будут различия, поскольку Flash дает вам гораздо больше способностей «настроить» вещи заранее и изменить их.
Размещение графических элементов на сцену
Если вы идете на маршрут XNA, вы будете рисовать спрайты, используя spritebatch, вы говорите им, где и как рисовать, и вот где они пойдут
Рендеринг строк из начальных / координат
В формах Windows вы можете сделать это через простую систему. Вызов Windows. Однако, если вы хотите сделать это в XNA, вам также придется сделать квадрат 1 пикселя и растянуть / повернуть его к тому, что вы хотите или использовать 3D примитивы ( Хотя это ограничит вас с 1 пиксельной линией)
Прослушиватели событий на клипы
Посмотрите в делегаты, но на самом деле нет эквивалента для клипов фильмов к своим знаниям
Поднимите изображение внутри графического элемента (или, в мою версию Flash, NextFrame () в кино-клипе)
Это довольно просто, в зависимости от того, что вы имеете в виду. Если вы хотите, скажем, анимируйте спрайт. Вы можете сделать это, переместив исходный прямоугольник или изменение текстуры спрашивания. Если вы имеете в виду экран в целом, в основном это в основном обрабатывается для вас при условии, что вы используете SPRITEBATCH. В формах Windows вам придется делать больше о себе, но базовые концепции одинаковы.
В целом это не так уж плохо, но если это не звучит привлекательный, проверить Silverlight. Это в основном C # в стиле Flash, поэтому вы можете проще найти переход.
Удачи и надеюсь, что это поможет.