PDA

Просмотр полной версии : В чем отличия this от _root, parent


F())(
24.06.2005, 21:35
С _root и папрент ситуация ясна , для чего служит this?? В каких случаях исполльзовать? :confused:

Nirth
24.06.2005, 22:00
this это ссылка на объект в котором ты сечас находишься

//Делаем мувик - шарик
_root.createEmptyMovieClip("ball_mc",5);
_root.ball_mc.lineStyle(35,0xff6600,100);
_root.ball_mc.moveTo(0,0);
_root.ball_mc.lineTo(0.5,0);
//Переходим к делу
_root.ball_mc.onEnterFrame = function () {
this._x +=5 //this в данном случае ссылкаеться на _root.ball_mc
_root.ball_mc._y+=5 //без this как видно код длинее
}

Так же this имеет особое значение в прототипах и классах там this ссылаеться на экземпляр класса.
Так же можно прочесть в переведенной документации про this (http://www.novemberain.com/livedocs/Help/ActionScriptLangRef/00001860.html)

PITer
24.06.2005, 23:53
При разработке крупных проектов, подчас требуется разбивать проект на мелкие элементы, которые реализуются в виде подгружаемых клипов.
При этом регулярно требуется чтобы клип работал несколько по разному в зависимости от того в какой ситуации он загружен. Для реализации такого поведения можно использовать следующий код помещенный в первом кадре главной временной линейки:
if (this == _level0) {
//действия которые должен выполнять клип при
//загрузке в режиме отладки
} else if (this == _level1) {
//первый режим работы
...
} else if (this == _levelN) {
//N ный режим работы
} else {
//клип подгружен не в level
//а в существуюший мувик(this!=_root)
}

Следует также заметить, что _root всегда ссылается на главную временную линейку, вне зависимости от того в какой level она загружена, а адресация _levelN обращается к конкретному уровню и при неумышленном использовании ее может вызвать неожиданные ошибки при дальнейшем развитии проекта...

Кстати проверка правильности нахождения клипа после его загрузки может использоваться в целях простенькой защиты (например при создании игр) дабы вашу игру не загрузили в другой клип выставляющий вашему клипу ненужные (ВАМ) параметры.

Nirth
25.06.2005, 00:12
Следует также заметить, что _root всегда ссылается на главную временную линейку, вне зависимости от того в какой level она загружена, а адресация _levelN обращается к конкретному уровню и при неумышленном использовании ее может вызвать неожиданные ошибки при дальнейшем развитии проекта...

Не совсем правда, при включеном _lockroot , ссылка _root ссылаеться на свой рут в каждом мувике
читать про _lookroot по-русски (http://www.novemberain.com/livedocs/Help/ActionScriptLangRef/00001522.html)