![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Пытаюсь сделать плавное размытие мувика относительно положения мышки.
Делаю так…: 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);
}
}
Тем же способом делаю в виде кнопки, т.е. онРелеасе… и все такое, код работает! Что за маЗаФакаФлеш!) |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Качество вроде 3 максимум)
<удалено> Сорри, там я ошибся.
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 02.10.2008 в 01:59. |
|
|||||
|
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. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
А фильтр-то кстати обновляется. Извиняюсь что не смог составить эти разбросанные строчки в своем мозгу))).
darksranger, обратите внимание - там обработчик tweenHandler, вызываемый из твина, в нем и обновляется фильтр. '-_UPD_-' Вобщем, Вы просто забыли добавить this. Поэтому blurFader в обработчике ищется в руте, а не в main.menu_org, на который указывает this в твине. Но результат ужасен на мой взгляд. Скажите простыми словами, чего Вы хотели добиться? Вот так будет "работать":
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 02.10.2008 в 01:54. |
|
|||||
|
Понимаю Ваши претензии, осознаю свои косяки, всякое бывает))
Чего я хочу добиться, лучше всего, видимо, это понял darksranger, судя по его активности) А по сути дела хочу добиться, как уже и писал, размытие мувика относительно положения мышки. Если не понятно: При наведение на мувик он размывается (плавно), при отводе мышки с мувика он восстанавливается в прежнее состояние. При этом мувик не должен быть кнопкой. Поэтому и пришла идея описать параметры мувика: при которых будут происходить все эти действия. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Вы осознали, что при заходе мышки в область 30 (ну может, 12) раз в секунду запускаете новый твин, пытающийся изменить переменную. Правда сделать это он не успевает, так как новый твин тут же начинает все заново))) 30 раз в секунду значение blurFader возвращается к стартовому. О каком плавном изменении может идти речь? В сто раз проще было сделать безо всяких твинов/делегатов, особенно если это для сайта и вес хоть както важен) На onMouseMove проверять координаты мыши и запускать при необходимости фейды - простенькие onEnterFrame конструкции, удаляющие сами себя при достижении нужного блюра и устанавливающие, скажем, флаг - я уже в блюре! или я уже резкий!)))))
Удачи.
__________________
Reality.getBounds(this); |
|
|||||
|
ААА…кто изменил моё состояние!)
Цитата:
А чё за (+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
}
}
}
//Хде моя скрЫпка! Ща за Жху!
|
|
|||||
|
KiL33
ну вот, хотя бы какая то логика появилась ! собственно, перечисление недостатков, привело к более менее разумному коду ! советы ну для начала, я бы например, не стал бы, каждый раз, типизировать переменные достаточно одного раза далее... я бы не стал, плодить кучу не нужного кода ,как например var filter:BlurFilter = new BlurFilter(blurX, blurY, quality); var filterArray:Array = new Array(); filterArray.push(filter); rect.filters = filterArray; не понятно зачем вот это не проще ? не понятно если blu>100 зачем? его приводить к 100 если он и так 100 +1 кликабелен, нажмите и узнаете за что вы получили +, стоит наверно сказать, + это не +, скорее это -, вам за то, что вы не прочитали правила форума и нарушили какойто из пунктов, какой именно вам уточнят по клику на +
__________________
на каком языке вы пишите? а на каком нужно? Последний раз редактировалось darksranger; 02.10.2008 в 16:12. |
|
|||||
|
Спасибо, поправил.
Сейчас попытаемся всеми силами напрячься и модернизировать код!) А именно сделать “тайминг” если это так можно назвать) Т.е. при отвода мышки с мувика блёр срабатывает через определенное время. Пока что это всё в таком виде: 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
}
}
}
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Обнуление i засунуть в else перед onEnterFrame)
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:01. |
|
|
« Предыдущая тема | Следующая тема » |
|
|