Просмотр полной версии : Вращающиеся фото в пространстве
Всем привет!
Поставиои мне задачу за 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 но тут такая же делема.
Помогите кто-нибудь в решении, плииз.
Я думаю, что х, у высчитывается по окружности в 3мерном пространстве, а потом проецируются на плоскость.
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 непонятно. Сайт ресурсы просто сжирает.
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!
Спасибо выручил чувак!!!
Да уж..сайт настолько жрёт ресурсы что моя опера просто подыхает..
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.