Практично ли переносить код с 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 (или, возможно, путем изменения ссылки на изображение, что более "хакерски").

Посмотрите на следующие ссылки, чтобы начать:

Другие вопросы по тегам