![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 53
|
Приветствую.
Подскажите пож-ста, как программно задать расположение _x позиции для каждой ссылки, чтобы они располагались полукругом? Я делаю так Ссылки становятся полукругом - но каким то рваным - подскажите нормальную формулу пож-ста. |
|
|||||
var centerX:Number = 150; var centerY:Number = 150; var ang:Number = 270; var radius:Number = 100; var step:Number = 30; for(var i:Number = 0; i < 7; i++) { var mc:MovieClip = this.attachMovie("mc", mc + i, i); mc._x = centerX + radius * Math.cos(ang * Math.PI / 180); mc._y = centerY + radius * Math.sin(ang * Math.PI / 180); ang += step; } |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 53
|
спасибо. Только немного не то. Может вы сможете видоизменить Ваш код, у меня не получается.
Все ссылки, должны быть не по кругу, а по ПОЛУКРУГУ как на рисунке. Нижняя граница "ссылка 8", верхняя - "ссылка 1". Ссыллок может быть больше или меньше - но все они должны вместится в это пространство по высоте (от ссылки 1 до ссылки 8) Добавлено через 50 секунд и расстояние по _y между ссылками должно быть одинаковым. |
|
|||||
|
В моем примере:
centerX, centerY - координаты центра круга. ang - начальное положение первого клипа/ссылки в градусах radius - радиус круга step - шаг, т.е. расстояние между клипами/ссылками Вы задаете значение первой ссылки. И знаете сколько их всего - значит найдете положение последней и шаг. |
|
|||||
|
.
|
Определите начальный и конечный угол. Разделите его на количество ссылок минус один - это будет приращение.
Например, самая нижняя точка (ссылка 8 на Вашем рисунке) имеет угол (во флешовой системе координат!!) примерно 3/4*PI, а верхняя ссылка - 5/4*PI. Ссылок всего восемь. Имеем дельта фи = (5/4*PI - 3/4*PI) / (8-1); Вот немного модифицированный код var centerX:Number = 180; var centerY:Number = 150; var radius:Number = 150; var values:Array = new Array ( 'link 1', 'link 2', 'link 3', 'link 4', 'link 5', 'link 6' ); var startAngle:Number = 3 / 4 * Math.PI; var finishAngle:Number = 5 / 4 * Math.PI; var deltaPhi:Number = (this.finishAngle - this.startAngle) / (this.values.length - 1); var textField:TextField; var step:Number = 0; for(var i:Number = 0; i < values.length; i++) { textField = this.createTextField('tf_' + step, step, 0, 0, 40, 18); textField.border = true; textField._x = centerX + radius * Math.cos(startAngle); textField._y = centerY + radius * Math.sin(startAngle); textField.text = values[i]; startAngle += deltaPhi; step++; } |
![]() |
![]() |
Часовой пояс GMT +4, время: 06:14. |
|
|
« Предыдущая тема | Следующая тема » |
|
|