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

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

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

Регистрация: Sep 2010
Сообщений: 42
По умолчанию Не убирается фильтр из массива

И снова привет.
Я создаю объект (обычный квадратик). Добавляю этому объекту медоты поставить BlurFilter и убрать BlurFilter

Поставить
Код AS3:
public function setBlurFilter():void{
var blurFilter:BlurFilter = new BlurFilter(5, 5, 5);
this.filters = this.filters.concat(blurFilter);
}
Убрать
Код AS3:
public function removeBlurFilter():void{
for(var i:uint=0; i < this.filters.length; i++){
if(this.filters[i] is BlurFilter){ this.filters.splice(i, 1);}
}
Не убирает ни в какую. Я пробовал руками удалять элемент из массива
Код AS3:
this.filters.splice(0, 1)
Тоже не убирает.

Помогло только
Код AS3:
this.filters = [];
но оно убивает вообще весь массив, а мне надо удалять только BlurFilter.

Что делать?

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

Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
Убивайте массив и добавляйте только то, что нужно оставить. Точнее, заменяйте новым массивом

Код AS3:
this.filters = [filter1,filter2,filter4]

Старый 28.09.2010, 18:57
andrew911 вне форума Посмотреть профиль Отправить личное сообщение для andrew911 Найти все сообщения от andrew911
  № 3  
Ответить с цитированием
andrew911

Регистрация: Mar 2007
Сообщений: 545
В документации написано что нельзя напрямую менять массив, надо создавать временный массив с фильтрами, изменять его и присваивать.

Код AS3:
		public function removeBlurFilter():void
		{
			var tarr:Array = this.filters;
 
			for (var i:int = tarr.length-1; i >= 0; i--)
			{
				if (tarr[i] is BlurFilter)
				{
					tarr.splice(i, 1);
				}
			}
 
			this.filters = tarr;
		}

Старый 28.09.2010, 19:11
randomnoob вне форума Посмотреть профиль Отправить личное сообщение для randomnoob Найти все сообщения от randomnoob
  № 4  
Ответить с цитированием
randomnoob

Регистрация: Sep 2010
Сообщений: 42
Ох, надо же.
Спасибо большое.

Старый 04.01.2011, 17:27
flax4Noob вне форума Посмотреть профиль Отправить личное сообщение для flax4Noob Найти все сообщения от flax4Noob
  № 5  
Ответить с цитированием
flax4Noob

Регистрация: Jan 2011
Сообщений: 70
Теме год с копейками. Ничего в этой области не поменялось? Я вот накладываю два фильтра одного типа и метод "is" не подходит.

Все хранят в локальных данных информацию о фильтрах и каждый раз при редактировании фильтров их перепривязывают снова? Хочется сделать красиво, не могу придумать как((( Ну и знаний не хватает пока что. Фильтерс менеджер что-то не возбуждает. (http://blog.open-design.be/2009/05/0...fects-manager/)

Старый 04.01.2011, 18:04
spooner вне форума Посмотреть профиль Отправить личное сообщение для spooner Найти все сообщения от spooner
  № 6  
Ответить с цитированием
spooner
 
Аватар для spooner

Регистрация: Mar 2009
Сообщений: 207
Цитата:
Теме год с копейками
Какой год? Три месяца прошло.
Ниче не поменялось.
Второй пост посмотрите, чем не устраивает вас?

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

Регистрация: Sep 2002
Сообщений: 30,787
filters — сеттер, копирующий фильтры.

Старый 05.01.2011, 16:08
flax4Noob вне форума Посмотреть профиль Отправить личное сообщение для flax4Noob Найти все сообщения от flax4Noob
  № 8  
Ответить с цитированием
flax4Noob

Регистрация: Jan 2011
Сообщений: 70
ну скажем так, я добавляю спрайту 2 фильтра. Один висит постоянно, второй вешается при наведении мышкой. Чтобы не тупить где какие фильтры, я сделал массив у своего спрайта из 2х элементов, и пихаю туда сначала два "пустых фильтра", а потом когда надо какой-то из фильтров "включить", тискаю его туда. Просто очень не хочется каждый раз пересоздавать фильтры. Получаются конструкции вида

Код AS3:
if(mouseOver){
var cmf:GlowFilter = new GlowFilter(0x00ffff,1)
this._filters[1] = cmf;
}else{
this._filters[1]=this._emptyFilter;
}
cell.filters=this._filters;

Старый 05.01.2011, 22:39
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 9  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Создайте фильтр один раз и применяйте при необходимости.

Код AS3:
var filters:	Array = [new GlowFilter(0x00ffff,1)];
var noFilters:	Array = [];
...
cell.filters = mouseOver ? filters : noFilters;
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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