Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Статьи (http://www.flasher.ru/forum/forumdisplay.php?f=101)
-   -   ActionScript 3 с нуля (http://www.flasher.ru/forum/showthread.php?t=92301)

DRAGOnoid 21.02.2007 13:33

ActionScript 3 с нуля
 
Извините если поднял ненужный вопрос - просто хотел бы создать топик в котором можно было бы сконцентрировать вопросы ну уж совсееем для тех кто не в теме.

При необходимости можете удалить тему...

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

но а что есть - не совсем понятно что для чего и откуда берётся.

Если позволите я буду задавать совсем глупые вопросы - которые возможно бы пролили свет на то что происходит...

итакс начну.
Поставил 9ю версию флеша, настроил Паблик на AS3 и открываю окно программирования.

первое что хочу сделать - написать 'Приветище мир!'
пишу
Код:

trace ("Приветище мир!");
жму Ctrl+Enter
работает!

натыкаюсь на пример в инете:
Код:

package main {
    import flash.display.Sprite;
 
    public class test1 extends Sprite {
          public function test1() {
                trace("Hello World");
          }
    }
}

пример взят отсюда http://www.timezero.ru/storm/

вот тут меня и понесло задавать вопросы...
например что ещё за package?
для чего нужна строчка ?
import flash.display.Sprite;
и что она означает ?

как разобраться с классами если раньше с ними никогда не работал
public class test1 extends Sprite { }
тем более что слов много и непонятно что для чего
и функция тоже
public function test1() { }
вроде как всё знакомо но непонятно какои образом она вызвалась, или как вызвался класс....
В общем совсем ничего не понятно....

я так же пытался почитать http://livedocs.adobe.com/flex/201/langref/index.html
но там тоже только описание операторов, но простейших примеров как они работают нет. Догадайся мол сам =(

baron27 21.02.2007 13:37

по-моему тебе нужно начать с теории ООП, почитав Мука.

DRAGOnoid 21.02.2007 13:56

а ссылка есть? :)
или где купить

кстати понятие классов и функций я имею, использовал их как в AS2 так и в PHP (было немного на DELPHI) но тут чё то немогу никак разобраться....

DRAGOnoid 21.02.2007 17:25

пошаманив немного с примерами - кое что стало немного ясно.
как известно поле Document class сделанно для того чтобы присвоить в него основной класс.
в этом случае код класса пишется в отдельном *.as файле.
а в Document class пишется путь к этому файлу.
путь выглядит следующим образом main.fff.ggg
где main это папка лежащая в той же директории где наш *.fla файл
fff - папка лежащая в папке main, а ggg - это имя нашего файла *.as лежащая в папке fff. т.е. получается путь к ggg.as
всё верно?
(хотя остаются вопросы как перейти в другие уровни и т.д. - но до этого пока щас не дошёл).

да ещё заметил что поле *.fla файла обязательно должно оставаться пустым - иначе возникает ошибка (даже если просто коментарий написать) - почему?
То же самое касается и сцены - в ней тоже не должно ничего быть иначе вылезает ошибка.

Второе что интересует как быть с встроенным программным полем fla ? там работают простые примеры типа trace(); математика, определение параметров объектов и т.д. А как например мне сделать autoSize к динамическому полю?
http://livedocs.adobe.com/flex/201/l....html#autoSize

etc 21.02.2007 17:47

Код в кадрах в девятом флеше не пишется.

http://as3.ru/?p=14

Dendroid 21.02.2007 18:55

А почему бы Вам сперва не прочитать статью многоуважаемого Мерлина http://www.timezero.ru/storm/page1.html, где на конкретном примере показано что, куда и зачем в AS3?

Тема с обсуждением так и называется: "Знакомство с Actionscript 3" и находится 10 строчками ниже. http://flasher.ru/forum/showthread.php?t=83431

DRAGOnoid 21.02.2007 21:04

пример с Timezero просто восхитителен!
Но архитектура не сразу ясна....
я же как раз и сравнивал изначально 2 примера - Hello World c timezero и свой старый бытовой.
http://as3.ru/?p=14 - сильно похож на код с таймзеро (и кстати там я тоже откоментировался об небольшой поправке как DRAGON )

в таймзеро там некоторые мелочи опускают - вот я их и хотел бы уточнить.
например что есть package main { } ?
и как оно работает?
из всего текста я полнял что import - это своего рода добавление библиотеки. (зачем такая сложность?) к тому же как я понял в SWF или плугине FLASH всёравно запускаются все эти библиотеки.

etc 21.02.2007 21:32

package main всего лишь означает, что класс находится в пакете main и всё.

Если ты писал на AS2, то не понимаю, откуда такие вопросы возникают.

MerlinTwi 22.02.2007 12:05

> например что есть package main { } ?
> и как оно работает?
см. здесь http://flasher.ru/forum/showpost.php...9&postcount=93

> из всего текста я полнял что import - это своего рода добавление библиотеки.
да, http://flasher.ru/forum/showpost.php...6&postcount=86
> (зачем такая сложность?)
этот вопрос меня тоже беспокоит :) теоретически Flash мог бы и сам найти нужные классы. Может для порядку? Как, например, ввели обязательно писать override при переопределении метода класса, чтобы случайно не заменить уже существующий. Так возможно и здесь, если ты не написал import а пытаешься использовать класс, так может это просто опечатка в имени класса?

> к тому же как я понял в SWF или плугине FLASH всёравно запускаются все эти библиотеки.
нет, в SWF будут встроены только те библиотеки, которые были указаны в import.
Кстати еще один прикол, если включить Strict mode (http://flasher.ru/forum/showpost.php...postcount=101), написать в классе import чего-либо, что в классе не используется, то компилятор на это ругается, типа чего объявить объявил а не используешь, вот только текст ошибки сбивает с толку, там говорится не могу найти объявленный класс :)

> как разобраться с классами если раньше с ними никогда не работал
> public class test1 extends Sprite { }
> тем более что слов много и непонятно что для чего
про много слов см. тут http://flasher.ru/forum/showpost.php...66&postcount=9

> и функция тоже
> public function test1() { }
> вроде как всё знакомо но непонятно какои образом она вызвалась,
Если функция названа так же как класс - это конструктор, который вызывается автоматически при создании класса

> или как вызвался класс....
он был записан в поле Document class, см. тут http://flasher.ru/forum/showpost.php...0&postcount=77

> да ещё заметил что поле *.fla файла обязательно должно оставаться
> пустым - иначе возникает ошибка (даже если просто коментарий написать) - почему?
> То же самое касается и сцены - в ней тоже не должно ничего быть иначе вылезает ошибка.
Потому что размещенные на сцене объекты будут встроены в рутовый класс (Document class) а если этот класс не объявлен как динамический (dynamic), то в него нельзя ничего динамически добавить, потому и возникает ошибка. Добавь слово dynamic в описание рутового класса и все будет ok.

> Второе что интересует как быть с встроенным программным полем fla ?
см. тут http://flasher.ru/forum/showpost.php...1&postcount=33

etc 22.02.2007 12:21

import в AS3 работает именно как импорт, т.е. зашивает всё-таки классы.


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

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