Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   [Урок] Простое Flash-приложение на Action Script v.3.0, компилируемое с помощью mxmlc (http://www.flasher.ru/forum/showthread.php?t=145530)

xintrea 11.10.2010 17:31

[Урок] Простое Flash-приложение на Action Script v.3.0, компилируемое с помощью mxmlc
 
Давным-давно на форуме flasher.ru был замечательный раздел "Уроки". Этот раздел, как я считаю, провел громадную разьяснительную работу среди новоявленных флешеров, и многим помог на первых порах разобраться с технологией фирмы Макромедия. Нынче такого раздела нет, а несколько тем с пометкой "Важно" выполнят свою задачу граздо менее эффективно.

Вот если бы был раздел "Уроки", я бы туда поместил свою статью. Но так как такого раздела нет, просто даю ссылку:

Пример простого Flash приложения на Action Script 3, компилируемого с помощью MXMLC.

Эта статья написана для тех, кто только начинает изучать Flash и Action Script v.3.0. В ней рассказывается, каким образом можно cкомпилировать AS3 код, а так же дана заготовка кода, в которой объясняются следующие популярные вопросы:
  • Как импортировать картинки вовнутрь SWF
  • Как сделать простую кнопку
  • Как сделать функцию-обработчик кнопки
  • Как сделать кнопку, которая делает переход на заданный URL
  • Как показать и двигать картинку на экране
  • Как сделать основной цикл программы (main loop)
  • Как сделать прелоадер (preloader)
В качестве компилятора используется бесплатный кроссплатформенный компилятор mxmlc от компании Adobe.

Котяра 11.10.2010 17:41

что такое?
Цитата:

Как сделать основной цикл программы (main loop)
Цитата:

Весь ролик существует в одном кадре. Основной цикл (main loop) организован с помощью обработки события перехода на начало кадра. Так как ролик состоит из одного кадра, то main loop вызывается с частотой смены SWF-кадров, обычно это 12 раз в секунду.
Стандартный FlashDevelop ролик с прелоадером состоит из 2 кадров.

Цитата:

Сразу скажу пользователям Windows - хоть Flex4 SDK есть и под Windows, лучше вместо него пользоваться средой FlashDevelop.
вообще бред. Разберитесь с понятиями: среда (IDE) и SDK

по уроку:
1. Это не урок - это исходник с комментариями.
2. Нужно поддерживать общепринятые конвенции наименования, особенно в уроках
3. Ниочём.

cleptoman 11.10.2010 19:52

разбомбил лектора )

alatar 11.10.2010 23:54

Цитата:

Основной цикл (main loop) организован с помощью обработки события перехода на начало кадра.
На начало какого кадра? Не путайте начинающих.
Код AS3:

обычно это 12 раз в секунду.

Обычно все-таки быстрее.
Цитата:

но. Точнее, классическая кнопка есть, но находится она в библиотеке Flex.
А также в компонентах поставляемых с FlashIDE (корявые, но есть).
Цитата:

лучше вместо него пользоваться средой FlashDevelop.
Помимо FlashDevelop существуют и другие IDE, в том числе кроссплатформенные. В основном платные, но есть и опенсорсные.
Даже онлайновые http://www.victordramba.com/?p=31
Цитата:

Flex4 SDK содержит все библиотеки Flex, библиотеки Flash MX
Компоненты mx (halo) не имеют ничего общего с компонентами Flash MX.

Раз уж вы рассчитываете в "уроке" (дабы убрать кавычки надо бы его переработать) на неподготовленного пользователя, то либо сошлитесь на документацию по установке и настройке FlashDevelop, либо распишите самостоятельно. Обычно для новичков это нетривиальная задача.

Добавлено через 2 минуты
P.S. На критику не обижайтесь. Это все в интересах ваших будущих читателей, ну и в ваших конечно :)

xintrea 12.10.2010 00:27

Цитата:

>> Основной цикл (main loop) организован с помощью обработки события перехода на начало кадра.
что такое?
addEventListener(Event.ENTER_FRAME, main_loop);


Цитата:

Стандартный FlashDevelop ролик с прелоадером состоит из 2 кадров.
См. файл Preloader.as.


Цитата:

>> Сразу скажу пользователям Windows - хоть Flex4 SDK есть и под Windows, лучше вместо него пользоваться средой FlashDevelop.
вообще бред. Разберитесь с понятиями: среда (IDE) и SDK
Вот это для кого написано? - "Это удобная OpenSource среда разработки, включающая в себя все нужные части из Flex SDK, способная компилировать AS3-код".


Цитата:

