![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2003
Адрес: Москва
Сообщений: 188
|
Имеется в виду проще, чем стряпать какую-то разорваную окружность да еще ее и вращать. Хотя может я и не права -Вам виднее - жираф большой .....
|
|
|||||
|
Banned
Регистрация: Oct 2003
Сообщений: 206
|
Цитата:
![]() |
|
|||||
|
Banned
Регистрация: Oct 2003
Сообщений: 206
|
Цитата:
![]() Нужно только прямые ссылки. Хоть это и увеличивает размер, зато быстрее. Это 100%. Можешь не сомневаться. |
|
|||||
|
Banned
Регистрация: Oct 2003
Сообщений: 206
|
Цитата:
|
|
|||||
|
"человек"
Регистрация: Nov 2002
Адрес: +-
Сообщений: 1,807
|
Цитата:
, но это только в случае с нулём ![]() Цитата:
, но лень меня переборола ![]()
__________________
flash it |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
> А всего лишь надо - нарисовать 2 окружности разного
> диаметра. И имитировать их вращение. Вращать окружность? а смысл? > Мне показалось, что проще всего вращать по этим > окружностям какой-нибудь мелкий обьект - дабы он > перекрывал сектор окружности - и этим имитировал их > визуальное вращение (в разные стороны). > Имеется в виду проще, чем стряпать какую-то разорваную > окружность да еще ее и вращать. Если речь идет о вращении сектора, то второе как раз проще, например так: // функция рисования окружности nuran'а
MovieClip.prototype.circle = function(x, y, r) {
var mas = new Array();
var step = 16;
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)*r+x;
mas[i].y = Math.sin(angle*rad*i)*r+y;
}
this.moveTo(mas[0].x, mas[0].y);
for (var i = 0; i<step-2; i += 2) { // step-2 чтобы из окружности получился сектор
var cx = 2*mas[i+1].x-0.5*(mas[i].x+mas[i+2].x);
var cy = 2*mas[i+1].y-0.5*(mas[i].y+mas[i+2].y);
this.curveTo(cx, cy, mas[i+2].x, mas[i+2].y);
}
};
// Центр окружностей
var CircleX = 100;
var CircleY = 100;
// Радиус первой и второй
var CircleR1 = 50;
var CircleR2 = 30;
// рисуем первую
this.createEmptyMovieClip("circle1",1)
with(circle1){
// стиль линии (толщина 1, цвет чёрный, прозрачность 0%)
lineStyle(1,0x000000,100)
// запускаем функцию рисования окружности
circle(0,0,CircleR1)
// распологаем мув в указанные X,Y
_x=CircleX
_y=CircleY
}
// делаем вращение
this.circle1.onEnterFrame = function() {
this._rotation += 2;
}
// Рисуем вторую
this.createEmptyMovieClip("circle2",2)
with(circle2){
// стиль линии (толщина 2, цвет красный, прозрачность 0%)
lineStyle(2,0xFF0000,100)
// запускаем функцию рисования окружности
circle(0,0,CircleR2)
// распологаем мув в указанные X,Y
_x=CircleX
_y=CircleY
}
// делаем вращение
this.circle2.onEnterFrame = function() {
this._rotation -= 4;
}
|
|
|||||
|
Регистрация: Aug 2003
Адрес: Москва
Сообщений: 188
|
ЩАс Бум Пробовать
|
|
|||||
|
Регистрация: Aug 2003
Адрес: Москва
Сообщений: 188
|
Все работает замечательно. Но хотелось бы задать еще один дурацкий вопрос: Как регулировать величину сектора разрыва
на окружности? . И все-таки еще: вращение MovieClip по заданному радиусу или эллипсоиду. И вообще какого эти орлы из Macromedia не могли сделать транслятор кода на базовые функции рисования. Ведь один черт все эти фунции реализовали в процессе написания кода fLASH. Что не могли написать конвертор в AS. Сильно бы облегчили жизнь пользователям (особенно начинающим). Ведь все-таки графический редактор у них уж очень убогий. Шаг сетки не задаш какой нужен. И море всего остального. Содрали бы реализацию графических функции у ACAD или PCAD. |
|
|||||
|
Регистрация: Aug 2003
Адрес: иркутск
Сообщений: 284
|
надо взять циркуль во флеш и нариовать круг !
тебе это зачем ?
__________________
я не псих, матрицы нет! |
|
|||||
|
Banned
Регистрация: Oct 2003
Сообщений: 206
|
MovieClip.prototype.circle = function(x, y, r) {
var mas = new Array(); var step = 16; 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)*r+x; mas[i].y = Math.sin(angle*rad*i)*r+y; } this.moveTo(mas[0].x, mas[0].y); for (var i = 0; i<step; i += 2) { // curveThreeTo var cx = 2*mas[i+1].x-0.5*(mas[i].x+mas[i+2].x); var cy = 2*mas[i+1].y-0.5*(mas[i].y+mas[i+2].y); this.curveTo(cx, cy, mas[i+2].x, mas[i+2].y); } }; _root.onLoad = function() { fscommand("allowscale", false); cnx = Stage.width/2; cny = Stage.height/2; // precalculations rad = Math.PI/180; radius = 100; dot_radius = 20; preRadius = radius-dot_radius; preRad = 180*rad; // axises _root.createEmptyMovieClip("back", 1); back.lineStyle(0, 0xFF0000, 100); back.moveTo(cnx, cny-cny/1.1); back.lineTo(cnx, cny+cny/1.1); back.lineStyle(0, 0x00FF00, 100); back.moveTo(cnx-cnx/1.1, cny); back.lineTo(cnx+cnx/1.1, cny); // back circle _root.createEmptyMovieClip("bg", 2); bg.lineStyle(0, 0xFFFFFF, 100); bg.circle(0, 0, 100); bg._x = cnx; bg._y = cny; // dot _root.createEmptyMovieClip("dot", 3); dot.beginFill(0x0000FF, 100); dot.circle(0, 0, dot_radius); dot._x = cnx; dot._y = cny; dot.endFill(); // text _root.createTextField("text", 4, cnx+5, cny, 300, 20); format = new TextFormat(); format.color = 0xFFFFFF; format.font = "Verdana"; format.size = 14; text.text = "click and move your mouse"; text.setTextFormat(format); }; // ###################################################### // -- © 2003 Grigory A. Ryabov. // -- http://www.flash.plux.ru // -- Techmaker: Aleksey Shreider 8=) // ###################################################### _root.onMouseDown = function() { start = 1; }; _root.onMouseUp = function() { start = 0; }; _root.onEnterFrame = function() { var dx = cnx-_xmouse; var dy = cny-_ymouse; if (Math.sqrt(dx*dx+dy*dy)<=preRadius) { dot._x = _xmouse; dot._y = _ymouse; } else { angle = Math.atan2(dy, dx)-preRad; dot._x = Math.cos(angle)*preRadius+cnx; dot._y = Math.sin(angle)*preRadius+cny; } if (start) { var dx = cnx-_xmouse; var dy = cny-_ymouse; radius = Math.sqrt(dx*dx+dy*dy); preRadius = radius-dot_radius; bg._xscale = bg._yscale=radius; } }; |
![]() |
Часовой пояс GMT +4, время: 17:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|