Портирование HTML5 Canvas WebGL игры на Flash ActionScript 3.0 - PullRequest
1 голос
/ 23 сентября 2011

В январе я создал HTML5 Canvas WebGL игру для конкурса Mozilla Game On 2010 (знаю, довольно поздно - я никогда не выпускал его до вчерашнего дня).Теперь я хочу перенести его на Flash ActionScript 3.0 для назначения в колледж.

Я хорошо разбираюсь в обоих статических языках, таких как C / C ++ и Java;и динамические языки, такие как Python и JavaScript.Однако я не знаю ActionScript, но, поскольку он является подмножеством ECMAScript, его должно быть довольно легко понять.

Я хочу изучить программирование в ActionScript 3.0, чтобы иметь возможность переносить свою игру во Flash.Чтобы быть более конкретным, я хочу узнать больше о:

  • Чем ActionScript отличается от браузера и серверного JavaScript и основ.
  • Программирование OpenGL в ActionScript (включая загрузку текстур), шейдеры и т. д.).
  • Как создать HUD во Flash, используя 2D HTML5 Canvas, как API (в моей игре у меня есть 2 холста, один для 3D-игры и другой с наложением на экранный дисплей).).
  • Поддержка векторных и матричных вычислений в ActionScript.
  • Как загружать ресурсы, такие как аудио и спрайты, во Flash.

Буду признателен, если вы захотитепредоставьте мне ссылку на страницу, где я могу узнать больше об этих темах.Более прямой практический подход был бы предпочтительнее.

Было бы еще более полезно, если бы вы проверили мой исходный код на JavaScript и предложили для меня наилучший из возможных способов решения этой проблемы.

Код для основного игрового движка и самой игры можно найти в моем Github-репозитории .

Ответы [ 2 ]

2 голосов
/ 23 сентября 2011

ActionScript и JavaScript очень похожи по своей сути. В некотором смысле вы можете думать о ActionScript как о более надежной библиотеке, наслоенной поверх ECMAScript. Есть несколько отличий (а именно ActionScript любит думать о себе как о оопе на основе классов, где JavaScript основан на прототипах), но если вам удобно с одним, то вам должно быть легко с другим.

ActionScript имеет систему наследования, основанную на классах, и поддерживает интерфейсы (но вы все равно можете использовать магию прототипов, если хотите, но это не рекомендуется). Он также поддерживает строго типизированные объекты.

var object:MovieClip = new MovieClip();

Это будет строго печатать переменную object как экземпляр класса MovieClip.

Если ваша игра очень требовательна к 3D, вы захотите взглянуть на новые классы Flash 11 Stage3D и Context3D . Они предоставляют низкоуровневый API с ускорением на GPU, который до Flash 11 был невозможен. Вы можете делать интересные 3D-вещи с Flash 10, но вы обычно используете drawTriangles () , который не был аппаратно ускорен. Flash 11 в настоящее время находится в бета-версии, но она должна выйти очень скоро. Существуют бета-версии Flex SDK, которые позволяют компилировать данные для проигрывателя Flash 11.

Существует также несколько 3D-библиотек, которые построены поверх этих низкоуровневых API. Если вы поглядываете на них, их легко найти. Но я бы рекомендовал получить четкое представление о том, как работает ActionScript, прежде чем углубляться в библиотеки 3D.

HUD во флэш-памяти прост, независимо от того, используете ли вы Flash 11 или Flash 10. Для «классической» флэш-памяти вы захотите ознакомиться с концепцией дерева отображения , которую они используют во флэш-памяти. Просто убедитесь, что порядок отображения правильный, и ваш HUD DisplayObject всегда будет "поверх" вашего рендеринга DisplayObject

Для Flash 11 объекты StageVideo и Stage3D располагаются непосредственно над сценой, но за всеми обычными вспышками DisplayObjects, прикрепленными к сцене. Поэтому в этом случае я бы позволил API Stage3D позаботиться обо всех ваших тяжелых операциях рендеринга и использовать традиционный стек отображения для элементов HUD.

Возможно, вы захотите взять себе Flash Builder поверх Flash CS5.5. Если вы программист (как я полагаю, поскольку вы публикуете здесь), это не заставит вас кровоточить, пытаясь кодировать. FB основан на затмении, и это довольно прилично, но не идеально. Но если вы возьмете бесплатный Flex SDK и не возражаете против использования командной строки, вы можете приступить к компиляции SWF-файлов довольно быстро и дешево (иначе бесплатно).

Кроме того, посмотрите на FlashDevelop . Я не использовал его некоторое время, с тех пор, как переключился на FB для его встроенного профилировщика, но он может быть вам полезен.

Импорт изображений и аудио довольно прост с Flex SDK.

[Embed(source="logo.gif")]
public var LogoBitmapData:Class;

, а затем создать экземпляр класса:

 var bitmapData:BitmapData = (new LogoBitmapData()) as BitmapData;

А потом используй его там, где захочешь.

Просто заметка о Flex. Flex - это набор библиотек пользовательского интерфейса, созданный поверх обычного Flash API. Flex SDK включает в себя библиотеки и инструменты для компиляции файлов кода MXML и ActionScript. Таким образом, несмотря на то, что вы должны использовать Flex SDK для компиляции приложений Flex, вы также можете использовать его для компиляции прямого кода ActionScript.

Есть встроенные классы для Vector3D и Matrix3D .

Что касается учебных пособий или ссылок, то мне нечего предложить. Я обнаружил, что большая часть информации в Интернете о программировании на ActionScript довольно удачна (если вы можете найти что-то, что не написано графическим дизайнером). Я бы покопался в здесь и посмотрел, сможешь ли ты найти что-нибудь, что имеет для тебя смысл.

Очевидно, я мог бы рассказать об этом гораздо больше, но, надеюсь, это даст вам толчок в правильном направлении.

1 голос
/ 23 сентября 2011

Добро пожаловать в AS3:)

@ 32bitkit побил меня по информации IDE, но я бы абсолютно рекомендовал Flash Builder.Это реальный инструмент и стоит денег, если вы собираетесь выполнять какую-либо настоящую работу в AS3.

Что касается реальных учебных пособий, Senocular известен тем, что выписывает одни из лучших материалов.там.У него есть несколько замечательных учебников здесь , но следующие два являются особенно отличными вводными учебниками для AS3:

  • AS3 Введение во Flash CS3 Это учебное пособиехорошо, потому что это объясняет различия между AS2 (очень похожим на JavaScript) и AS3.Не обращайте внимания на тот факт, что он основан на использовании Flash IDE.
  • AS3 Введение без изучения Flex Это полезно, потому что оно дает более подробное представление о самом языке, без всегоатрибуты среды IDE или среды Flex.Это поможет вам понять сам язык.

Как показано во втором уроке, проект на основе AS3 будет наследоваться от класса flash.display.Sprite.Вы можете просмотреть документы для этого здесь .Возможно, это звучит глупо, но вы честно узнаете много нового об AS3, просто просмотрев справочную документацию AS3 .Adobe хорошо с этим справилась.

Еще одна вещь, о которой нужно знать в AS3, - это то, как обрабатываются события. В этом руководстве объясняется, как класс EventDispatcher функционирует как основа управления событиями.Вы можете использовать встроенные события или отправлять свои собственные.

HTH!

...