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

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

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

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
По умолчанию Блёр Мувика относительно положения мышки

Пытаюсь сделать плавное размытие мувика относительно положения мышки.

Делаю так…:

Код:
import mx.transitions.Tween;
import mx.transitions.easing.*;
import flash.filters.BlurFilter;
import mx.utils.Delegate;
blurX = 15;
blurY = 15;
quality = 5;
filter = new BlurFilter(blurX, blurY, quality);
	tweenHandler = function() {
    filter.blurX = blurFader;
    filter.blurY = blurFader;
    main.filters = [filter];
}
	_root.main.menu_org.onEnterFrame=function(){ 
//!!	
if (_root.main._xmouse>-104 && _root.main._xmouse<312 && _root.main._ymouse>-20 && _root.main._ymouse<280) {
//!!
tween= new Tween (this, "blurFader",Strong.easeOut,0,15,30)
tween.onMotionChanged = Delegate.create(this,tweenHandler);
}else{
	tween= new Tween (this, "blurFader",Strong.easeIn,15,0,30)
tween.onMotionChanged = Delegate.create(this,tweenHandler);
	}
		}
…и ничего!
Тем же способом делаю в виде кнопки, т.е. онРелеасе… и все такое, код работает!

Что за маЗаФакаФлеш!)

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Качество вроде 3 максимум)
<удалено>
Сорри, там я ошибся.
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 02.10.2008 в 01:59.
Старый 01.10.2008, 23:27
darksranger вне форума Посмотреть профиль Отправить личное сообщение для darksranger Посетить домашнюю страницу darksranger Найти все сообщения от darksranger
  № 3  
Ответить с цитированием
darksranger
 
Аватар для darksranger

блогер
Регистрация: Jun 2007
Адрес: in sankt - peterburg
Сообщений: 787
Записей в блоге: 2
Отправить сообщение для darksranger с помощью ICQ
Код:
this, "blurFader",Strong.easeOut,0,15,30
readHelp
tween тот который вы экспортируете(простыми словами родной), НЕ ИМЕЕТ свойства "blurFader"

вобще реализация конечно ....
1 постоянно работающий onEnterFrame, очень плохой тон ( пожалейте процессор ему итак тежело )
2 фильтр должен обновлятся, правильно заметил Wolsh, тоесть должна быть конструкция, типа youMovie.filters = [new BlurFilter(blurX,blurY, 3)]
3 filter = new BlurFilter(blurX, blurY, quality); ??? кому вы задете фильтр ? воздуху ?
4 quality = 5; no comments
5 ну я молчу, про использование, класса tween, при сверху рабочем onEnterFrame ....
[off]
PS да после кодинка в AS 3 хочется плакать когда видешь это
[/off]
__________________
на каком языке вы пишите?
а на каком нужно?


Последний раз редактировалось darksranger; 01.10.2008 в 23:38.
Старый 02.10.2008, 01:22
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
А фильтр-то кстати обновляется. Извиняюсь что не смог составить эти разбросанные строчки в своем мозгу))).
darksranger, обратите внимание - там обработчик tweenHandler, вызываемый из твина, в нем и обновляется фильтр.
'-_UPD_-'
Вобщем, Вы просто забыли добавить this. Поэтому blurFader в обработчике ищется в руте, а не в main.menu_org, на который указывает this в твине. Но результат ужасен на мой взгляд. Скажите простыми словами, чего Вы хотели добиться?
Вот так будет "работать":
Код:
tweenHandler = function() {
    filter.blurX = this.blurFader;
    filter.blurY = this.blurFader;
    main.filters = [filter];
}
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 02.10.2008 в 01:54.
Старый 02.10.2008, 07:58
KiL33 вне форума Посмотреть профиль Отправить личное сообщение для KiL33 Найти все сообщения от KiL33
  № 5  
Ответить с цитированием
KiL33
 
Аватар для KiL33

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
Понимаю Ваши претензии, осознаю свои косяки, всякое бывает))
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Скажите простыми словами, чего Вы хотели добиться?
Чего я хочу добиться, лучше всего, видимо, это понял darksranger, судя по его активности)

А по сути дела хочу добиться, как уже и писал, размытие мувика относительно положения мышки.
Если не понятно:
При наведение на мувик он размывается (плавно), при отводе мышки с мувика он восстанавливается в прежнее состояние.
При этом мувик не должен быть кнопкой. Поэтому и пришла идея описать параметры мувика:
Код:
if (_root.main._xmouse>-104 && _root.main._xmouse<312 && _root.main._ymouse>-20 && _root.main._ymouse<280) {
при которых будут происходить все эти действия.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Вы осознали, что при заходе мышки в область 30 (ну может, 12) раз в секунду запускаете новый твин, пытающийся изменить переменную. Правда сделать это он не успевает, так как новый твин тут же начинает все заново))) 30 раз в секунду значение blurFader возвращается к стартовому. О каком плавном изменении может идти речь? В сто раз проще было сделать безо всяких твинов/делегатов, особенно если это для сайта и вес хоть както важен) На onMouseMove проверять координаты мыши и запускать при необходимости фейды - простенькие onEnterFrame конструкции, удаляющие сами себя при достижении нужного блюра и устанавливающие, скажем, флаг - я уже в блюре! или я уже резкий!)))))
Удачи.
__________________
Reality.getBounds(this);

Старый 02.10.2008, 14:24
KiL33 вне форума Посмотреть профиль Отправить личное сообщение для KiL33 Найти все сообщения от KiL33
  № 7  
