Форум 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=172652)

viktorami 14.12.2011 19:27

какова логика создание класса с визуальными элементами?
 
к примеру - если пишется на флэш не просто код - а панель инструментов - где есть кнопки или списки - в общем из компонентов(contl+f7) - то получается часть работы - это по сути создание визуального интерфейса - на отельном movie clip - получается отдельный хороший и компактный класс в библиотеке. А КОД к нему - можно как то тоже компактно оформить в виде класса? если да - то как. Надо же из кода обращатся именно к компонентам в этой библиотеке.
Только писать код в кадрах? или еще как то можно?

fish_r 14.12.2011 19:59

Есть два варианта:
а) собираете все компоненты в библиотеке, линкуете их для ActionScript, затем в документ-классе создаете
их экземпляры, размещаете на сцене и дальше управляете,
б) даете символам на сцене имена (instance name), в документ-классе обращаетесь к нем по именам (должен быть установлен флажок "Automatically declare stage instances" в настройках "Advanced ActionScript 3.0 Settings", синтаксис обращения к символу примерно такой: mainClass.someSimbol, а внутри класса просто обращаетесь к символу по его имени, как если бы вы объявили пер-ную с этим именем в классе.

Документ-класс - это класс закрепленный за фла файлом. Для его объявления надо создать файл .as (можно там же где фла) и объявить его документ-классом, можно там же - в "Advanced ActionScript 3.0 Settings", или на вкладке properties окна разработки.

viktorami 15.12.2011 14:00

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

Flashrunner 15.12.2011 15:04

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

Цитата:

то есть первый вариант это по сути- спроектировать визуальный вид в библиотеки - а потом из обычного внешнего класса создать его и дальше работать. так?
Нет, это скорее подвариант б.
Получается ваш компонент разделяется на 2 класса - класс представления и класс логики(компонента). Класс логики создает класс представления и управляет элементами. Класс представления в свою очередь, располагает эти элементы(кнопки, списки и т.д) и предоставляет прямой доступ к ним.

А в варианте б класс логики линкуется к представлению (мувиклипу) на этапе компиляции и в итоге получается компонент как единое целое.

fish_r 15.12.2011 15:19

Цитата:

Сообщение от Flashrunner (Сообщение 1051658)
fish_r, не совсем внятное объяснение, имхо.

Внятно объяснить - слишком много писанины получится. Лучше топикстартер задаст вопросы уточняющего
характера, если будет что то не понятно, на которые можно потом ответить.

Цитата:

Непонятно, зачем нужно использовать документ-класс, если можно (возможно даже лучше) обойтись обычным классом, и зачем располагать компоненты на сцене, если автор явно указал, что располагает их в отдельном клипе.
А отдельный клип вы потом как-то отдельно от сцены сможете использовать?
Или вложенный объект в контейнер лежащий на сцене уже не на сцене будет находится?
Пример с документ-классом сейчас очевиднее и проще, не надо лезть в дебри.


Цитата:

Нет, это скорее подвариант б.
Получается ваш компонент разделяется на 2 класса - класс представления и класс логики(компонента). Класс логики создает класс представления и управляет элементами. Класс представления в свою очередь, располагает эти элементы(кнопки, списки и т.д) и предоставляет прямой доступ к ним.

А в варианте б класс логики линкуется к представлению (мувиклипу) на этапе компиляции и в итоге получается компонент как единое целое.
Человек про основы спрашивает а вы через два хода - в MVC прыгаете... не морочьте голову.

viktorami 15.12.2011 15:19

а можно поподобнее вариант а немного не понял.

fish_r 15.12.2011 15:24

Цитата:

Сообщение от viktorami (Сообщение 1051634)
то есть первый вариант это по сути- спроектировать визуальный вид в библиотеки - а потом из обычного внешнего класса создать его и дальше работать. так?


@Flashrunner прав, это скорее к варианту "б". Речь идет о двух разных подходах к получению ссылок на объекты в классе. Т.е. когда виз.объект, например кнопка, лежит в библиотеке вы создаете её экземпляр из класса, и в этом случае сами добавляете на сцену, позиционируете и т.д., а когда она находится на сцене, то вы уже имеете её экземпляр и просто обращаетесь к нему по его имени, причем этот экземпляр уже имеет тот вид и расположен так как вам нужно...

Добавлено через 6 минут
Посмотрите этот ролик, даже если с инглишом проблема всё равно уже будет понятней.

Flashrunner 15.12.2011 18:15

fish_r, вы похоже, невнимательно прочитали вопрос в первом посте. viktorami создал составной компонент из мелких и пытается написать к нему код, но не знает где его разместить. Вы же говорите ему расположить компоненты на сцене и написать к ним код в документ-классе. А что если он захочет создать еще один составной компонент? Ему его тоже нужно раскидать по сцене и написать код в документ классе? Человек, можно сказать, сам встал на путь истинный, а вы его с него сбиваете :)
И ни в какие дебри я не залезал, я лишь чуть подробнее описал то, что сказал сам топикстартер.

fish_r 15.12.2011 18:47

Цитата:

Сообщение от Flashrunner (Сообщение 1051715)
fish_r, вы похоже, невнимательно прочитали вопрос.

Я как раз внимательно прочитал: человек пытается уйти, просто, от кода в кадрах, и перейти к коду в классах. Поэтому я и пытаюсь как можно проще это объяснить. Имеет смысл идти от простого к сложному.
Иначе легко запутаться.


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

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