![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2003
Сообщений: 3
|
Как при помощи AS нарисовать круг и по мере необходимости в дальнейшем менять его радиус?
|
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
|
|
|||||
|
[+1.3 05.04.09]
|
юзай код
Object.prototype.circleTo = circle;
function circle(radius, NumberOfSteps, Xcenter, Ycenter, thickness, rgb, alpha) {
Arr = [50, 10, 0, 0, 2, 0, 100];
for (var i = 0; i<7; i++) {
if (arguments[i] != undefined) {
Arr[i] = arguments[i];
}
}
var R = Arr[0];
var X0 = Arr[2];
var Y0 = Arr[3];
var step = 2*Math.PI/Arr[1];
var R1 = R/Math.cos(step/2);
this.lineStyle(Arr[4], Arr[5], Arr[6]);
this.moveTo(X0+R, Y0);
for (var phi = step; phi<=2*Math.PI; phi += step) {
var ControlX = X0+R1*Math.cos(phi-step/2);
var ControlY = Y0-R1*Math.sin(phi-step/2);
var AnchorX = X0+R*Math.cos(phi);
var AnchorY = Y0-R*Math.sin(phi);
this.curveTo(ControlX, ControlY, AnchorX, AnchorY);
}
}
_root.circleTo(100, 15, 200, 200, 4, 0x00BB00, 100);
__________________
Бойтесь китайцев, компы приносящих! |
|
|||||
|
[+1.3 05.04.09]
|
а еще так
r = 30;
_root.createEmptyMovieClip("okr", 1);
okr.beginFill(0x000000, 0);
okr.lineStyle(1, 0x000000, 100);
okr.moveTo(-1*_root.r, 0);
for (x=_root.r*-1; x<=_root.r; x++) {
y = Math.sqrt(Math.pow(_root.r, 2)-Math.pow(x, 2));
okr.lineTo(x, y);
}
for (x=_root.r; x>=-1*_root.r; x--) {
y = -1*Math.sqrt(Math.pow(_root.r, 2)-Math.pow(x, 2));
okr.lineTo(x, y);
}
__________________
Бойтесь китайцев, компы приносящих! |
|
|||||
|
[+1.3 05.04.09]
|
или так
_root.createEmptyMovieClip("cir", 1);
with (_root.cir) {
lineStyle(1, 0x000000, 100);
beginFill(0x000000, 50);
moveTo(200, 200);
curveTo(200, 180, 215, 165);
curveTo(230, 150, 250, 150);
curveTo(270, 150, 285, 165);
curveTo(300, 180, 300, 200);
curveTo(300, 220, 285, 235);
curveTo(270, 250, 250, 250);
curveTo(230, 250, 215, 235);
curveTo(200, 220, 200, 200);
endFill();
}
__________________
Бойтесь китайцев, компы приносящих! |
|
|||||
|
[+1.3 05.04.09]
|
а можно и так
var R = 100;
// радиус окружности
var X0 = 200;
// координата X центра окружности
var Y0 = 200;
// координата Y центра окружности
var N = 100;
// количество отрезков, из которых должна быть построена окружность
_root.createEmptyMovieClip("roun", 0);
// создаем холст
with (roun) {
// используем предложение with для упрощения набора кода
lineStyle(2, 0xFF0000, 100);
// окружность будет рисоваться красной непрозрачной линией толщиной в 2 px
moveTo(X0+R*Math.cos(0), Y0+R*Math.sin(0));
// опускаем перо в начальной точке рисования (a =0)
// последовательно соединяем все N точек, соответствующих изменению (от 0 до 2p
for (var alpha = 0; alpha<=2*Math.PI; alpha += 2*Math.PI/N) {
lineTo(X0+R*Math.cos(alpha), Y0-R*Math.sin(alpha));
}
}
__________________
Бойтесь китайцев, компы приносящих! |
|
|||||
|
[+1.3 05.04.09]
|
да и забыл самый сложны способ
__________________
Бойтесь китайцев, компы приносящих! |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 3
|
Осталься вопрос, если несложно:
Можно ли после того как круг нарисован плавно менять его радиус, т.е. эффект увеличения и уменьшения круга, а не резкий скачёк скажем с 10 до 120. я бы попробывал через scale, но может есть лучший вариант? |
|
|||||
|
[+1.3 05.04.09]
|
да какже забыл самый оптимальный способ
_root.createEmptyMovieClip("circl", -1);
circl.lineStyle(2, 0x000000, 100);
circl.moveTo(0, 0);
circl.lineTo(0, 100);
for (i=0; i<361; i++) {
_root.circl.duplicateMovieClip("cir"+i, i);
setProperty("cir"+i, _rotation, i);
}
_x = 150;
_y = 150;
ну что SanD ты догодался кокой твой мозг быстрый и догадливый из стольки способов в твою голову не пришол не один зы кушай морковку помогает
__________________
Бойтесь китайцев, компы приносящих! |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 3
|
2 Орех
Сенкс за варианты, теперь осталось дело за малым выбрать любой... |
![]() |
Часовой пояс GMT +4, время: 12:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|