Ответить с цитированием
KiL33
 
Аватар для KiL33

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
ААА…кто изменил моё состояние!)

Цитата:
Состояние: птицы улители на ... юг (+1)!
Чувствую себя, как на форуме русского языка и культуры речи!)

А чё за (+1), это типа плюс один в пользу модератора!))
В принципе всё равно!

Вот что получилось:
Код:
import flash.filters.BlurFilter;
		var blu=0
	_root.main.onMouseMove=function(){ 
	if (_root.main._xmouse>-104 && _root.main._xmouse<312 && _root.main._ymouse>-20 && _root.main._ymouse<280) {
blurOn()
		}else{
		blurOff()
			}
	}
		blurOn=function(){
		this.onEnterFrame=function(){
	blu+=10
	var blurX:Number = blu;
var blurY:Number = blu;
var quality:Number = 3;
var filter:BlurFilter = new BlurFilter(blurX, blurY, quality);
var filterArray:Array = new Array();
filterArray.push(filter);
rect.filters = filterArray;
var rect:MovieClip = main
rect.filters = new Array(filter);
	if(blu>100){blu=100
	delete this.onEnterFrame
	}
	}
	}
blurOff=function(){
	this.onEnterFrame=function(){
		blu-=10
var blurX:Number = blu;
var blurY:Number = blu;
var quality:Number = 3;
var filter:BlurFilter = new BlurFilter(blurX, blurY, quality);
var filterArray:Array = new Array();
filterArray.push(filter);
rect.filters = filterArray;
var rect:MovieClip = main
rect.filters = new Array(filter);
if(blu<0){blu=0
delete this.onEnterFrame
}
}
}
//Хде моя скрЫпка! Ща за Жху!
Пишите свои отзывы. Хороший совет он будет полезен для всех, нежели просто перечисление недостатков.

Старый 02.10.2008, 16:05
darksranger вне форума Посмотреть профиль Отправить личное сообщение для darksranger Посетить домашнюю страницу darksranger Найти все сообщения от darksranger
  № 8  
Ответить с цитированием
darksranger
 
Аватар для darksranger

блогер
Регистрация: Jun 2007
Адрес: in sankt - peterburg
Сообщений: 787
Записей в блоге: 2
Отправить сообщение для darksranger с помощью ICQ
KiL33

ну вот, хотя бы какая то логика появилась !
собственно, перечисление недостатков, привело к более менее разумному коду !

советы
ну для начала, я бы например, не стал бы, каждый раз, типизировать переменные
достаточно одного раза
далее...
я бы не стал, плодить кучу не нужного кода ,как например
Код:
var filter:BlurFilter = new BlurFilter(blurX, blurY, quality);
var filterArray:Array = new Array();
filterArray.push(filter);
rect.filters = filterArray;
это достаточно заменить одной строчкой
Код:
youMovie.filters = [new BlurFilter(blurX,blurY, 3)]
далее не стоит использовать _root, это как бы плохой тон !

не понятно зачем вот это
Код:
var blurX:Number = blu;
var filter:BlurFilter = new BlurFilter(blurX, blurY, quality);
не проще ?
Код:
var filter:BlurFilter = new BlurFilter(blu, blu, quality)
не понятно
Код:
if(blu>100){blu=100
	delete this.onEnterFrame
	}
если blu>100 зачем? его приводить к 100 если он и так 100


+1 кликабелен, нажмите и узнаете за что вы получили +,
стоит наверно сказать, + это не +, скорее это -, вам за то, что вы не прочитали правила форума и нарушили какойто из пунктов, какой именно вам уточнят по клику на +
__________________
на каком языке вы пишите?
а на каком нужно?


Последний раз редактировалось darksranger; 02.10.2008 в 16:12.
Старый 02.10.2008, 18:48
KiL33 вне форума Посмотреть профиль Отправить личное сообщение для KiL33 Найти все сообщения от KiL33
  № 9  
Ответить с цитированием
KiL33
 
Аватар для KiL33

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
Спасибо, поправил.

Сейчас попытаемся всеми силами напрячься и модернизировать код!)

А именно сделать “тайминг” если это так можно назвать)
Т.е. при отвода мышки с мувика блёр срабатывает через определенное время.

Пока что это всё в таком виде:
Код:
import flash.filters.BlurFilter;
var blu=0
//!!
var i=0
//!!
main.onMouseMove=function(){
if (main._xmouse>-104 && main._xmouse<312 && main._ymouse>-20 && main._ymouse<280) {
 blurOn()
}else{
//!!
this.onEnterFrame=function(){
		i++
if (i==40){
	blurOff()
delete this.onEnterFrame
	}}
//!!	}}

blurOn=function(){
	this.onEnterFrame=function(){
	blu-=1
	var blurX:Number = blu;
var blurY:Number = blu;
main.filters = [new BlurFilter(blurX,blurY, 3)]
if(blu<0){blu=0
delete this.onEnterFrame
}
}
}
blurOff=function(){
this.onEnterFrame=function(){
blu+=5
var blurX:Number = blu;
var blurY:Number = blu;
main.filters = [new BlurFilter(blurX,blurY, 3)]
if(blu>15){blu=15
delete this.onEnterFrame
}
}
}
Срабатывает только один раз, потом начинается полный пи…)

Старый 02.10.2008, 19:38
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 10  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Обнуление i засунуть в else перед onEnterFrame)
__________________
Reality.getBounds(this);

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

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

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


 


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


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