Практично ли переносить код с Flash на C#?
Моя цель - лучше понять характеристики C# и научиться создавать простые приложения. Я достаточно компетентен в Flash (Actionscript 3) и нашел старую игру в крестики-нолики, которую я написал. Я начал задумываться о переносе этого кода в приложение C#. Не зная много о C#, мне интересно, насколько трудной будет миграция.
С одной стороны, базовая игровая логика синтаксически похожа, и поэтому ее было бы легко перенести.
Однако, что касается графики, я даже не знаю, с чего начать. До сих пор я только знакомился с Windows Forms и консольными приложениями на C#.
Мне интересно, имеют ли эти концепции Flash аналогичные аналоги в C#, или процедуры и синтаксис радикально отличаются:
- Размещение графических элементов на сцене
- Рендеринг линий из начальной / конечной координат
- Слушатели событий на видеоклипах
- Обмен изображения внутри графического элемента (или, в моей версии Flash, nextFrame() в мувиклипе)
3 ответа
Вы можете попробовать разработать свою маленькую игру с помощью Silverlight. Приложения Silverlight, написанные на C# и Xaml, по форме очень похожи на приложения Flash, и вы должны найти все, что вам нужно, без проблем.
Поэтому я предлагаю вам скачать Silverlight SDK (бесплатно) и попробовать.
Если вы ищете специально для игр и тому подобное, вы можете захотеть взглянуть на бесплатную платформу XNA. Тем не менее, будут различия, так как Flash дает вам гораздо больше возможностей "настраивать" вещи заранее и изменять их.
Размещение графических элементов на сцене
Если вы пойдете по маршруту XNA, вы будете рисовать спрайты с помощью spritebatch, вы говорите им, где и как рисовать, и куда они пойдут
Рендеринг линий из начальных / конечных координат
В формах Windows вы можете сделать это с помощью простого вызова System.Drawing, однако, если вы хотите сделать это в XNA, вам придется либо сделать квадрат в 1 пиксель и растянуть / повернуть его так, как вы хотите, или использовать 3d-примитивы (Хотя это ограничит вас 1 пиксельной линией)
Слушатели событий на видеоклипах
Посмотрите на делегатов, но на самом деле нет эквивалента для видеоклипов, насколько мне известно
Обмен изображения внутри графического элемента (или, в моей версии Flash, nextFrame() в мувиклипе)
Это довольно просто, в зависимости от того, что вы имеете в виду. Если вы хотите, скажем, оживить спрайт. Вы можете сделать это, переместив исходный прямоугольник или изменив текстуру таблицы спрайтов. Если вы имеете в виду экран в целом, это в основном обрабатывается для вас, если вы используете spritebatch. В оконных формах вам придется делать больше самостоятельно, но основные понятия одинаковы.
В целом, это не так уж плохо, но если это не звучит привлекательно, посмотрите Silverlight. В основном это флэш-память в стиле C#, так что вы можете найти переход легче.
Удачи и надеюсь, что это поможет.
Во-первых, Flash для WPF (достаточно близко), как ActionScript для C#.
Модель WPF/Silverlight намного больше похожа на Flex, чем на Flash. Все добавляется в дерево пользовательского интерфейса как объект, даже линии.
Аналогично, добавление обработчиков событий к элементам управления (например, нажатие кнопки) может быть выполнено в "коде позади" (коде, который соответствует представлению), но рекомендуется использовать шаблон MVVM. Если вы новичок в понятиях разделения задач и модульного тестирования, не стесняйтесь начинать с более простого метода "код позади".
Хотя WPF и Silverlight очень похожи, я бы порекомендовал начать с Silverlight, так как SDK и доступные образцы богаче. Позже вы можете легко перейти на WPF (хотя перенос приложения из Silverlight в WPF не происходит автоматически).
Обмен изображениями, как вы упомянули, будет осуществляться через "Состояния визуалов" в Silverlight (или, возможно, путем изменения ссылки на изображение, что более "хакерски").
Посмотрите на следующие ссылки, чтобы начать:
- Learn @ Silverlight.net
- Silverlight на MSDN
- Формы и рисунок (Silverlight)