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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.03.2006, 10:08
petrochenko1981 вне форума Посмотреть профиль Отправить личное сообщение для petrochenko1981 Найти все сообщения от petrochenko1981
  № 1  
Ответить с цитированием
petrochenko1981
[+1.10 14.03.2006]
[+ 1.11 18.04.2006]

Регистрация: Oct 2005
Сообщений: 106
По умолчанию Почему в setinterval не работает prototype

Подскажите пожалуйста, почмему protorype не работает в setinterval. С чем это связано. Если я заменяю this._alpha = param1; на mc_1._alpha = param1; То всё работает. А таких мувиков, как mc_1 в которых находится картинка у меня много. В коде происходит изменение alpha мувика по синусойде. Как быть что делать помогите пожалуйста.

_global.param=100;
_global.checks=0;

MovieClip.prototype.SinAlpha = function (){

if (checks<>0) {param++;}

if (checks<>1) {param--;}

if (param>=100)
{
param=100;
checks=0;
}

if (param<=0)
{
checks=1;
param=0
}


n=(param/100)*(Math.PI/2);
param1=Math.sin(n)*100;
this._alpha = param1;

updateAfterEvent();

}
setInterval(_root.mc_1.SinAlpha, 30);

Старый 25.03.2006, 15:35
Madasan вне форума Посмотреть профиль Отправить личное сообщение для Madasan Найти все сообщения от Madasan
  № 2  
Ответить с цитированием
Madasan
 
Аватар для Madasan

Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
Если кидаешь ф-ю в setInterval, то ссылка на объект this внутри этой ф-ции будет undefined, можно передавать ссылку на объект в параметрах ф-ции. Но если надо обойти все мувики тогда можно использовать дополнительную ф-ю:
Код:
MovieClip.prototype.SinAlpha = function() {
	//.................................
	this._alpha = param1;
};
function changeAlpha() {
	_root["mc_"+n].SinAlpha();
	n++;
	if (n>10) {
		clearInterval(intID);
	}
}
n = 0;
intID = setInterval(changeAlpha, 30);
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_.

Старый 25.03.2006, 16:51
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 3  
Ответить с цитированием
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
причину Madasan назвал правильно.
а исправить ошибку очень просто, нужноизменить последнюю строчку так:

setInterval(_root.mc_1, "SinAlpha", 30);

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

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

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


 


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


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