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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 05.09.2005, 13:06
Sh@man вне форума Посмотреть профиль Отправить личное сообщение для Sh@man Найти все сообщения от Sh@man
  № 4  
Ответить с цитированием
Sh@man
 
Аватар для Sh@man

Регистрация: Mar 2002
Сообщений: 840
Отправить сообщение для Sh@man с помощью AIM Отправить сообщение для Sh@man с помощью Skype™
Вот такой вариант (mc.dashTo() - by Ric Ewing (ric@formequalsfunction.com) - version 1.2 - 5.3.2002)

Код:
MovieClip.prototype.dashTo = function(startx, starty, endx, endy, len, gap) {
	// 
	// startx, starty = beginning of dashed line
	// endx, endy = end of dashed line
	// len = length of dash
	// gap = length of gap between dashes
	//
	// if too few arguments, bail
	if (arguments.length < 6) {
		return false;
	}
	// init vars
	var seglength, deltax, deltay, segs, cx, cy;
	// calculate the legnth of a segment
	seglength = len + gap;
	// calculate the length of the dashed line
	deltax = endx - startx;
	deltay = endy - starty;
	delta = Math.sqrt((deltax * deltax) + (deltay * deltay));
	// calculate the number of segments needed
	segs = Math.floor(Math.abs(delta / seglength));
	// get the angle of the line in radians
	radians = Math.atan2(deltay,deltax);
	// start the line here
	cx = startx;
	cy = starty;
	// add these to cx, cy to get next seg start
	deltax = Math.cos(radians)*seglength;
	deltay = Math.sin(radians)*seglength;
	// loop through each seg
	for (var n = 0; n < segs; n++) {
		this.moveTo(cx,cy);
		this.lineTo(cx+Math.cos(radians)*len,cy+Math.sin(radians)*len);
		cx += deltax;
		cy += deltay;
	}
	// handle last segment as it is likely to be partial
	this.moveTo(cx,cy);
	delta = Math.sqrt((endx-cx)*(endx-cx)+(endy-cy)*(endy-cy));
	if(delta>len){
		// segment ends in the gap, so draw a full dash
		this.lineTo(cx+Math.cos(radians)*len,cy+Math.sin(radians)*len);
	} else if(delta>0) {
		// segment is shorter than dash so only draw what is needed
		this.lineTo(cx+Math.cos(radians)*delta,cy+Math.sin(radians)*delta);
	}
	// move the pen to the end position
	this.moveTo(endx,endy);
};
__________________
www.maxshaman.com


Последний раз редактировалось iNils; 27.04.2007 в 16:04.
Создать новую тему   Часовой пояс GMT +4, время: 17:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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