![]() |
Знакомство с Flash 9 и ActionScript 3.0 на примере создания аркадной игры
Hаписал статью про AS3.0 в ней описывается процесс создания аркадной игры с нуля, прямо от установки Flash на компьютер. :) Надеюсь будет интересно и полезно.
Скачать можно здесь: http://etcs.ru/files/AsteroidStormHtml.rar http://etcs.ru/files/AsteroidStormSourceCode.rar P.S. Спустя почти год, я вижу, что в ней очень много грубых ошибок и все можно было бы сделать проще и "правильней". Но тем не менее, считаю, что статья полезна тем, кто переходит с AS2 на AS3. |
болшая статья, однако :~)
будет время почитаю |
Действительно, интересно и полезно. Спасибо!
|
респект :)
|
Дядько - от души душевно в душу :)... Есть предложения по работе :) пиши стучи :)
|
Блин! Респект чувак...
Всё боялся подойти к 3.0 а тут чё-то затянуло =)) Только пока нет flash 9... =( |
Скачал я исходник.
Не компилируется. В Document class пусто Что туда надо прописать? |
MerlinTwi, спасибо.
|
форма изложения информации очень порадовала. все понятно объяснено, заданы нужные вопросы самому себе (озвучены) ..))) спасибо нужная вещь...
|
Цитата:
Если не компилируется, то должен сообщать об ошибках... какие ошибки выдает? У вас Flash 9 Public Alpha? |
если закрыть глаза на некоторые нарушения хорошего стиля программирования, статья написана очень неплохо. Побольше бы таких материалов в сети...
Респект. |
Вот что пишет:
Код:
**Error** D:\www\www1\as3manual\AsteroidStormSourceCode3\main\GameOver.as : Line 15, Column 54 : [Compiler] Error #1119: Access of possibly undefined property panel through a reference with static type flash.display:DisplayObject. |
civhimik, ой, как интересно :)
Настройки флеша (Ctrl-U), категория ActionScript кнопка ActionScript 3.0 Settings, убрать галочку Strict Mode. Тогда откомпилируется. Похоже, в коде не все правильно по мнению Flash Strict Mode :) Позже разберусь что не так, поправлю и перезалью. Спасибо за наводку, я про этот Strict Mode и не знал даже. |
Да, всё заработало, спасибо.
Буду изучать. |
дык for each и раньше был :rolleyes:
|
for each появился в третей версии
|
мда. попутал.
Код:
for(var attribute in element.attributes) |
разница есть и делают они разные вещи, for in дает нам имена свойст, а for each in дает нам сами свойства
Код:
package {Цитата:
|
понял. спасиб =)
|
Игруха реально затягивает, идея супер и реализация на 5+ =) респект!
|
MerlinTwi, статья замечательная, но есть одно но — почему классы имеют имена в нижнем регистре, да ещё с подчёркиванием?
|
Пошли придирки не по существу...
Прям всё, если класс в нижнем регистре, то ты полный ламер, и т.п. :) |
Цитата:
|
Цитата:
А вообще там много ляпов, т.к. это первая работа на AS3, например, постоянная привязка к root и хранение ссылок на другие классы, вместо нормальной реализации своих событий и т.п., чувствуется наследие AS2. Будет посвободней время надо переписать красиво. Хотя с другой стороны, она тем и хороша, что понятна логика для человека, который постоянно работал с AS2 и решил попробовать AS3. Я сейчас, чуть ли не каждый день корректирую базовые классы, происходит постепенная перестройка логики программирования под нормальный ООП, после его извращенной реализации в AS2. |
Цитата:
В AS2 можно писать вполне нормально, событийная модель (EventDispatcher) без привязок и прочая… Просто нужно захотеть. Я легко могу все свои (ну практически все) AS2 классы переписать (скорее просто удалить реализации того, что есть в AS3) на AS3 без серьёзных переделок. Впрочем, это нисколько не снижает полезность статьи. Ещё раз спасибо. |
Надеюсь автор не против критики =)
Замечания Цитата:
Цитата:
Код:
packageЦитата:
Цитата:
Так же насчет констант, в первом примере вы использовали значение "click", во втором константу MouseEvent.DOUBLE_CLICK, в флэше я бы использовал значения, потому что их быстрее набить, в флексе я бы использовал константы, так как из за автокомплита, набить там легче. Мне кажется вам стоило пояснить, что в первом примере можно было использовать константу, а во втором значение, а то могут возникнуть конфузы у новичков. Цитата:
функции могут быть в пакетах, переменные могут быть в методах и функциях (локальные). Это не просто название, переменная и функция ни к чему не привязанны, в то время как методы и переменные зависят так или иначе от своего класса. Цитата:
Цитата:
Цитата:
Код:
public static const UPDATE_STATISTICS:String = "updateStatistics";Теперь о хорошем Статья сильно понравилась, идет дотошное объяснение что где и когда, я как человек никогда в жизни не делавший подобын игр (делал логические), узнал много нового. Правда есть опасение, что после выхода Flash 9 статью придется переделывать, насколько я понимаю его перепаивают по полной программе. Но всеже мне кажется что новенькому читать эту статью опасно, из-за некоторых замечаний которые я указал выше. Насчет стилизации кода, она нифига не соответствует конвенциям АС, но при этом у нее есть своя, правда я не понял какая :away: Вобщем гратс! |
Nirth, спасибо за столь подробный разбор статьи. Все замечания учту в версии 2.0
|
ждем с нетерпением...
Merlin а Вы Мука вторую книгу читали? просто по поводу имен классов итд...ООП в AS 2.0 у него очень хоРошо изложено |
Нет, не читал.
|
Цитата:
|
нет, 2 по-моему, просто в EAS2.0 про ООП , классы хорошо изложено
|
Просто ты написал "вторая книга", а у него их больше =)
|
маленькое замечание:
просто бросилось в глаза строка num = Math.floor(Math.random()*totalFrames)+1 наверное правильние будет так num = Math.round(Math.random()*(totalFrames-1))+1 а вообще статься хорошая. :) |
Цитата:
Код:
var _totalFrames:int = 10; |
интересно было бы почитать упоминающуюся статью про 21 оптимаьлный кадр
|
Цитата:
|
А как скомпилировать??
Ошибки: main\comet.as : Line 6, Column 37 : [Compiler] Error #1017: The definition of base class basic_object was not found. ReferenceError: Error #1065: Variable preloader is not defined. ReferenceError: Error #1065: Variable background is not defined. И т.д. Как исправить? Пока что на экране мигают два кадра. |
MerlinTwi, почему в классе 'main.background' ты использовал stage.addEventListener(Event.MOUSE_LEAVE, handleMouseUp), а не stage.addEventListener(Event.MOUSE_OUT, handleMouseUp)?
|
Цитата:
Если ты о том, как отловить уход мышки при нажатой кнопке, то можно слушать MouseEvent.MOUSE_MOVE и проверять координаты мышки, ушла она за края сцены или нет, но это стало работать не так давно, с какой-то версией flash плеера. |
страничка перестала быть доступной - что делать ? Т_Т
|
| Часовой пояс GMT +4, время: 23:43. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.