Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Возникло недопонимание интервальных функций (http://www.flasher.ru/forum/showthread.php?t=112519)

Волгоградец 09.06.2008 16:32

Как неправда???! Просветите, пожалуйста.

etc 09.06.2008 16:37

Цитата:

Сообщение от Волгоградец (Сообщение 744687)
Как неправда???! Просветите, пожалуйста.

Узнайте, что такое «область видимости».

Волгоградец 09.06.2008 16:55

__etc, при всем моем уважении, но помощь у вас неважная.
Цитата:

Цепочка областей видимости — это список ActionScript-объектов. Flash Player ищет идентификатор, начиная с последнего элемента в цепочке областей видимости, и продолжает подниматься по цепочке, пока не найдет его.
В случае с setinterval () this в качестве первого параметра - это объект _root, при условии что код находится на главной временной диаграмме?

etc 09.06.2008 16:59

this — это ссылка на самого себя. При передачи области видимости метод будет выполнен в ней. Если область не указана, то метод будет выполнен в анонимной области видимости.

p.S. В помошники я и не записывался.

Волгоградец 09.06.2008 17:18

Предполагаю, что анонимная область видимости - это объект Object или _root, другими словами.

etc 09.06.2008 17:35

Нет, у этой области видимости вообще нет this, это не _root и не Object.

Волгоградец 09.06.2008 17:53

__etc, если не секрет, откуда вы это узнали - этого нет ни в хэлпе, ни в других букварях и даже Гугле!!! Я вот впервые услышал про анонимную область видимости и до сих пор не понимаю ее смысл.

wvxvw 09.06.2008 18:31

в этом можно легко убедиться =)
Код:

setTimeout.someVar = 'foo';
var i:Number = setTimeout(someFunc, 100);
function someFunc():Void {
        trace(this); //undefined
        trace(this.someVar); //undefined // this не указывает на setTimeout
        trace(arguments.callee.someVar); //bar // arguments.callee указывает на someFunc
        trace(arguments.caller.someVar); //undefined // arguments.caller не указывает на setTimeout
}
someFunc.someVar = 'bar';


Волгоградец 10.06.2008 10:19

Я в замешательстве... Почему вот так вообще не выполняется код:
Код:

var i:Number = setTimeout(this, someFunc, 100);
В данном случае this ссылается на объект, который активировал код. Согласно цепочке областей видимости компилятор ищет этот объект вне функции - получается, в setTimeout(). Там не находит и поднимается выше - а это уже _root. Почему же тогда ничего не выполняется?

etc 10.06.2008 10:32

Надо передавать название метода в объекте, а не ссылку на этот метод.


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

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