Форум 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=48185)

Alfer 19.08.2003 16:05

Прерывистая линия
 
И снова здраствуйте,

занялся рисованием графиков во Flash MX и никак не могу понять как мне нарисовать прерывистую линию. Конечно можно отрезками рисовать линию. Но как-то муторно. :-(((
А есть ли ещё какие-либо варианты?

С уважением старина Альф

Пушистик 19.08.2003 16:24

:)
 
Вложений: 1
ну если не программно то там есть тип линии!щелкаешь по ней и выбираешь!

Alfer 19.08.2003 17:26

Спасибо конечно Пушистик, но это не спасёт отца русской демократии. Надо рисовать программно :-(((

А lineStyle такого совйсива не имеет. :-(((

llllllllll 19.08.2003 17:47

Знаешь в чем твоя проблема? :)

- Ты не можешь нарисовать круг или квадрат программно :) - ведь таких методов нет во флеше :)

Alfer 19.08.2003 18:11

Насчёт круга верно, а квадрат нарисовать можно, даже треугольник

_root.createEmptyMovieClip( "triangle", 1 );
with ( _root.triangle )
{
lineStyle( 5, 0xff00ff, 100 );
moveTo( 200, 200 );
lineTo( 300,300 );
lineTo( 100, 300 );
lineTo( 200, 200 );
}


Круг можно тоже нарисовать, если извернуться.

Со штрих линией можно тоже извернуться, но может есть что-то из недокументированных возможностей, или я не умею читать. :-(((

llllllllll 19.08.2003 18:21

Да на счет круга ты прав, некоторые изворачивались :)

createEmptyMovieClip("circle", 1);
circle.lineStyle(255,0)
circle.moveTo(200,200)
circle.lineTo(200.5,200)

Alfer 19.08.2003 19:33

Ну мне тоже пришлось немного извернуться.

Теперь она у меня идёт штрихом.
lange=10; // длина штриха
space=5; // расстояние между штрихами

x1<x2 всегда.



MCGraphClass.prototype.lineGeschtrichte = function (x1, y1, x2, y2){
var nextX, nextY;
var lange=10;
var space=5;
var curX=x1;
var curY=-y1;
var alfa=-Math.atan((y2-y1)/(x2-x1));

nextX=x2;
nextY=y2;
var deltaX=Math.cos(alfa)*lange;
var deltaY=Math.sin(alfa)*lange;
var deltaXspace=Math.cos(alfa)*space;
var deltaYspace=Math.sin(alfa)*space;

while(curX+deltaX<x2){
nextX=curX + deltaX;
nextY=curY + deltaY;
this.moveTo (curX, -curY);
this.lineTo (nextX, -nextY);
curX=nextX+deltaXspace;
curY=nextY+deltaYspace;
}
this.moveTo (curX, -curY);
this.lineTo (x2, y2);

}

Techmaker 19.08.2003 19:41

Вложений: 1
непомню где и как я его скачал :) вобщем вот тебе исходник :)

Alfer 20.08.2003 09:40

Спасибо, конечно, но уже поздно. :-)))
Логика там почти такая же.

В любом случае во Flash MX, можно сделать всё, ну или почти всё. :-)))

2 года назад я строил графики в 5. Вот это было полное извращение.


Спасибо всем кто откликнулся.
С уважением старина Альф

nuran 20.09.2003 12:38

О господи. Некоторые даже не могут программно правильный круг нарисовать. Что происходит? Применяем функцию рисовани кривой через три точки. Генерируем круг точек и рисуем кривые. И всё. О боже...
Только функция специальная нужна, которая рисует кривую именно через точку, а не как в flash curveTo. У меня даже исходник есть. Называется SUN. С программными кругами и градиентами и ещё всякой дрянью. Как всегда можно взять у меня на сайте.


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

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