[AS3] Efekt rozmycia w czasie przemieszczania obiektu
: ndz wrz 12, 2010 10:03 pm
Będę się streszczać:
Teraz wygląda to tak: naciskam lpm, przesuwam cube w lewo albo prawo, cube płynnie zmienia pozycje razem z ruchem myszy, ale rozmycie zostaje dopóki nie puszcze lpm. Zależy mi na tym, żeby siła rozmycia działała proporcjonalnie do szybkości cube, niezależnie od trzymania lpm. Jak to zrobić bez użycia tweenow?
Kod: Zaznacz cały
addEventListener(Event.ENTER_FRAME, onEnterF);
stage.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);
stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp);
var lastX:Number;
var lastMouseX:Number;
var move:Boolean = false;
function MouseDown(event:MouseEvent):void {
lastX = cube.x;
lastMouseX = mouseX;
move = true;
}
function MouseUp(event:MouseEvent):void {
move = false;
}
function onEnterF(e:Event):void {
if (move)
{
celX = (0.3*(mouseX - lastMouseX) + lastX);
XBlur = Math.abs((mouseX - lastMouseX)/20); // sila rozmycia
}
cube.x += (celX - cube.x)/6;
XBlur += (0 - XBlur)/6; // rozmycie wraca do 0, ale dopiero po puszczeniu lpm
var blurEffect:BlurFilter = new BlurFilter(XBlur, 0, 1);
cube.filters = [blurEffect];
}