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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Jun 1999
Адрес: Russia, Samara
Сообщений: 1,138
По умолчанию Замкнутая линия по произвольным точкам

Громадный привет всем !

Я тут несколько (а точнее капитально отстал от жизни и на третий день сидения в MX спинной мозг начал подсказывать что наверняка не мне первому понадобилось нарисовать фигуру с минимально изрезанными краями по произвольно расположенным точкам ? Получасовой поиск на форумах ничего толком не дал, но все равно не верится что до сих пор нигде нету стандартной функции для подобных задач... В общем если кто-нибудь видел где-то, ткните старого лентяя носом в урл
Или начинать бороться с ленью садиться писать самому ?

Старый 06.07.2002, 04:07
sergwizard вне форума Посмотреть профиль Отправить личное сообщение для sergwizard Посетить домашнюю страницу sergwizard Найти все сообщения от sergwizard
  № 2  
sergwizard
 
Аватар для sergwizard

Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
И тебе не менее громадный.

Фигуру, или контур? Согласись, - разные вещи. Что значит "с минимально изрезанными краями"? Возьмем четыре точки, являющиеся вершинами квадрата. По этим точкам можно провести окружность, квадрат, треугольник и еще массу контуров разнообразнейших фигур. Если ты имеешь в виду, что эти точки должны быть вершинами многоугольника, то - конечно - можно. В приложенном исходнике – определены четыре точки (для простоты). На известном баннере мастера У.Б. "Стань известным, добавь свой исходник", определено множество точек, образующих надпись. Там не фигура, - там посложнее. Но, как видишь, можно.
Правильно ли я тебя понял?
Вложения
Тип файла: zip square.zip (3.3 Кб, 101 просмотров)
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный.
(S.Wizard)

Старый 06.07.2002, 13:47
rolling_tmp вне форума Посмотреть профиль Отправить личное сообщение для rolling_tmp Найти все сообщения от rolling_tmp
  № 3  
rolling_tmp

Регистрация: Oct 2001
Сообщений: 45
привет!

вот если у тебя точки на плоскости и есть их порядок, то тогда
простой алгоритм

создаеш курву от первой точки до второй
якорь ставишь меж них по центру

при содздании последующих точек якоря ставишь в точку симметрно предидущему якорю относительно начальной точки кривой.

вот код, только концевые точки уж сам соедини
(чтобы заработало - код в первый фрейм, в библиотеке пустой мувик с линкаджем spline )


function Spline(){
this.n=5
this.init(this.n);
}
Spline.prototype = new MovieClip();

Spline.prototype.init= function(n){
var i=0;
while (i<n){
if(i==0){
var j=0;
} else {
j=1;
}
while (j<3){

this.createEmptyMovieClip (i+""+j, i*100 + j);

this[i+""+j].onPress =function(){
startDrag(this,true);
this.onEnterFrame = function(){
this._parent.redraw();
}
}
this[i+""+j].onRelease =function(){
stopDrag();
delete this.onEnterFrame;

}
if(j==1){
//this[i+""+j]._visible=false;
}

with (this[i+""+j]){
if (j==1){
beginFill (0xCC0000, 100);
} else {
beginFill (0xFFFFFF, 100);
}
lineStyle (0, 0x000000, 50);
moveTo (-5, -5);
lineTo (5, -5);
lineTo (5, 5);
lineTo (-5, 5);
lineTo (-5, -5);
endFill();



_x =50+i*100 + j* 50;
_y=200;
init_x =_x;
init_y = _y;


}
this[i+""+j].init_x =this[i+""+j]._x;
this[i+""+j].init_y =this[i+""+j]._y;
//this[i+""+j].createTextField("lbl",11,10,-5,300,20);
//this[i+""+j].lbl.text = i+""+j;

j++;

}
with ( this){

lineStyle( 0, 0x0000FF, 100 );
if(i==0){
moveTo( this[i+""+0]._x, this[i+""+0]._y );
} else {
moveTo( this[(i-1)+""+2]._x, this[(i-1)+""+2]._y );
}
curveTo( this[i+""+1]._x, this[i+""+1]._y, this[i+""+2]._x, this[i+""+2]._y );
//trace(spline[i+""+1]._x+":"+ spline[i+""+1]._x);
}

i++;
}
}

Spline.prototype.redraw= function(){
this.clear();

//this[0+""+1]._x= this[0+""+0]._x +(this[0+""+2]._x - this[0+""+0]._x)/2;
//this[0+""+1]._y= this[0+""+0]._y +(this[0+""+2]._y - this[0+""+0]._y)/2;

var i=1;

while (i<this.n){
this[i+""+1]._x= this[(i-1)+""+2]._x +(this[(i-1)+""+2]._x - this[(i-1)+""+1]._x);
this[i+""+1]._y= this[(i-1)+""+2]._y +(this[(i-1)+""+2]._y - this[(i-1)+""+1]._y);
i++;
}


///////////////
var i=0;
while (i<this.n){
with ( this){

lineStyle( 0, 0x0000FF, 100 );
if(i==0){
moveTo( this[i+""+0]._x, this[i+""+0]._y );
} else {
moveTo( this[(i-1)+""+2]._x, this[(i-1)+""+2]._y );
}
curveTo( this[i+""+1]._x, this[i+""+1]._y, this[i+""+2]._x, this[i+""+2]._y );
}

i++;
}

}
Object.registerClass("spline" /*symbolID*/, Spline /*theClass*/ );

_root.attachMovie("spline","spl", 0);

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

Регистрация: Jun 1999
Адрес: Russia, Samara
Сообщений: 1,138
Hi !

Спасибо всем громадное теперь у меня хотя бы появилась пища для размышлений

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

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

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


 


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


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