по уроку:
1. Это не урок - это исходник с комментариями.
2. Нужно поддерживать общепринятые конвенции наименования, особенно в уроках
3. Ниочём.
Этот урок не для вас.

Добавлено через 8 минут
Цитата:

Сообщение от alatar (Сообщение 942172)
А также в компонентах поставляемых с FlashIDE (корявые, но есть).

Помимо FlashDevelop существуют и другие IDE, в том числе кроссплатформенные. В основном платные, но есть и опенсорсные. Даже онлайновые http://www.victordramba.com/?p=31

Компоненты mx (halo) не имеют ничего общего с компонентами Flash MX.

Раз уж вы рассчитываете в "уроке" (дабы убрать кавычки надо бы его переработать) на неподготовленного пользователя, то либо сошлитесь на документацию по установке и настройке FlashDevelop, либо распишите самостоятельно.

Статья написана про использование компилятора из состава Flex4 SDK. Ни про FlashIDE, ни про FlashDevelop в статье не рассказывается, так как статья написана совсем о другом.

alatar 12.10.2010 00:49

Цитата:

хоть Flex4 SDK есть и под Windows, лучше вместо него пользоваться средой FlashDevelop.
Вот это кем написано? Котяра имел ввиду, что вы смешиваете понятия. Вы не используете "вместо него". Если вы имели ввиду среду разработки поставляемую адоби, то она называется Flash Builder (в девичестве Flex Builder).

Добавлено через 7 минут
Цитата:

1. Это не урок - это исходник с комментариями.
В данном виде, так и есть. Урок предполагает описание пошаговых действий, с пояснением для чего это делается. Начинающий флешер ничего не поймет в этом коде, несмотря на комментарии, тем более, что комментарии на русском у вас перемежаются комментариями на английском. Уровень урока у вас рассчитан на уровень "впервые вижу", но новичек с таким уровнем подготовки не сможет даже скомпилировать ваш код, без дополнительно ползания по сайту FlashDevelop'a.

xintrea 12.10.2010 01:30

Цитата:

Сообщение от alatar (Сообщение 942194)
Вот это кем написано? Котяра имел ввиду, что вы смешиваете понятия. Вы не используете "вместо него".

Дело в том, что я работаю под линухом, и как выглядит FlashDevelop, и как его настраивать знаю только понаслышке. Я даже предположить не мог, что в виндовом инсталляторе FlashDevelop не входят нужные части Flex SDK, и что Flex SDK надо ставить отдельно и прописывать к нему пути.

Я изменил формулировку на такую: "...Flex4 SDK есть и под Windows, однако лучше сразу установить и среду FlashDevelop. Это удобная OpenSource среда разработки, которая после правильной настройки включает в себя все нужные части из Flex SDK. Она предназначена для комфортного написания и компилирования AS3-кода. Так как FlashDevelop завязан на Win API и библиотеку .NET, его портирование под Linux затруднено, поэтому в Linux приходится довольствоваться только Flex4 SDK. В любом случае, приведенный в статье код скомпилируется не только в "чистом" Flex4 SDK, но и в настроенном FlashDevelop."


Цитата:

Сообщение от alatar (Сообщение 942194)
Если вы имели ввиду среду разработки поставляемую адоби, то она называется Flash Builder (в девичестве Flex Builder).

Я имел в виду именно FlashDevelop. Ибо речь идет о свободных программах.


Цитата:

Сообщение от alatar (Сообщение 942194)
В данном виде так и есть. Урок предполагает описание пошаговых действий с пояснением для чего это делает. Начинающий флешер ничего не поймет в этом коде, несмотря на комментарии, тем более, что комментарии на русском у вас перемежаются комментариями на английском. Уровень урока у вас рассчитан на уровень "впервые вижу", но новичек с таким уровнем подготовки не сможет даже скомпилировать ваш код, без дополнительно ползания по сайту FlashDevelop'a.

Да забудьте вы уже про FlashDevelop, не о нём речь.

Английские комментарии переделал на русские. Весь код - это фактически пошаговые действия. Я проверил статью на человеке, который до этого только во Flash IDE работал, и кое-как использует AS3. Говорит - всё понятно, пример закомпилился с первого раза, подумывает слазить с Flash IDE, так как оказывается даже библиотеки используемых элементов можно в коде прописывать.

alatar 12.10.2010 01:42

Поправьте еще этот кусок:
Цитата:

Flex4 SDK содержит все библиотеки Flex, библиотеки Flash MX, и компилятор mxmlc, с помощью которого можно компилировать в формат SWF как файлы *.mxml (формат Flex), так и AS3-программы.
Flex4 SDK содержит фреймворк с одноименным названием (библиотек в него входит несколько и не все изначально были разработаны для флекса) и компилятор (хотя на самом деле он там не один), позволяющий компилировать в файлы swf исходный код на языках mxml (язык разметки используемый в Flex) и ActionScript 3.

