Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Нарисовать окружность (http://www.flasher.ru/forum/showthread.php?t=50841)

Штрек 02.11.2003 15:42

Чего за хрень.
У меня поделено на 8 секторов и ВПЕРЁД.
Супер окружность получается. :D
Вот ещё вариант с точн. 3зн.
function circle_sh(name,rad,x_poz,y_poz){
this.createEmptyMovieClip("name", 1);
with (this.name) {
lineStyle(3, 0x00ffcc, 100);


moveTo(-rad, 0);
curveTo(-rad, -rad*0.383, -rad*0.707, -rad*0.707);
curveTo(-rad*0.437, -rad, 0, -rad);
curveTo(rad*0.437, -rad, rad*0.707, -rad*0.707);
curveTo(rad, -rad*0.383, rad, 0);
curveTo(rad, rad*0.383, rad*0.707, rad*0.707);
curveTo(rad*0.437, rad, 0, rad);
curveTo(-rad*0.437, rad, -rad*0.707, rad*0.707);
curveTo(-rad, rad*0.383, -rad, 0);
}
this.name._x=x_poz
this.name._y=y_poz
}
circle_sh(circle1,100,200,200)

старина смерть 02.11.2003 15:57

Что то вы товарищи извращаетесь. Есть отличный вариант от меня родимого:)
http://www.flash.plux.ru/board/viewtopic.php?t=109

Там не только окружность, но и эллипс, квадрат, диги и прочая дрянь.

старина смерть 02.11.2003 15:59

Цитата:

Оригинал написал(а) Штрек
Чего за хрень.
У меня поделено на 8 секторов и ВПЕРЁД....

Ну ты извратился :)

старина смерть 02.11.2003 16:00

Цитата:

Оригинал написал(а) Techmaker

а разве это окружность? :)

А это не окружность - это псевдоовал :)

Верас Ольга 02.11.2003 20:49

Всем спасибо
 
Всем большое спасибо. Попробую что-нибудь из перечисленного. Но все же что не так в том варианте, что я сбросила - FF.zip Что в нем поправить?

Верас Ольга 03.11.2003 10:12

ну воспользовалась любезным предложением "Старины смерти". И каково энтот самый код не рисует окружность?

MovieClip.prototype.circle = function(x, y, r) {
circleColor = (255);
_root.prototype.circleStyle(10, circleColor, 100);
_x = 100;
_y = 100;
_r = 50;
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);
}
};

Techmaker 03.11.2003 12:42

2Верас Ольга
 
Цитата:

Оригинал написал(а) Верас Ольга
MovieClip.prototype.circle = function(x, y, r) {
circleColor = (255);
_root.prototype.circleStyle(10, circleColor, 100);
_x = 100;
_y = 100;
_r = 50;
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);
}
};

во первых это была только функция рисования, а во вторых ты неправильно её использовала :)
вот пример использования:
Код:

// функция рисования окружности 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; 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);
}
};

// создадим мувик и нарисуем в нём окружность с помощью этой функии
this.createEmptyMovieClip("circle1",1)
//скажем созданному мувику
with(circle1){
// стиль линии (толщина 5, цвет чёрный, прозрачность 0%)
lineStyle(5,0x000000,100)
// начало заливки (цвет чёрный, прозрачность 50%)
beginFill(0x000000,50)
// запускаем функцию рисования окружности (положение по оси X - 0 (по центру мува),  положение по оси Y - 0 (по центру мува), радиус 50)
circle(0,0,50)
// конец заливки
endFill()
// распологаем мув по центру флэшки чтобы было видно эту окружность
_x=Stage.width/2
_y=Stage.height/2
}

вот так :) ;)

Верас Ольга 03.11.2003 19:54

Большое спасибо - это рисует. А задать сразу две окружности одним кодом сложно? Чтобы не ваять лишнее. Две окружности - одна вписана в другую - с общим центром ( без заливки).
Ну и уж последняя наглость - вращение какого -нибудь обьекта (скажем маленького кружка) по окружности?

Штрек 04.11.2003 00:30

Цитата:

Оригинал написал(а) Верас Ольга
А задать сразу две окружности одним кодом сложно? Чтобы не ваять лишнее. Две окружности - одна вписана в другую - с общим центром ( без заливки).

Ну два раза вызови функцию.
Шевели мозгами - полезно для общего развития.

Techmaker 04.11.2003 01:50

Цитата:

Оригинал написал(а) Верас Ольга
Большое спасибо - это рисует. А задать сразу две окружности одним кодом сложно? Чтобы не ваять лишнее. Две окружности - одна вписана в другую - с общим центром ( без заливки).
Ответ: не сложно, со временем научишся
--------------------------------------------------------------------------------
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);
}
};

this.createEmptyMovieClip("circle1",1)
with(circle1){
lineStyle(5,0x000000,100)
circle(0,0,50)
_x=Stage.width/2
_y=Stage.height/2
}

this.createEmptyMovieClip("circle2",2)
with(circle1){
lineStyle(5,0x000000,100)
circle(0,0,20)
_x=Stage.width/2
_y=Stage.height/2
}
--------------------------------------------------------------------------------

:)


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

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