![]() |
Когда надо использовать _root
Объясните пожалуйста, когда надо использовать _root ? а то я действую по принципу не идёт без _root. , значит ставиm _root.
|
Никогда не юзаем.
|
ну а вообще, когда его надо использовать по правилам ?
|
Никогда.
|
Тогда можете объяснить, почему без _root. я не могу присвоить координаты MovieClip'у ?
|
Цитата:
|
Использование рут является плохой практикой, для работы с объектами вовсе не обязательно использовать рут.
|
__etc я просто привёл пример =)
ну вот допустим у меня есть movieclip asd Код:
onClipEvent(enterFrame)Код:
onClipEvent(enterFrame) |
1) onClipEvent не используйте вообще! Это не рекомендуется делать уже 7(!!!) лет. Хорошо хоть в AS3 его убрали...
2) Область видимости в onClipEvent - сам клип, в отличии от on() - где материнский, поэтому в первом случае Вы обращаетесь к asd.asd, которого не существует, и код не имеет смысла. |
юзаю в следующих вещах:
1. Когда создаю главный класс. Например: Код:
var engine:Engine = new Engine(_root,...);2. Когда работаю с мышкой |
1. Лучше писать this в рутовой сцене, потом сохранить ссылку в стат. свойстве и во втором пункте больше не использовать _root.
|
Тоесть, тогда надо юзать onEnterFrame = function() { } ?
|
1. ага...использую this который ссылается на рут.
2. а почему здесь рут не уместен? мне нужно отловить "глобальные" координаты мышки из любого контейнера 2 Dr.XxX: Код:
var mc:MovieClip = this; |
И _root и onClipEvent вполне нужные вещи, просто надо знать, что они делают и как. В данном случае, как правильно сказал DarkLight дело совсем в другом - в области видимости.
|
onClipEvent не нужен вообще, если вы работаете с 6-м плеером и выше. Оправданий ему нет.
А вот _root порой необходим, но только для абсолютных вещей, таких координаты мыши в целом и flashvars. |
ну и наверное при работе с мышкой он тоже не заменим? или я ошибаюсь?
|
Я опечатался, хотел мыши написать, а написал ролика.
Но суть в другом, _root нельзя использовать там, где может, даже если вы и не планируете это сейчас, меняться вложенность объекта который использует этот код или код на него ссылается. |
солидарен с iNils'ом :)
|
Например у onClipEvent есть интересная особенность - он не исчезает, когда в контейнер, на котором он висит, загружают другой мувик.
И это не единственная польза. Также и рут - есть локрут и пр., что позволяет его оправданно использовать. |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
chingachgoog, если вы работает с баннерами или вы хотите ориентироваться на уровень начинающих это ваши проблемы, остальные уже из этого вышли.
И время от времени мне попадаются задачи "там все уже сделано, нужно только прикрутить к движку". А потом выясняется, что везде стоял _root, и где надо и где не надо, а что бы поправить надо облазить 100 клипов. Я флешом начал заниматься с 4-ой версии, когда код писали на клипах, а классов не было и в помине, и знаю о чем говорю, так как прошел все стадии его развития. |
Цитата:
Цитата:
Цитата:
|
Цитата:
|
На мой взгляд, без _root можно и нужно обходится. У меня не было ни единой причины, по которой я не могу быть без него.
|
Цитата:
|
Цитата:
Рут действительно ненужен. |
Цитата:
Вот собственно и весь вопрос: что это такое и как пользоваться. Ответ "не нужны и точка" и "это не круто" - на мой взляд как раз не годятся для обучения других. |
Цитата:
|
Цитата:
Не верите? Каждый день приходят люди с "быстрыми" исходниками и просят помочь разобраться, почему они не работают, когда меняют уровень вложенности. Или когда они пишут на куждую кнопку свой код и при нахождении ошибки, они опять ходят по всем своим 100 кнопкам, и правят там код, а потом еще раз. И все потому, что быстрее было написать код на клипе. Цитата:
То есть, я работу уже сделал, но деньги не могу полчить, так вроде моя часть не работает. А причина была в том, что разработчики использовал _root (им так было проще и быстрее писать). Мы с этим разобрались и стали использовать _lockroot. Но тут вылезает другая проблема. Оболочка использовала конвейер, который позволял выполнять различные действия одного за другим, согласно задайной последовательности. Эта последовательность легко править и она довольно гибкая, что помогает существенно сократить время на кодирование (соответсвенно и оплата была заложена исходя из этого). Конвейер вызывал методы объектов через apply (так как конвейр описывается до запуска, многие объекты еще не созданы и дать ссылку на их методы невозможно. Кстати в классе Tween, свойства для твина задаются стрингом по этой причине, но в отличие от свойств, в методы надо передавать произовльное количество аргументов), но при _lockroot и попытки выгрузить содержимое клипа, флеш воспринимал unloadMovie, как глобальную функцию, а не метод класса MovieClip и в результате выгружал абсолютно все. В результате, было потрачено гораздо больше времени, чем планировалось. |
iNils согласен - проследить все варианты не представляется возможным. Как выход брать время и деньги с запасом. Один фиг цена на флэш сейчас плавает от 10 до 10000 баксов и помоему никто незнает что сколько должно стоить =)
|
Это был декабрь и новогодний проект, тут запаса по времени нет :D
А сколько должна стоить стрижка? Почему в одной парикмахерской цена одна, в другой другая, а с выездом мастера на дом третья? А можно вообще жену, соседку научить стричь или вообще самому наголо. |
Я всё ёщё пользуюсь _root и onClipEvent, с классами начал разбираться только сегодня, хочу переучиться, подскажите учебник, желательно в цивровом виде и с сылочкой:rolleyes: .
сбасиб. |
Цитата:
Цитата:
Цитата:
Цитата:
И медвежья услуга тут как раз в том, что без разбора сразу дается императив: про _root забыть. Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Это был не вопрос :)
|
_root может ссылаться совершенно не туда, куда планировал. Строить на нем приложение очень шатко.
|
Добалю немного и от себя =)
_root практично использовать иногда, когда - нужно узнать координаты мыши - нужно получить значения FleshVars - нужно запихать клип на самый верхний слой, а количество слоев не известно и вариативно. Чего НЕ нужно делать с _root: - хранить там переменные - ссылаться на него для получения пути к клипу - переопределять его свойства (_x, _y, _rotation и т.д.) Что же до быстроты работы, вот, пример прям с конвеера %) Пишу большой, даж по моим меркам очень большой проект... чуть ли не афтерэффект на флеше =) Со мной работает девочка-дизайнер, не в обиду женскому полу, но девочка познаниями не блещет =) Но, сам я еще и анимашки делать не буду, вот, ей и отдал... Буквально сегодня нужно было их как-то прикрутить к моему проекту. Ну, я за работу - а там чего-то не ладится... Открываю исходники, и OMG! что я там вижу! =) что-то типа Код:
setProperty("/ball" add random(5), "_x"){....}Вобщем, разбираться чего там да как времени нет абсолютно - исправил как сумел (мало того, что все компайлилось под 4-й плеер, так еще и с ошибками)... _root не _root, onClipEvent... тут уже хоть как-то все в кучу собрать... все равно вовнуть никто лезть не будет =) ЗЫ. Зато что поразило, офигенная (модераторы, простите) обратная совместимость! Код под 4-ку и отредактировался, и скомпилировался, и работает в итоге и в CS3! %) |
| Часовой пояс GMT +4, время: 19:45. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.