![]() |
ооп во ActionScript
Здравствуй народ!
У меня всё хорошо,вот только надоело код на кадры лепить.Решил для себя ООП освоить(по книжке Колин Мука).Но обьекты классов всё равно на временной создаю.Нужен инициализирующий класс не такли?Как свести на нет код таймлайна? P.S.Не судите строго картина всего пока размыта. |
Если ты еще только начинаешь учить, то лучше сразу переходи на ActionScript3. Там для ооп больше инструментария
|
Можно сделать класс например назвать его Main. Он будет наследоватся от MovieClip и атачится в таймлайне. Это будет единственный код написанный в таймлайне. Далее использовать этот Main как основной класс-контейнер для других т.е будет как аналог _root или DocumentClass в AS3
|
Можно хранить в библиотеке пустой мувик, который экспортируется в 1-й кадр для скрипта.
В мувике Код:
#initclip |
Vrem немогу себе такое позволить!
Всем спасибо,за советы.И такой вопрос:литературу какую посоветуете? |
Колин Мук. "ActionScript 3.0 для Flash. Подробное руководство"
|
Цитата:
|
да, лучше классом
Код AS1/AS2:
|
Всеравно лучше было бы если бы этот класс работал с клипом какимто основным как бы, но сам бы им не являлся)
Хотя я вообще не пойму зачем так сделано) |
я в свое время довольно плотно пользовал (и сейчас пользуюсь если надо что-то в AS2 делать) такую схему:
все основано на том же приеме, что показал dimarik - просто ставим мувик в цепочку наследования классу (походу вызываем конструктор, если надо) в результате имеем возможность создавать (и аттачить тоже) мувики "своих" классов без прописывания класса в библиотеке в общем получается работать с нормальной иерархией классов без особой оглядки на таймлайн (почти как AS3 :)) реально экономит время если работать в схеме типа FD-mtasc-swfmill, IDE здесь получается почти не при делах (только сгенерить графику) если же писать/компилить в IDE, то не думаю что от такого подхода будет выгода - тогда наверное удобнее все же в библиотеке класс прописать |
Ага и искать его среди сотен клипов. Я не понимаю почему оно будет работаеть если Main не MovieClip :/
Код AS1/AS2:
Код AS1/AS2:
|
если планируется что-то потом искать среди сотен клипов, то ООП здесь не причем вовсе..
все изначально должно быть организовано так чтоб не надо было ничего искать, иначе смысла в такой схеме нет, согласен |
Ну я к тому что врядли испольовать регистрацию класов через библиотеку даже в FlashIDE удобней )
|
Цитата:
Цитата:
Проблема у автора в том, что он не хочет писать код запуска на таймлайне. А она (проблема) только так и решается - что есть компонент в библиотеке (!) где прописан #initclip. Конечно, это тоже таймлайн мувика. Но этот мувик все же в библиотеке и о нем вообще не надо думать. Кстати сами классы по той же схеме с #initclip и работают. Цитата:
http://flasher.ru/forum/blog.php?b=23 |
Цитата:
_root становится объетом класса Main. Сделайте Main extends MovieClip. Никаких приблуд вроде дополнительных мувиков не нужно. Все остальное в файлах *.as Цитата:
|
Цитата:
Цитата:
|
chingachgoog, эээ... Получается, что код с рутового таймлайна перекочевал в таймлайн библиотечного мувика. Во-первых, появился "совершенно левый" символ. Во-вторых, фиг победишь навскидку где реально у флахи точка входа. Оно это автору надо?
|
имхо, абсолютно непринципиальный вопрос при том, что оба способа делают по сути одно и тоже
кому-то проще (милее?) написать код активации в библиотечном мувике кому-то строчку в первом кадре рута от этого что-то меняется ? |
Для мтаска вообще ни то ни то ненадо)
|
Люди спасибо огромное!
Пользуюсь классом с точкой входа ! Назрел ещё один вопрос касающийся темы топика. Как правельно спроектировать классы? На данный момент у меня весь код на фреймах(работает,но смотриться убого),хочу теперь в классах описать, с чего начать? |
По AS2 почитайте Колина Мука, например. Есть у него и по AS3 книжица, страниц так на 1к.
|
Доброго всем времени суток!
Код AS1/AS2:
Добавлено через 1 минуту Прости те за ошибки:rolleyes: |
Вы же сами написали код. Работает? А наследования там нет.
|
Статические методы и свойства не наследуются.
|
Понял!А могу ли я просто импортировав класс вообще и пользоваться?
Добавлено через 2 минуты Мне же не нужно наследование,а только то что возрощает нужный мне метод,как быть? |
Смотрите свой код выше, там все как надо.
|
Inils простите,но если не горите желанием обьяснить чайнику в чём его ошибка ,не бросайтесь отговорками(код не рабочий даже с соблюдением синтаксиса);
Добавлено через 3 минуты There is no method with the name 'ClassA.'. Добавлено через 3 минуты There is no method with the name 'ClassA.'. Добавлено через 5 минут простите ЭВМ старенький |
axiom, чайники на кухне. Здесь люди, одни думают, другим думать лень, поэтому они начинают говорить другим, что и как те должны делать.
Вы спросили Цитата:
Об ошибке не слова. Так как какого вы мне пишите, про отговорки, вместо того чтобы подумать? Если класс ClassA кривой, это не мои проблемы, что вы его не показали. А теперь о внимательности. Мой ник iNils, а не Inils. |
Извиниюсь за выше сказаное в ваш адрес.
Код AS1/AS2:
private static var str:String;//поправка |
Переменные класса нужно создавать тогда, когда они используются в любом месте класса, иначе создавать локальные.
Код AS1/AS2:
Код AS1/AS2:
|
а как же книжки ???Класс начинается с определения всех переменных(свойств)класса?
|
Ключевое слово - класса.
А локальные переменные, это вспомогательные переменные, которые к самому классу не относятся. Вы когда пишите цикл Код AS1/AS2:
Кроме того, локальные переменные более быстрые, чем переменные класса. |
Привет всем, тоже назрел вопрос по ООП
есть класс Код AS1/AS2:
а как сделать чтобы менялись св-ва от MovieClipa (_rotate,_x) почему-то из вне они не меняются(ball._rotate +=1;) |
Это геттеры и сеттеры. Их нужно переопределять.
|
>>Это геттеры и сеттеры. Их нужно переопределять.
это если нужно от них что-то еще, а так-то зачем? просто нет у MovieClip никакого _rotate..и у этого Ball тоже нет.. и чего хотим? |
Цитата:
надо было получить доступ к _rotation,_x и другим свойствам мувиклипа Получилось так Код AS1/AS2:
|
у Ball extends MovieClip должен быть совершенно нормальный доступ ко всем свойствам мувиклипа без всякого переопределения геттеров/сеттеров
в чем проблема непонятно.., попробуй сформулировать иначе или дай пример |
Все уже разобрался, доступ есть, просто _rotation изменялся в onEnterFrame и небыло видно результата :)
|
| Часовой пояс GMT +4, время: 05:42. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.