Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.03.2010, 01:58
AzagThoth вне форума Посмотреть профиль Отправить личное сообщение для AzagThoth Найти все сообщения от AzagThoth
  № 1  
Ответить с цитированием
AzagThoth
 
Аватар для AzagThoth

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
The bomb! setInterval не работает this

Здравствуйте.
Столкнулся с интересной проблемой, если в функции вызываемой при помощи setInterval попробовать обратиться к this, то как это не странно this возвращает undefined.
Код AS1/AS2:
Object.prototype.test=function(){
	trace(this.test);
	if(t==undefined){
		t=setInterval(this.test,100);
	}
}
a={};
a.test();
Вот что в Output вижу:
[type Function]
undefined
undefined
undefined
undefined
undefined
Ещё вариант:
Код AS1/AS2:
Object.prototype.test=function(){
	trace(this);
	if(t==undefined){
		t=setInterval(this.test,100);
	}
}
a={};
a.test();
Вот что в Output вижу:
[object Object]
undefined
undefined
undefined
undefined
undefined
Почему так? Почему this возвращает undefined? Занимаюсь по книжке Гурского, так вот, если верить ему(глава про ОПП во Flash) то this никогда undefined не должна возвращать. Очень интересный и важный вопрос, пожалуйста помогите.
__________________
Играй. Это жизнь.
Всё повторяется. Играй.

Старый 06.03.2010, 02:09
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код AS1/AS2:
setInterval(this, 'test', 100);

Старый 06.03.2010, 02:17
AzagThoth вне форума Посмотреть профиль Отправить личное сообщение для AzagThoth Найти все сообщения от AzagThoth
  № 3  
Ответить с цитированием
AzagThoth
 
Аватар для AzagThoth

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
to udaaff
Невероятно, но факт описание в справке по AS1/AS2:
Код AS1/AS2:
setInterval()
Доступность
Flash Player 6.
 
Синтаксис
setInterval(functionName:Function, interval:Number [, param1:Object, param2, ..., paramN]) : Number
 
Параметры
functionName Имя функции или ссылка на безымянную (анонимную) функцию.
 
interval Промежуток времени, через который вызывается фунция functionName , в миллисекундах.
 
param1, param2, ..., paramN Необязательные параметры, передаваемые вызываемой функции или методу.
 
Возвращает
Число-идентификатор, которое может быть передано clearInterval() для отмены циклического вызова функции.
 
Описание
Функция; периодически вызывает указанную функцию или метод. Вы можете использовать это для обновления значения переменных в базе данных или обновления величины, показывающей какое-либо время. 
 
Если interval меньше, чем соответствующей частоте кадров ролика интервал (например, 10 кадров в секунду [fps] соответствуют интервалу в 100 миллисекунд), функция будет вызываться с максимально возможно близкой (при данной частоте кадров) к interval частотой. Вы должны использовать функцию updateAfterEvent(), если необходимо обновлять изображение на экране. Если же занчение interval больше, чем соответствующее данной частоте кадров ролика значение, вызов функции будет происходить при каждой смене кадров (точнее, когда воспроизводящая головка на Таймлайне входит в кадр); это минимизирует излишне частое обновление экрана.
Отлично видно, что второй параметр ИНТЕРВАЛ, первый имя функции, третий массив из передаваемых аргументов.
Внимание вопрос. Почему у Вас первый параметр объект содержащий функцию, а второй имя функции, почему третий не массив аргументов, а интервал вызова??? Или есть какой-то ещё тайный справочник по AS1/AS2? Тогда пожалуйста подскажите где достать его.

Добавлено через 3 минуты
Просто всё действительно помогло, и работает. Просто интерестно откуда Вы это взяли? Где нормальный хелп по командам?
__________________
Играй. Это жизнь.
Всё повторяется. Играй.

Старый 06.03.2010, 02:23
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 4  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код:
ActionScript 2.0 Language Reference 
        
ActionScript language elements > Global Functions > setInterval function  
  
setInterval function
setInterval(functionReference:Function, interval:Number, [param1:Object, param2, ..., paramN]) : Number
setInterval(objectReference:Object, methodName:String, interval:Number, [param1:Object, param2, ..., paramN]) : Number
Цитата:
Или есть какой-то ещё тайный справочник по AS1/AS2? Тогда пожалуйста подскажите где достать его.
Тайный справочник становится явным по нажатию F1 во Flash.

Старый 06.03.2010, 02:25
AzagThoth вне форума Посмотреть профиль Отправить личное сообщение для AzagThoth Найти все сообщения от AzagThoth
  № 5  
Ответить с цитированием
AzagThoth
 
Аватар для AzagThoth

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
Спасибо за ответ Вопрос закрыт.
__________________
Играй. Это жизнь.
Всё повторяется. Играй.

Старый 06.03.2010, 14:52
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
AzagThoth, найдите справку посвежее.

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:46.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
setinterval

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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