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

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

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

Регистрация: Oct 2006
Сообщений: 6
По умолчанию Что может перебивать onEnterFrame?

Продолжаю мучать флеш, поэтому очередной ламерский вопрос

Написал кусок кода, вот такой:
Код:
image_url = '_somepic.JPG';
alpha_delay = 15
	
for(var i:Number = 1; i < 7; i++) { 
		this.createEmptyMovieClip("square_mc" + i, _root.getNextHighestDepth());
		_root["square_mc" + i]._x = 45 * i;
		_root["square_mc" + i].createEmptyMovieClip("image_upper" + i, _root["square_mc" + i].getNextHighestDepth());
		_root["square_mc" + i]['image_upper' + i].loadMovie('prev1_' + i + image_url);
//		_root["square_mc" + i]['image_upper' + i]._alpha = 0;

		_root["square_mc" + i].onRollOver = function() {
				var ClipPath:String = "" + this;
				buttonName = ClipPath.substr(ClipPath.indexOf(".") + 1, ClipPath.length - ClipPath.indexOf("."));
				imageName = 'image_upper' + ClipPath.substr(ClipPath.length - 1, 1);
				_root[buttonName][imageName].onEnterFrame = function () {
					if (_root[buttonName][imageName]._alpha > 0) {
						_root[buttonName][imageName]._alpha -= alpha_delay;
					}
				}
		};
		_root["square_mc" + i].onRollOut = function() {
				var ClipPath:String = "" + this;
				buttonName = ClipPath.substr(ClipPath.indexOf(".") + 1, ClipPath.length - ClipPath.indexOf("."));
				imageName = 'image_upper' + ClipPath.substr(ClipPath.length - 1, 1);
				_root[buttonName][imageName].onEnterFrame = function () {
					if (_root[buttonName][imageName]._alpha < 100) {
						_root[buttonName][imageName]._alpha += alpha_delay;
					}
				}
		};
};
Вкрадце делающий следующее - создает мувиклип с картинкой внутри кнопки, и при наведении на кнопку должен потихоньку показывать картинку, и при убирании мышки с нее делать ее невидимой, все работает, но! Работает только в первый раз, то есть в даном коде, например, создается 6 картинок, и этот эфект работает для любой из созданых картинок, но только при наведении на одну из них в первый раз. Если же после этого попробовать навести курсор на любую из других, то согласно трейсу изменение альфы в онЕнтерФрейм что-то блокирует, постоянно скидывая ее в ноль, но что может ее скидывать, так и не понял...

В общем буду благодарен за разбор полетов, ну и вообще

Старый 31.10.2006, 05:03
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Попробуй делать так:
Код:
for(i=0; i<7; i++){
var myBtn:MovieClip = _root.createEmptyMovieClip("square_mc" + i, _root.getNextHighestDepth());
with(myBtn){
_i = i;
}
myBtn.onRollOver = function(){};
myBtn.onRollOut = function(){};
}
Соответственно и адресовать внутри функции как-нть попроще... а то там черт ногу сломит. Например, чтобы в теле метода обратится к объекту его инициировавшего достаточно поставить this, конструкции типа _root[buttonName][imageName] очень тяжело читаются...

С другой стороны alpha_delay - не видна в теле функции (воспринимается как локальная переменная. Нужно _root.alpha_delay.

Желательно удалять onEnterFrame после того, как альфа дошла до нуля. Ну и наоборот, когда больше ста - тоже.
__________________
Hell is the possibility of sanity

Старый 31.10.2006, 07:57
vampr0 вне форума Посмотреть профиль Отправить личное сообщение для vampr0 Посетить домашнюю страницу vampr0 Найти все сообщения от vampr0
  № 3  
Ответить с цитированием
vampr0
 
Аватар для vampr0

Регистрация: Oct 2006
Сообщений: 6
Цитата:
Сообщение от wvxvw
Желательно удалять onEnterFrame после того, как альфа дошла до нуля. Ну и наоборот, когда больше ста - тоже.
Вот собсно была такая мысль, но в каком направлении копать в хелпе по этому поводу не понял, думал было делать дубликаты и убивать их, но чет решил что это еще более нелехкий путь...

Старый 31.10.2006, 12:57
BigDan вне форума Посмотреть профиль Отправить личное сообщение для BigDan Найти все сообщения от BigDan
  № 4  
Ответить с цитированием
BigDan
 
Аватар для BigDan

Регистрация: Apr 2006
Адрес: Kiev
Сообщений: 1,675
Отправить сообщение для BigDan с помощью ICQ
onEnterFrame мы присваиваем функцию, значит надо заканчивать функцию. Чтоб закончить функцию достатачно написать return;

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

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

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


 


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


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