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

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

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

Регистрация: May 2007
Сообщений: 116
По умолчанию lineBitmapStyle. Не пойму в каком направлении рыть

Подскажите. В IDE когда просто рисуешь линию можно выбрать стиль линии line -> properties -> style:ragged допустим. А в AS3 как реализовать подобное? Пробывал lineBitmapStyle - битмап заливает всегда линейно, пробывал переворачивать матрицей, но эффект все равно не тот. Да ладно линия, кривую безье скоро нужно будет рисовать подобную, а я линию все победить не могу.

Старый 05.05.2009, 20:48
Vas717 вне форума Посмотреть профиль Отправить личное сообщение для Vas717 Найти все сообщения от Vas717
  № 2  
Ответить с цитированием
Vas717

Регистрация: Nov 2002
Сообщений: 27
Отправить сообщение для Vas717 с помощью ICQ
Рыть в направлении ручной (AS3) отрисовки линии ); т.е. делим линию на n частей и рисуем каждый сегмент отдельно ( как line/curve ) с заданными расстояниями между сегментами и нужным стилем.
__________________
Проста и чистота, залог душевного здоровья ...

Старый 06.05.2009, 00:07
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 3  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Код AS3:
var pointXYArr:Array, facArr:Array, i:int, fixFac:Array, fixPointArr:Array;
pointXYArr =[100,0,100,41.35,70.65,70.65,41.35,100,0,100,-41.4,100,-70.65,70.65,-100,41.35,-100,0,-100,-41.4,-70.65,-70.65,-41.4,-100,0,-100,41.35,-100,70.65,-70.65,100,-41.4,-70,22,70,24,1,121,-64,-47,-42,-71,-14,-45,-41,-22,-15,-71,-17,-22,-62,-21,-62,-71,8,-25,71,-17,48,-73,39,-37];
facArr=[16,0,18,2,17,1,0,0,1,2,2,1,3,2,4,1,5,2,6,1,7,2,8,1,9,2,10,1,11,2,12,1,13,2,14,1,15,2,0,1,20,0,23,2,21,1,24,2,22,1,25,2,19,1,26,2,20,1,27,0,29,2,28,1,30,2,27,1];
fixPointArr = [];
for (i=0;i<pointXYArr.length;i+=2) fixPointArr.push(new Point(pointXYArr[i], pointXYArr[i+1]));
fixFac = [];
for (i=0;i<facArr.length;i+=2) fixFac.push({id:facArr[i], type:facArr[i+1]});
//сдвигание и увеличение смайла
for (i=0;i<fixPointArr.length;i++) {
	fixPointArr[i].x*=2;
	fixPointArr[i].y*=2;
	fixPointArr[i].x+=250;
	fixPointArr[i].y+=200;
}
graphics.lineStyle(1,1);
for (i=0;i<fixFac.length;i++) {
	try{
	if (fixFac[i].type == 0) 
	graphics.moveTo(fixPointArr[fixFac[i].id].x, fixPointArr[fixFac[i].id].y);
	/*if (fixFac[i].type == 1) 
	graphics.lineTo(fixPointArr[fixFac[i].id].x, fixPointArr[fixFac[i].id].y);
	*/
	if (fixFac[i].type == 2) {
	graphics.curveTo(fixPointArr[fixFac[i].id].x, fixPointArr[fixFac[i].id].y,
		fixPointArr[fixFac[i+1].id].x, fixPointArr[fixFac[i+1].id].y);
	i++;
	}
	}catch(e:Error){trace(e+' ' +i)};
}
//подготовка массива из черточек
graphics.lineStyle(0,0xFF);
var curveLine:Array = [];
var point:Point;
var lastPoint:Point;
var j:int, b:int;
var breakPoint:Array = [];
var breakTr:Boolean = true;
for (i=0;i<fixFac.length;i++) {
	try{
		if (fixFac[i].type == 0) {
			graphics.moveTo(fixPointArr[fixFac[i].id].x, fixPointArr[fixFac[i].id].y);
			lastPoint = fixPointArr[fixFac[i].id];
			breakPoint.push(lastPoint);
		}
 
		if (fixFac[i].type == 2) {
			for (j=0;j<100;j++){
				//trace(lastPoint);
				curveLine.push(point = new Point);
				point.x = bezier3(lastPoint.x,fixPointArr[fixFac[i].id].x,fixPointArr[fixFac[i+1].id].x, j/100);
				point.y = bezier3(lastPoint.y,fixPointArr[fixFac[i].id].y,fixPointArr[fixFac[i+1].id].y, j/100);
				if (curveLine.length>1) {
					graphics.moveTo(curveLine[curveLine.length-2].x,curveLine[curveLine.length-2].y);
					breakTr = true;
					for(b=0; b<breakPoint.length; b++) if (curveLine[curveLine.length-1].equals(breakPoint[b])==true) {breakTr = false;break;}
 
					if (breakTr == true) graphics.lineTo(curveLine[curveLine.length-1].x,curveLine[curveLine.length-1].y);
				}
			//
			}
			lastPoint = fixPointArr[fixFac[i+1].id];
			i++;
		}
	}catch(e:Error){trace(e+' ' +i)};
}
//подготовка массива из черточек c одинаковым расстоянием между ними
var fixDistance:Array = [];
var dist:Number=0;
var FIX_DIST:int = 10;//ширина точечек
lastPoint = curveLine[0];
for (i=0;i<curveLine.length;i++){
	dist+=Point.distance(lastPoint,curveLine[i]);
	//trace(Point.distance(lastPoint,curveLine[i]));
	if (dist >= FIX_DIST) {
		dist=0;
		fixDistance.push(curveLine[i]);
	}
	lastPoint = curveLine[i];
	}
//чертение смайла черточками
graphics.lineStyle(4,0xFF0000);
for (i=1; i<fixDistance.length; i+=2){
graphics.moveTo(fixDistance[i-1].x,fixDistance[i-1].y);
breakTr = true;
for(b=0; b<breakPoint.length; b++) if (fixDistance[i].equals(breakPoint[b])==true) {
	breakTr = false;
	break;
	}
if (breakTr == true) 
graphics.lineTo(fixDistance[i].x,fixDistance[i].y);
}
 
function bezier3(p0:int,p1:int,p2:int,t:Number):Number {
	return (1-t)*(1-t)*p0+2*t*(1-t)*p1+t*t*p2;
}

Старый 06.05.2009, 07:41
zafod вне форума Посмотреть профиль Отправить личное сообщение для zafod Найти все сообщения от zafod
  № 4  
Ответить с цитированием
zafod

Регистрация: May 2007
Сообщений: 116
да, так пробывал - расчитал кривую через n curves и отрисовал через drawPath, но кроме как черточками не получилось. Обшарил весь инет, но такого эффекта как ragged все равно не получается.

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

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

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


 


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


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