Как-то так, увы я не писатель. В скобках это комментарии для вас.

Котяра 12.10.2010 01:46

и всё-таки:
1. стандартный FlashDevelop проект с прелоадером создаёт swf главного класса состоящего из 2 кадров. в 1 фрэйме класс Preloader.as во 2-м все остальные и в частности Main.as
2. причём здесь mxmlc? В чём именно его фишка? разве этот код нельзя скомпилировать в FlashIDE и почему?
3.
Цитата:

как выглядит FlashDevelop, и как его настраивать знаю только понаслышке
Зачем тогда писать о том о чём не знаете?
4.
Цитата:

Опция -debug нужно, чтобы нормально работала функция trace().
нет. трэйсы выводятся при любом режиме компиляции. лишь бы плеер был дебаговый.
5.
Цитата:

Ни про FlashIDE, ни про FlashDevelop в статье не рассказывается, так как статья написана совсем о другом.
О чём урок? Пример плохо спроектированного и ужасно наименнованного приложения + немного воды не в тему и с фактическими ошибками?
Я понимаю, что урок не для меня.. Но для кого?
Не относитесь к критике плохо. Критика Вам добра желает. :)

alatar 12.10.2010 01:46

Цитата:

Сразу скажу пользователям Windows - Flex4 SDK есть и под Windows, однако лучше сразу установить и среду FlashDevelop. Это удобная OpenSource среда разработки, которая после правильной настройки включает в себя все нужные части из Flex SDK. Она предназначена для комфортного написания и компилирования AS3-кода. Так как FlashDevelop завязан на Win API и библиотеку .NET, его портирование под Linux затруднено, поэтому в Linux приходится довольствоваться только Flex4 SDK. В любом случае, приведенный в статье код скомпилируется не только в "чистом" Flex4 SDK, но и в настроенном FlashDevelop.
Это кусок надо или вообще выкинуть, или сделать небольшую вводную по установке и настройке FlashDevelop (и в конце добавить инструкцию как скомпилировать в нем). В данном виде в этом абзаце нет смысле, с последующим текстом (и с предыдущим) он никак логически не связан.

Добавлено через 10 минут
Код AS3:

// Загрузка картинки логотипа из библиотеки
  var logo:DisplayObject=new symbol_logo();

Это не загрузка, а инстанцирование (создание instance -- экземпляра класса).
Классы по-конвенции называются с большой буквы, без "подчеркиваний", например, в вашем случае symbolLogo. Хотя по той же конвенции названия должны передавать суть объекта, т.е. просто Logo.

Добавлено через 14 минут
Код AS3:

// Параметры картинок-кадров
 public var kadr_num:int=3; // Количество картинок-кадров
 public var kadr_current_num:int=1;
 public var kadr_move_step:int=10;
 public var kadr_size_x:int=464;
 public var kadr_size_y:int=380;
 
 // Текущее состояние программы
 public var state:String="wait_action";

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

Добавлено через 15 минут
Код AS3:

// Конструктор основного класса
 public function Main():void
 {
  if (stage) init();
  else addEventListener(Event.ADDED_TO_STAGE, init);
 }

Для новичка такая конструкция будет непонятна, следует объяснить почему сделано именно так.

Добавлено через 18 минут
Цитата:

init(e:Event = null)
По-конвенции, переменные и параметры в функциях должны называться осмысленно. Если функция длинная, то ближе к концу, для читающего будет уже непонятно, что такое "е" -- event или error.

Добавлено через 20 минут
Код AS3:

// Библиотека картинок
  [Embed(source="logo.png")] var symbol_logo:Class;
  [Embed(source="kadr_1.png")] var symbol_kadr_1:Class;
  [Embed(source="kadr_2.png")] var symbol_kadr_2:Class;
  [Embed(source="kadr_3.png")] var symbol_kadr_3:Class;

Это не библиотека. Не следует путать читателя, у него может возникнуть ассоциация с библиотекой из FlashIDE.

Добавлено через 22 минуты
Цитата:

// Логотип добавляется на холст (т.е. на Sprite)
Логотип добавляется в список отображения.

До конца сегодня не дочитаю + замечания Котяры

Добавлено через 26 минут
Цитата:

причём здесь mxmlc? В чём именно его фишка? разве этот код нельзя скомпилировать в FlashIDE и почему?
В этом как раз смысл есть. Он бесплатный и кроссплатформенный, в отличие от FlashIDE.


Часовой пояс GMT +4, время: 04:57.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.