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

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

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

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
По умолчанию Подмигнуть :)

Друзья, столкнулся с такой проблемой. На экране размещаются иконки - экземпляры Sprite. Для них планируется несколько простых эффектов. Например, при определённых событиях модели, иконка должна уметь "подмигнуть" - изменить свой размер один или несколько раз, чтобы привлечь внимание пользователя. Загвоздка в том, что каждая иконка - это отдельный класс, а эффекты для них одни и те же. Писать один и тот же метод в каждый класс - явно не дело.

Сделал "статический" класс с нужным мне методом:

Код AS3:
public class VisualEffects extends Sprite
	{
		private static var _component:Sprite;
		private static var _times: uint;
 
		private static var _originalScale:uint = 1;
		private static var _blinkingScale:Number;
		private static var _nextScale:Number;
 
		public static function blink(component: Sprite, scaling: Number, times: uint): void
		{
			var blinkTimer:Timer = new Timer(100, times);
			_component = component;
			_times = times;
			_blinkingScale = _originalScale + scaling;
			_nextScale = _blinkingScale;
			blinkTimer.addEventListener(TimerEvent.TIMER, VisualEffects.changeSize);
			blinkTimer.start();
		}
 
		private static function changeSize(event:TimerEvent) : void
		{
			_component.scaleX = _nextScale;
			_component.scaleY = _nextScale;
			_component.scaleZ = _nextScale;
			if (_nextScale == _blinkingScale) _nextScale = _originalScale;
			else _nextScale = _blinkingScale;
		}
 
		public function VisualEffects() {}
	}
Запускается без ошибок, но при запуске на экране начинается фигня с появлением разноцветных полос В общем, не работает как надо. Что я делаю не так?

И ещё прикладной вопрос вдогонку. Если у нас таймер с фиксированным количеством повторений, нужно ли явно убирать слушатель его событий? И если да, то в каком месте кода?

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

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

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


 


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


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