Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Блёр Мувика относительно положения мышки (http://www.flasher.ru/forum/showthread.php?t=116465)

KiL33 01.10.2008 18:25

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

Делаю так…:

Код:

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);
        }
                }

…и ничего!
Тем же способом делаю в виде кнопки, т.е. онРелеасе… и все такое, код работает!

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

Wolsh 01.10.2008 21:38

Качество вроде 3 максимум)
<удалено>
Сорри, там я ошибся.

darksranger 01.10.2008 23:27

Код:

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]

Wolsh 02.10.2008 01:22

А фильтр-то кстати обновляется. Извиняюсь что не смог составить эти разбросанные строчки в своем мозгу))).
darksranger, обратите внимание - там обработчик tweenHandler, вызываемый из твина, в нем и обновляется фильтр.
'-_UPD_-'
Вобщем, Вы просто забыли добавить this. Поэтому blurFader в обработчике ищется в руте, а не в main.menu_org, на который указывает this в твине. Но результат ужасен на мой взгляд. Скажите простыми словами, чего Вы хотели добиться?
Вот так будет "работать":
Код:

tweenHandler = function() {
    filter.blurX = this.blurFader;
    filter.blurY = this.blurFader;
    main.filters = [filter];
}


KiL33 02.10.2008 07:58

Понимаю Ваши претензии, осознаю свои косяки, всякое бывает))
Цитата:

Сообщение от Wolsh (Сообщение 767647)
Скажите простыми словами, чего Вы хотели добиться?

Чего я хочу добиться, лучше всего, видимо, это понял darksranger, судя по его активности)

А по сути дела хочу добиться, как уже и писал, размытие мувика относительно положения мышки.
Если не понятно:
При наведение на мувик он размывается (плавно), при отводе мышки с мувика он восстанавливается в прежнее состояние.
При этом мувик не должен быть кнопкой. Поэтому и пришла идея описать параметры мувика:
Код:

if (_root.main._xmouse>-104 && _root.main._xmouse<312 && _root.main._ymouse>-20 && _root.main._ymouse<280) {
при которых будут происходить все эти действия.

Wolsh 02.10.2008 11:01

Вы осознали, что при заходе мышки в область 30 (ну может, 12) раз в секунду запускаете новый твин, пытающийся изменить переменную. Правда сделать это он не успевает, так как новый твин тут же начинает все заново))) 30 раз в секунду значение blurFader возвращается к стартовому. О каком плавном изменении может идти речь? В сто раз проще было сделать безо всяких твинов/делегатов, особенно если это для сайта и вес хоть както важен) На onMouseMove проверять координаты мыши и запускать при необходимости фейды - простенькие onEnterFrame конструкции, удаляющие сами себя при достижении нужного блюра и устанавливающие, скажем, флаг - я уже в блюре! или я уже резкий!)))))
Удачи.

KiL33 02.10.2008 14:24

ААА…кто изменил моё состояние!)

Цитата:

Состояние: птицы улители на ... юг (+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
}
}
}
//Хде моя скрЫпка! Ща за Жху!

Пишите свои отзывы. Хороший совет он будет полезен для всех, нежели просто перечисление недостатков.

darksranger 02.10.2008 16:05

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 кликабелен, нажмите и узнаете за что вы получили +,
стоит наверно сказать, + это не +, скорее это -, вам за то, что вы не прочитали правила форума и нарушили какойто из пунктов, какой именно вам уточнят по клику на +

KiL33 02.10.2008 18:48

Спасибо, поправил.

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

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

Пока что это всё в таком виде:
Код:

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
}
}
}

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

Wolsh 02.10.2008 19:38

Обнуление i засунуть в else перед onEnterFrame)


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

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