PDA

Просмотр полной версии : Вращающиеся фото в пространстве


hedfuc
22.02.2008, 09:51
Всем привет!

Поставиои мне задачу за 3 дня сделать вращающююся фото-галерею как http://dotedesign.com/

У меня без проблем получается их вращать по кругу,
но не пойму как уменьшить расстояния между фото которые уходят на задний план. Когда два объекта удаляются то не только их размеры уменьшаются но и расстояние между ними тоже. А у меня только размеры получается уменьшить.

Примерно так выглядит то чего пытаюсь добиться:
http://img442.**************/img442/6236/samplepz6.gif


Нашел исходники http://www.mjau-mjau.com/inter3d/i3dmb.html и http://www.mjau-mjau.com/html/perplex2.html но тут такая же делема.

Помогите кто-нибудь в решении, плииз.

CorC
22.02.2008, 10:12
Я думаю, что х, у высчитывается по окружности в 3мерном пространстве, а потом проецируются на плоскость.

iNils
22.02.2008, 10:22
var count:Number = 20;
var array:Array = new Array ();
var fov:Number = 400;
var height:Number = (Stage.height - 200) / 2;
var w:Number = 100;
var h:Number = 50;
function drawBox (mc:MovieClip) {
mc.beginFill (0xFF0000);
mc.moveTo (-w / 2, -h / 2);
mc.lineTo (w / 2, -h / 2);
mc.lineTo (w / 2, h / 2);
mc.lineTo (-w / 2, h / 2);
mc.lineTo (-w / 2, -h / 2);
}
function init () {
for (var i:Number = 0; i < count; i++) {
var mc:MovieClip = this.createEmptyMovieClip ("mc" + i, i);
mc._x = Stage.width / 2;
drawBox (mc);
array.push (mc);
}
}
var grad:Number = Math.PI / 180;
var b:Number = 360 / count;
this.onEnterFrame = function () {
for (var i:Number = 0; i < count; i++) {
var mc:MovieClip = array[i];
var angle:Number = grad * (b * i + this._ymouse);
var scale:Number = 20 + 40 * Math.sin (angle) + 40;
var k:Number = fov / (fov - (200 * Math.sin (angle)));
mc._y = 300 + height * Math.cos (angle) * k;
mc._alpha = scale;
mc._xscale = scale;
mc._yscale = scale;
}
};
init ();
А за что дали SOTD непонятно. Сайт ресурсы просто сжирает.

hedfuc
22.02.2008, 11:34
var count:Number = 20;
var array:Array = new Array ();
var fov:Number = 400;
var height:Number = (Stage.height - 200) / 2;
var w:Number = 100;
var h:Number = 50;
function drawBox (mc:MovieClip) {
mc.beginFill (0xFF0000);
mc.moveTo (-w / 2, -h / 2);
mc.lineTo (w / 2, -h / 2);
mc.lineTo (w / 2, h / 2);
mc.lineTo (-w / 2, h / 2);
mc.lineTo (-w / 2, -h / 2);
}
function init () {
for (var i:Number = 0; i < count; i++) {
var mc:MovieClip = this.createEmptyMovieClip ("mc" + i, i);
mc._x = Stage.width / 2;
drawBox (mc);
array.push (mc);
}
}
var grad:Number = Math.PI / 180;
var b:Number = 360 / count;
this.onEnterFrame = function () {
for (var i:Number = 0; i < count; i++) {
var mc:MovieClip = array[i];
var angle:Number = grad * (b * i + this._ymouse);
var scale:Number = 20 + 40 * Math.sin (angle) + 40;
var k:Number = fov / (fov - (200 * Math.sin (angle)));
mc._y = 300 + height * Math.cos (angle) * k;
mc._alpha = scale;
mc._xscale = scale;
mc._yscale = scale;
}
};
init ();
А за что дали SOTD непонятно. Сайт ресурсы просто сжирает.




OMFG!
Спасибо выручил чувак!!!

Да уж..сайт настолько жрёт ресурсы что моя опера просто подыхает..