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

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

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

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
По умолчанию as1, как оптимизировать рисование API?

хочу добавить к чату возможность рисовать. Но при рисовании, того же кружка, нужно отправить координат на полтора килобайта.
Как бы это так оптимизировать в кривые безье? На подобе, как это сглаживается при использовании интсрумента "карандаш" на рабочей сцене флэша.
ну или как-нить подругому. Спасибо.

Старый 22.10.2005, 12:25
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Код:
MovieClip.prototype.drawArc = function(x, y, radius, arc, startAngle, yRadius) {
	//// ==============
	//// mc.drawArc() - by Ric Ewing (ric@formequalsfunction.com) - version 1.5 - 4.7.2002
	//// 
	//// x, y = текущее положение курсора рисования
	//// radius = радиус арки. Если yRadius не указан, то он равен radius
	//// arc = длина арки в градусах. отрицательное значение задают арку против часовой стрелки.
	//// startAngle = начальный угол в градусах.
	//// yRadius = y - радиус арки
	//// ==============
	if (arguments.length < 5) {
		return;
	}
	// если yRadius неопределен, yRadius = radius
	if (yRadius == undefined) {
		yRadius = radius;
	}
	var segAngle, theta, angle, angleMid, segs, ax, ay, bx, by, cx, cy;
	//// рисуем только то что нужно :)
	if (Math.abs (arc) > 360) {
		arc = 360;
	}
	//// Flash использует 8 сегментов на круг, каждый максимум по 45 градусов. Сначала вычисляем количество необходимых сегментов
	segs = Math.ceil (Math.abs (arc) / 45);
	// теперь вычисляем длину арки для каждого сегмента
	segAngle = arc / segs;
	//// Конвертируем градусы в радианы
	theta = -(segAngle / 180) * Math.PI;
	//// Конвертируем начальный угол в радианы
	angle = -(startAngle / 180) * Math.PI;
	//// Находим стартовую точку (ax,ay) относительно заданных x,y
	ax = x - Math.cos (angle) * radius;
	ay = y - Math.sin (angle) * yRadius;
	//// если арка больеше чем 45 градусов, draw as 45 degree segments so that we match Flash's native circle routines.
	if (segs > 0) {
		//// Зацилкиваем рисование сегментов
		for (var i = 0; i < segs; i++) {
			//// увеличиваем угол
			angle += theta;
			//// находим угол на середине пути между конечными точками арки
			angleMid = angle - (theta / 2);
			//// вычисляем координаты конечной точки
			bx = ax + Math.cos (angle) * radius;
			by = ay + Math.sin (angle) * yRadius;
			//// вычисляем координаты контрольной точки
			cx = ax + Math.cos (angleMid) * (radius / Math.cos (theta / 2));
			cy = ay + Math.sin (angleMid) * (yRadius / Math.cos (theta / 2));
			//// рисуем сегмент
			this.curveTo (cx, cy, bx, by);
		}
	}
	//// возвращяемм координаты конечной точки
	return {x:bx, y:by};
};
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
эээ.. и как этой функцией пользоваться? у меня для обработки есть только координаты мыши... без всяких радиусов и прочих элементов.

Старый 23.10.2005, 03:21
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Не внимательно вопрос прочитал Думал тебе нужно круг рисовать, а тебе сглаживание нужно
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
бывает

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

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

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


 


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


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