![]() |
|
||||||||||
|
|
|
|||||
|
Вроде бы элементарное дело, казалось бы.
Написал код, который должен рисовать круг из прямых. Уже просмотрел свой код под линзой, всё равно не могу понять свою ошибку. graphics.lineStyle(1, 0x000000); for(var i:int = 0; i < 360; i ++) { graphics.lineTo(Math.cos(i/180*Math.PI) * 100, Math.sin(i/180 * Math.PI) * 100); graphics.moveTo(Math.cos((i+1)/180*Math.PI) * 100, Math.sin((i+1)/180*Math.PI) * 100); } var spr:Sprite = new Sprite(); spr.graphics.lineStyle(2, 0x000000); spr.graphics.drawCircle(0, 0, 20); addChild(spr); super.addEventListener(Event.ENTER_FRAME, loop); var pos:int = 0; function loop(e:Event):void { spr.x = 100 + Math.cos(pos / 180 * Math.PI) * 100; spr.y = 100 + Math.sin(pos / 180 * Math.PI) * 100; pos ++; }
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 26.05.2014 в 01:00. |
|
|||||
|
Ну вы глупость какую-то написали:
1 проход цикла: рисуем линию. И двигаем указатель в следующую точку. Остальные проходы: рисуем линию в точку в которой находимся(ничего не рисуем). Двигаем указатель в следующую точку. private function drawCircle(graphics:Graphics, radius:Number, centerX:Number = 0, centerY:Number = 0):void { graphics.lineStyle(1, 0xFF0000); graphics.moveTo(radius + centerX, centerY); for(var i:int = 0; i < 361; i ++) { graphics.lineTo(Math.cos(i / 180 * Math.PI) * radius + centerX, Math.sin(i / 180 * Math.PI) * radius + centerY); } }
__________________
Будь проще. |
|
|||||
|
Ага, вот в чём я ошибся... Я просто перепутал местами moveTo и lineTo. Спасибо, что объяснили, что значат имена этих методов, а то я голову себе ломал когда впервые их увидел)
Поменял местами и теперь всё работает. import flash.geom.Point; import flash.text.engine.SpaceJustifier; import flash.display.Sprite; import flash.events.Event; graphics.lineStyle(1, 0x000000); for(var i:int = 0; i < 360; i ++) { graphics.moveTo(120+Math.cos(i/180*Math.PI) * 100, 120+Math.sin(i/180 * Math.PI) * 100); graphics.lineTo(120+Math.cos((i+1)/180*Math.PI) * 100, 120+Math.sin((i+1)/180*Math.PI) * 100); } var spr:Sprite = new Sprite(); spr.graphics.lineStyle(2, 0x000000); spr.graphics.drawCircle(0, 0, 20); addChild(spr); super.addEventListener(Event.ENTER_FRAME, loop); var pos:int = 0; function loop(e:Event):void { spr.x = 120+Math.cos(pos / 180 * Math.PI) * 100; spr.y = 120+Math.sin(pos / 180 * Math.PI) * 100; pos ++; }
__________________
There is no thing in this world that is not simple. |
|
|||||
|
moveTo() не нужен каждый раз. LineTo рисует линию и перемещает курсор. http://help.adobe.com/ru_RU/FlashPla...l#lineTo%28%29
__________________
Будь проще. |
|
|||||
|
О боже... Я походу совсем деградирую...
Рисовать учился я по примерам в инете давно уже, так до сих пор и не читал документацию о.О
__________________
There is no thing in this world that is not simple. |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|