PDA

Просмотр полной версии : parallax в резиновой влешке


Dr_Bra
07.05.2009, 17:43
Всем привет!)
Нашел интересный эффект parallax, решил с ним поработать. Все было бы хорошо, вот только, когда флешка "резиновая", эффект parallax работает не правильно (при наведении курсора в самые крайние точки, фон сдвигается слишком сильно к центру, а должен останавливаться на границе активного окна нашей флешки). Такая проблема возникает, только когда открываешь во весь экран, если не "разворачивать", работает идеально.
Подскажите, как можно добиться идеального результата этого эффекта при любом размере окна?

залил исходник http://***************/7YO30E

Добавлено через 1 минуту
архив с исходником перезалил, http://***********/11997762

Dr_Bra
12.05.2009, 11:04
наверное никому не охота скачивать исходники ))))))
ситуация такая:
есть флешка размером 1024х768, на временной шкале в первом кадре прописан код

stop();
var my_this:String = this
import flash.display.*;
import flash.geom.*;
var fon:String = "fon_fill";
a = {};
a.onResize = function ()
{
recalc();
};
recalc = function ()
{
out_images_cont._x = Stage.width/2;
out_images_cont._y = Stage.height/2;
back_mc._y = Stage.height/2;
/*back_mc._x = Stage.width/2;*/
maska._xscale = Stage.width;
//maska._yscale = Stage.height;
maska._y = back_mc._y;
maska._x = back_mc._x;
maska1._xscale = Stage.width;
//maska1._yscale = Stage.height;
maska1._y = back_mc._y;
maska1._x = back_mc._x;
menud._x = 0;
menud._y = Stage.height/2;
podlojka._xscale = Stage.width;
podlojka._y = Stage.height/2;

// Создаём BitmapData из картинки в библиотеке
var myBitmapData:BitmapData = BitmapData.loadBitmap(fon);
with (fonFill_mc) {
matrix = new Matrix();
beginBitmapFill(myBitmapData, matrix, true, false);
moveTo(0, 0);
lineTo(0, Stage.height);
lineTo(Stage.width, Stage.height);
lineTo(Stage.width, 0);
lineTo(0, 0);
endFill();
}
}

Stage.scaleMode = "noscale";
Stage.align = "TL";
Stage.addListener(a);
_root.recalc();


fonFill_mc.setMask(maska);
back_mc.setMask(maska1);



/*fscommand("allowscale", "false");*/
var mainVar = 0;



Добавлено через 1 минуту
так же в этой флешке есть мувиклип (фон), прям на нем прописан этот код

onClipEvent (enterFrame) {
if (_root.mainVar == 0) {
homeX = (-_root._xmouse)+Stage.width;
} else {
homeX = (-_root.mainVar)+Stage.width;
}
thisX = _x;
diffX = homeX-thisX;
if (_root.mainVar == 0) {
moveX = diffX/90;
} else {
moveX = diffX;
}
_x = thisX+moveX;
}