Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Точка входа (http://www.flasher.ru/forum/showthread.php?t=208841)

MrLf 07.09.2014 23:07

Точка входа
 
Начал знакомиться с ActionScript совсем недавно, пока читаю книгу "ActionScript 3.0 для Flash" (Колин Мук).
В книге сказано, что главный класс приложения (конструктор которого и является точкой входа в программу) должен располагаться в безымянном пакете. Однако, FlashDevelop спокойно компилирует программу с единственным классом, который помещён в пакет с произвольным именем (т.е. не безымянным). Почему так?

И второй вопрос: есть ли варианты расположения точки входа? Или только конструктор главного класса? Можно ли создать программу вообще без классов?

caseyryan 08.09.2014 08:45

Цитата:

должен располагаться в безымянном пакете
Это только для примеров из книги. Сделано для простоты, чтобы новички с пакетами не путались.
А так, все опытные программисты обычно создают пакеты как обратный URL. То есть, что-то типа com.example.someprogram
Цитата:

И второй вопрос: есть ли варианты расположения точки входа?
Точка входа - это в любом случае тот код, который выполнится первым. Конструктор класса всегда выполняется первым, и уже потом все остальное.
Цитата:

Можно ли создать программу вообще без классов?
На флеше можно писать в кадрах, но лучше этого не делать.

MrLf 08.09.2014 11:07

Цитата:

Сообщение от caseyryan (Сообщение 1171706)
Это только для примеров из книги. Сделано для простоты, чтобы новички с пакетами не путались.

В книге утверждается, что это требование компилятора. Остаётся только предположить, что книга немного устарела (2009 г. издания, писалась в 2007 г.) :)

Что касается положения точки входа, то я спросил потому, что концепция ООП может быть излишней для очень простых пограмм, имхо. Т.е. все эти объявления классов и т.п. только увеличат громоздкость кода. К таким "простым программам" я отношу, например, программы для изучения нот на грифе гитары и т.п. Если бы это было возможно, я бы писал весь код в одном файле, просто разбивая его на функции.

PainKiller 08.09.2014 11:58

Цитата:

программы для изучения нот на грифе гитары
ни хрена себе простая программа)))
Цитата:

Если бы это было возможно, я бы писал весь код в одном файле, просто разбивая его на функции.
Это возможно. Начните с этого (сделайте один документ класс), и рано или поздно, когда количество кода превалит за несколько тысяч строк, вы сами поймете преимущества ООП, и начнете выделять код в отдельные классы.

caseyryan 08.09.2014 20:51

Цитата:

ни хрена себе простая программа)))
Во во)
Цитата:

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

MrLf 09.09.2014 10:08

Колин Мук, "ActionScript 3.0 для Flash", подробное руководство, O'REILLY, Питер, 2009.

Стр.173: "Компилятор приложения Flex Builder требует, чтобы основной класс программы принадлежал безымянному пакету."

Стр.175: "Как и компилятор приложения Flex Builder, mxmlc требует, чтобы основной класс программы принадлежал безымянному пакету. Таким образом, перед компиляцией программы по созданию виртуального зоопарка с помощью mxmlc мы должны переместить класс VirtualZoo из пакета zoo в безымянный пакет...".

caseyryan 09.09.2014 12:26

В оригинале написано так:
Цитата:

When compiling ActionScript programs with the Flash authoring tool, FlexBuilder,
or mxmlc, bear in mind the following compiler restrictions:
• The program’s main class must be public.
• In FlexBuilder 2 and mxmlc, the program’s main class must reside in the
unnamed package.
Речь идет конкретно о второй версии флекс билдера. Сейчас эта программа называется Flash Builder 4.7
В уже нет этих ограничений

ChuwY 09.09.2014 15:25

Цитата:

Сообщение от caseyryan (Сообщение 1171706)
Конструктор класса всегда выполняется первым, и уже потом все остальное.

Сначала cinit :rolleyes:

in4core 09.09.2014 20:19

Цитата:

Сначала cinit
Даже во как

Код AS3:

private static var f:Function = function() { trace(1) }
f();



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

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