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

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

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

Регистрация: Apr 2009
Сообщений: 30
По умолчанию Критическая ошибка при вызове Graphics.drawPath()

Здравствуйте, у меня вопрос по Graphics.drawPath(). Писал когда-то работоспособный простенький редактор сплайнов, отрисовку производил с помощью Graphics.drawGraphicsData(). Выглядело это так:

Код AS3:
public function redraw ():void {
	var gdata:Vector.<IGraphicsData>=new Vector.<IGraphicsData> ();
	var path:GraphicsPath=_spline.toGraphicsPath ();
	gdata.push (new GraphicsStroke ( 0, false, "normal", "none", "round", 3.0, new GraphicsSolidFill (_bodyColor, _bodyAlpha) ));
	gdata.push (path);
	_body.graphics.clear ();
	_body.graphics.drawGraphicsData (gdata);
	// ... ...
}
То есть я не использовал drawPath() напрямую, и проблем не возникало.
Сейчас я произвожу модификацию сплайна или шейпа (вернее, их graphics) с помощью последовательных вызовов lineStyle(), beginFill(), endFill() из других объектов. Между ними я планировал вставлять вызовы drawPath(). Вот "рабочая лошадка":

Код AS3:
override public function process ():void {
	var p0:AGUnit = _parents[0], p1:AGUnit = _parents[1];
	if (p0 == null) {_output = null; return;}
	if (!(p0.output is Shape) && !(p0.output is Sprite)) {_output = null; return;}
	var gr:Graphics = p0.output.graphics;
	if (p1 != null && p1.output != null && (p1.output is AGSpline)) {
		var path:GraphicsPath = (p1.output as AGSpline).toGraphicsPath ();
		gr.drawPath (path.commands, path.data, path.winding);
	}
	_output = p0.output;
}
Когда этот метод вызывается, плейер выдает критическую ошибку и убивается насмерть. На всякий случай, вот так производится сборка GraphicsPath:

Код AS3:
public override function toGraphicsPath ():GraphicsPath {
	var gp:GraphicsPath=new GraphicsPath ();
	if (_points.length==0) {return gp;}
	var p:AGPoint=_points[0];
	gp.moveTo (p.x, p.y);
	for (var n:uint=1; n<_points.length; n++) {
		p=_points[n];
		gp.lineTo (p.x, p.y);
	}
	if (_closed) {p=_points[0]; gp.lineTo (p.x, p.y);}
	return gp;
}
Никто не знает, что это такое? Спасибо заранее.

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

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

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


 


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


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