Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.05.2014, 00:30
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 1  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
По умолчанию Нарисовать круг из прямых.

Вроде бы элементарное дело, казалось бы.
Написал код, который должен рисовать круг из прямых.
Уже просмотрел свой код под линзой, всё равно не могу понять свою ошибку.
Код AS3:
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 ++;
}
В итоге кружок нарисованный в спрайте методом drawCircle крутится по окружности, а вместо нарисованного круга я получаю горизонтальную палку.
Изображения
 
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 26.05.2014 в 01:00.
Старый 26.05.2014, 01:12
KBAC вне форума Посмотреть профиль Отправить личное сообщение для KBAC Найти все сообщения от KBAC
  № 2  
Ответить с цитированием
KBAC
 
Аватар для KBAC

Регистрация: Jan 2006
Адрес: Москва (Нижний Новгород)
Сообщений: 229
Записей в блоге: 1
Отправить сообщение для KBAC с помощью Skype™
Ну вы глупость какую-то написали:
1 проход цикла: рисуем линию. И двигаем указатель в следующую точку.

Остальные проходы: рисуем линию в точку в которой находимся(ничего не рисуем). Двигаем указатель в следующую точку.

Код AS3:
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);
	}
}
__________________
Будь проще.

Старый 26.05.2014, 01:22
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 3  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Ага, вот в чём я ошибся... Я просто перепутал местами moveTo и lineTo. Спасибо, что объяснили, что значат имена этих методов, а то я голову себе ломал когда впервые их увидел)

Поменял местами и теперь всё работает.
Код AS3:
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 ++;
}
circ.swf   (1.2 Кб)
Вложения
Тип файла: swf circ.swf (1.2 Кб, 90 просмотров)
__________________
There is no thing in this world that is not simple.

Старый 26.05.2014, 01:25
KBAC вне форума Посмотреть профиль Отправить личное сообщение для KBAC Найти все сообщения от KBAC
  № 4  
Ответить с цитированием
KBAC
 
Аватар для KBAC

Регистрация: Jan 2006
Адрес: Москва (Нижний Новгород)
Сообщений: 229
Записей в блоге: 1
Отправить сообщение для KBAC с помощью Skype™
moveTo() не нужен каждый раз. LineTo рисует линию и перемещает курсор. http://help.adobe.com/ru_RU/FlashPla...l#lineTo%28%29
__________________
Будь проще.

Старый 26.05.2014, 01:27
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 5  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
О боже... Я походу совсем деградирую...
Рисовать учился я по примерам в инете давно уже, так до сих пор и не читал документацию о.О
__________________
There is no thing in this world that is not simple.

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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