|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Хорошая цельная заливка с moveTo не получится. К сожалению.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Jan 2008
Сообщений: 87
|
лучше всего круг или овал рисовать по точкам, тогда выходит идеальный круг и какой хочешь овал, вот пример круга:
var sector:Sprite = new Sprite(); var radius:int = 200; var angle:int = 360; sector.graphics.lineStyle(0, 0x00ff00, 1); sector.graphics.moveTo(0,0); sector.graphics.beginFill(0x00ff00,1); for (var k:uint = 0; k<angle; k++){ sector.graphics.lineTo(radius*Math.cos(k*Math.PI/180), radius*Math.sin(k*Math.PI/180)); } sector.graphics.lineTo(0,0); sector.graphics.endFill(); stage.addChild(sector); |
|
|||||
только вместо lineTo использовать curveTo
protected const RADIAN:Number = Math.PI / 180; public function drawSector(gr:Graphics, xRadius:Number, yRadius:Number, centerX:Number, centerY:Number, startAngle:Number = 0, endAngle:Number = 180, close:Boolean = true):void { var sector:Number; var segmentAngle:Number; var startX:Number; var startY:Number; var middleX:Number; var middleY:Number; var endX:Number; var endY:Number; var controlX:Number; var controlY:Number; startX = xRadius * Math.cos(startAngle * RADIAN) + centerX; startY = yRadius * Math.sin(startAngle * RADIAN) + centerY; sector = endAngle - startAngle; segmentAngle = sector / 4; if (close) { gr.moveTo(centerX, centerY); gr.lineTo(startX, startY); } else { gr.moveTo(startX, startY); } for (var i:Number = segmentAngle + startAngle; i <= endAngle; i += segmentAngle) { endX = xRadius * Math.cos(i * RADIAN) + centerX; endY = yRadius * Math.sin(i * RADIAN) + centerY; middleX = xRadius * Math.cos((i - segmentAngle * .5) * RADIAN) + centerX; middleY = yRadius * Math.sin((i - segmentAngle * .5) * RADIAN) + centerY; controlX = 2 * middleX - (startX + endX) * .5; controlY = 2 * middleY - (startY + endY) * .5; gr.curveTo(controlX, controlY, endX, endY); startX = endX; startY = endY; } if (close) gr.lineTo(centerX, centerY); } } |
|
|||||
Lorem ipsum
|
А мне странно, что самый первый код топика по утверждению автора рисует залитый СЕКТОР, а не СЕГМЕНТ 0о
__________________
Поймай яблоко 2! |
|
|||||
[+1 19.06.10]
[+1 27.07.10] Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
|
наверное имелось в виду второе
__________________
Trapatatupatupa |
|
|||||
Регистрация: Jan 2008
Сообщений: 87
|
на самом деле lineTo достаточно. А curveTo рисует не идеальную дугу, всего лишь с одной опорной точкой, а нужно хотя бы две...
|
|
|||||
Регистрация: Jun 2008
Сообщений: 204
|
ну мне курвТу надо для создания сложной интерактивной заливки с возможностью сглаженного изменения формы...уфф
|
|
|||||
Цитата:
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
А я воспользуюсь drawCircle.
__________________
Тут мужик танцует и поёт про флэш |
Часовой пояс GMT +4, время: 21:03. |
|
« Предыдущая тема | Следующая тема » |
|
|