![]() |
|
||||||||||
|
|||||
|
Создаёте новый movie с разрешением 550х550. В actions первого кадра пишете:
// НАСТРОЙКА speed=0; // скорость вращения gr=125; // начальный угол поворота (ось x) gry=125; // начальный угол поворота (ось y) grz=125; // начальный угол поворота (ось z) osi=0; // прорисовывать оси (0-нет, 1-да) xC = Stage.width/2; // координата точки начала отсчёта (x) yC = Stage.height/2; // координата точки начала отсчёта (y) // ПРОРИСОВКА function drawAll() { clear(); linestyle(2); // МОДЕЛЬ <НАЧАЛО> move3d(115,41,-25); curve3d(115,55,-25,115,83,-25); curve3d(83,83,-25,66,118,-25); curve3d(83,118,-25,100,118,-25); curve3d(100,135,-25,100,161,-25); curve3d(69,161,-25,49,161,-25); curve3d(18,249,-25,-48,242,-25); curve3d(-48,226,-25,-48,200,-25); curve3d(-9,203,-25,11,135,-25); curve3d(41,36,-25,115,41,-25); move3d(115,41,25); curve3d(115,55,25,115,83,25); curve3d(83,83,25,66,118,25); curve3d(83,118,25,100,118,25); curve3d(100,135,25,100,161,25); curve3d(69,161,25,49,161,25); curve3d(18,249,25,-48,242,25); curve3d(-48,226,25,-48,200,25); curve3d(-9,203,25,11,135,25); curve3d(41,36,25,115,41,25); move3d(115,41,-25); line3d(115,41,25); move3d(115,83,-25); line3d(115,83,25); move3d(66,118,-25); line3d(66,118,25); move3d(100,118,-25); line3d(100,118,25); move3d(100,161,-25); line3d(100,161,25); move3d(49,161,-25); line3d(49,161,25); move3d(-48,242,-25); line3d(-48,242,25); move3d(-48,200,-25); line3d(-48,200,25); // МОДЕЛЬ <КОНЕЦ> gr+=speed; gry+=speed; grz+=speed; if(osi==1) { noteF = new TextFormat(); noteF.color = 0x000000; noteF.bullet = false; noteF.underline = true; linestyle(0,0x999999,50); move3d(0, 0, 0); line3d(0, 200, 0); line3d(7, 180, 0); move3d(0, 200, 0); line3d(0, 180, 7); move3d(0, 0, 0); line3d(0, 0, 200); line3d(-7, 0, 180); move3d(0, 0, 200); line3d(7, 0, 180); move3d(0, 0, 0); line3d(200, 0, 0); line3d(180, 0, -7); move3d(200, 0, 0); line3d(180, 0, 7); _root.createTextField("z", 3, coord3dx(0,0,210), coord3dy(0,0,210), 100, 100); z.border = false; z.text = "ось z"; z.setTextFormat(noteF); _root.createTextField("x", 4, coord3dx(210,0,0), coord3dy(210,0,0), 100, 100); x.border = false; x.text = "ось x"; x.setTextFormat(noteF); _root.createTextField("y", 2, coord3dx(0,210,0), coord3dy(0,210,0), 100, 100); y.border = false; y.text = "ось y"; y.setTextFormat(noteF); } } setInterval(drawAll,1); // ФУНКЦИИ function move3d(x, y, z) { moveTo(xC-math.cos(Math.PI/180*gr)*x+math.sin(Math.PI/180*grz)*z, math.sin(Math.PI/180*gr)*x+yC+math.sin(Math.PI/180*gry)*y+math.cos(Math.PI/180*grz)*z); } function line3d(x, y, z) { lineTo(xC-math.cos(Math.PI/180*gr)*x+math.sin(Math.PI/180*grz)*z, math.sin(Math.PI/180*gr)*x+yC+math.sin(Math.PI/180*gry)*y+math.cos(Math.PI/180*grz)*z); } function coord3dx(x, y, z) { return xC-math.cos(Math.PI/180*gr)*x+math.sin(Math.PI/180*grz)*z; } function coord3dy(x, y, z) { return math.sin(Math.PI/180*gr)*x+yC+math.sin(Math.PI/180*gry)*y+math.cos(Math.PI/180*gr)*z; } function curve3d(x,y,z,ax,ay,az) { curveTo(xC-math.cos(Math.PI/180*gr)*x+math.sin(Math.PI/180*grz)*z, math.sin(Math.PI/180*gr)*x+yC+math.sin(Math.PI/180*gry)*y+math.cos(Math.PI/180*grz)*z,xC-math.cos(Math.PI/180*gr)*ax+math.sin(Math.PI/180*grz)*az, math.sin(Math.PI/180*gr)*ax+yC+math.sin(Math.PI/180*gry)*ay+math.cos(Math.PI/180*grz)*az); } // Copyrights ![]() function drawCopy() { _root.createTextField("copy",1,15,520,370,370); copy.multiline = true; copy.wordWrap = true; copy.border = false; copy.html = true; copyF = new TextFormat(); copyF.color = 0x000000; copyF.bullet = false; copyF.underline = false; copyF.font = "Arial"; copyF.bold = true; copy.htmlText = "дубль два (c) <a href=\"http://www.qbstudio.ru/\" target=\"\">qb.studio</a> 2002"; copy.setTextFormat(copyF); } setInterval(drawCopy,1); // created by qb.studio // со всеми вопросами обращайтесь на xo@id.ru Вот собственно и всё =). Описание функций: move3d(координата по x,координата по y,координата по z) - Аналог команды moveTo, только работает относительно 3d-осей. Использование: move3d(100,50,20); line3d(координата по x,координата по y,координата по z) - Аналог команды lineTo, только работает относительно 3d-осей. Использование: line3d(100,50,20); curve3d(координата контрольной точки по x,координата контрольной точки по y,координата контрольной точки по z,координата якоря по x,координата якоря по y,координата якоря по z) - Аналог команды curveTo, только работает относительно 3d-осей. Использование: curve3d(100,50,20,20,100,60); coord3dx(координата по x,координата по y,координата по z) и coord3dy(координата по x,координата по y,координата по z) - Преображает 3D-координаты в 2D. Использование: _root.createTextField("text", 1, coord3dx(0,210,0), coord3dy(0,210,0), 100, 100); |
![]() |
Часовой пояс GMT +4, время: 19:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|