Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Линия с переменной толщиной (http://www.flasher.ru/forum/showthread.php?t=176266)

Samuraix 06.03.2012 01:39

Линия с переменной толщиной
 
Вложений: 1
Здравствуйте, форумчане.
Возник такой вопрос.
Когда рисую программно с помощью метода lineTo класса Graphics, линия получается, как на рисунке "а", мне же надо, чтобы линия к концу сужалась, как на рисунке "б". Много гуглил, но то ли я неправильно запрос составляю, то ли это невозможно. Хотелось бы узнать ваше драгоценное мнение и советы.

XoJlToH 06.03.2012 01:44

все возможные варианты встроенных стилей тут http://help.adobe.com/ru_RU/FlashPla...tml#lineStyle()
остальное только рисовать кривыми самому.

in4core 06.03.2012 01:49

невозможно. если только каким то образом трансформ матриц заюзать, и то врядли.
Но есть хак, дичайший правда

drawRect(0,0,длинна линии до уменьшения, ширина линии);
for(var i:int = 0 ; i < длинна линии во время уменьшения ; i++) drawRect( w, i , i , scaleFactor )

думаю смысл поняли, формула правда кривая помоему, но сами думаю сможете понять. Тоесть нужно рисовать каждый раз с уменшением в 1 px .

Есть еще вариант рисовать треугольник после , что быстрее и понятнее ))

Samuraix 06.03.2012 02:05

Понятно.. Спасибо большое!

ChuwY 06.03.2012 02:10

Думаю, можно поиграть с CapsStyle + JointStyle и толщиной линии.

wvxvw 06.03.2012 19:26

Можно попробовать имитировать кисточку: т.е. рисовать параллельно несколько линий, а ближе к концу некоторые из линий заканчивать раньше, т.о. получится впечатление, как будто линии "плавно" заканчиваются.
Ну или как в Фотошопе - выбрать форму, и создавать линии дублируя эту форму вдоль пути.

alatar 06.03.2012 20:34

Есть более продвинутые варианты.
Вечно я на них ссылки теряю. На том же принципе, что в последней ссылке даже выпустили интересный редактор.

MikroAcse 08.03.2012 00:13

В чем прикол?
Разве нельзя сделать вот так?:
Код AS3:

graphics.moveTo(10,50)
for(var a:uint=1; a<=10;a++){
        graphics.lineStyle(a,0xFF0000);
        graphics.lineTo(a*10,50)
}

У меня работает на ура. :)

alatar 08.03.2012 00:28

Никто и не говорил, что этот способ не работает. Он используется еще со времен AS2. Но на кривых он смотрится плохо.


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

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