Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Работа над сайтом > 3D

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 25.03.2004, 14:54
ultraflasher вне форума Посмотреть профиль Найти все сообщения от ultraflasher
  № 1  
ultraflasher
Banned

Регистрация: Nov 2003
Сообщений: 425
По умолчанию что-то типа этого но с перломутровыми пуговицами ...

MovieClip.prototype.curveThreeTo = function(x1, y1, x2, y2, x3, y3) {
var cx = 2*x2-0.5*(x1+x3);
var cy = 2*y2-0.5*(y1+y3);
this.curveTo(cx, cy, x3, y3);
};
MovieClip.prototype.circleTo = function(width, height, xpos, ypos) {
var mas = new Array();
var step = 32;
var angle = 360/step;
var rad = Math.PI/180;
for (var i = 0; i<=step; i++) {
mas[i] = new Object();
mas[i].x = Math.cos(angle*rad*i)*width+xpos;
mas[i].y = Math.sin(angle*rad*i)*height+ypos;
}
this.moveTo(mas[0].x, mas[0].y);
for (var i = 0; i<step; i += 2) {
this.curveThreeTo(mas[i].x, mas[i].y, mas[i+1].x, mas[i+1].y, mas[i+2].x, mas[i+2].y);
}
};
vertex = function (x, y, z) {
this.x=x, this.y=y, this.z=z;
};
vertex.prototype.rotateXY = function(sinX, cosX, sinY, cosY) {
// rotation around of axes X and Y
var yp = this.y*cosY-this.z*sinY;
var zp = this.y*sinY+this.z*cosY;
var xp = this.x*cosX+zp*sinX;
var zp = -this.x*sinX+zp*cosX;
this.x=xp, this.y=yp, this.z=zp;
};
vertex.prototype.perspective = function(i) {
// calculation 3d to 2d
var perRatio = 1/(this.z/dist+1);
this.rx = cnx+this.x*perRatio;
this.ry = cny-this.y*perRatio;
if (this.z>-dist) {
eval("dot"+i)._visible = 1;
eval("dot"+i)._x = this.rx;
eval("dot"+i)._y = this.ry;
eval("dot"+i)._xscale = eval("dot"+i)._yscale=perRatio*50;
eval("dot"+i).swapDepths(perRatio*500);
} else {
eval("dot"+i)._visible = 0;
}
};
_root.onLoad = function() {
Stage.scaleMode = "noScale";
_root.createEmptyMovieClip("dot", 999999);
cnx=250, cny=250, dist=200;
rad=Math.PI/180, preRad=rad/25;
// build circle
var radius = 30;
matrix = {matrixType:"box", x:-radius*1.3, y:-radius*1.3, w:radius*2, h:radius*2, r:radius*Math.PI};
_root.dot.beginGradientFill("radial", [0xFFFFFF, 0xCCCCCC, 0x000000], [100, 100, 100], [0x44, 0xDD, 0xFF], matrix);
_root.dot.circleTo(radius, radius, 0, 0);
_root.dot.endFill();
v = new Array();
// build cube
for (var i, cnt = 0; i<=3; i++) {
for (var j = 0; j<=3; j++) {
for (var k = 0; k<=3; k++) {
v[cnt] = new vertex(75-i*50, 75-j*50, 75-k*50);
_root.dot.duplicateMovieClip("dot"+cnt, cnt);
cnt++;
}
}
}
_root.dot.removeMovieClip();
// ----------------
amount = v.length-1;
};
// ####################################################
// -- 3D DOT CUBE
// -- © 2002-2003 Grigory A. Ryabov.
// -- http://www.flash.plux.ru
// ####################################################
_root.onEnterFrame = function() {
var xa = (cnx-_ymouse)*preRad;
var ya = (cny-_xmouse)*preRad;
var sinY = Math.sin(ya);
var cosY = Math.cos(ya);
var sinX = Math.sin(xa);
var cosX = Math.cos(xa);
for (var i = 0; i<=amount; i++) {
v[i].rotateXY(sinY, cosY, sinX, cosX);
v[i].perspective(i);
}
};
stop();

Создать новую тему   Часовой пояс GMT +4, время: 11:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.


 


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


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