![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Jun 1999
Адрес: Russia, Samara
Сообщений: 1,138
|
Громадный привет всем !
Я тут несколько (а точнее капитально отстал от жизни и на третий день сидения в MX спинной мозг начал подсказывать что наверняка не мне первому понадобилось нарисовать фигуру с минимально изрезанными краями по произвольно расположенным точкам ? Получасовой поиск на форумах ничего толком не дал, но все равно не верится что до сих пор нигде нету стандартной функции для подобных задач... В общем если кто-нибудь видел где-то, ткните старого лентяя носом в урл Или начинать бороться с ленью садиться писать самому ? ![]() |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
И тебе не менее громадный.
Фигуру, или контур? Согласись, - разные вещи. Что значит "с минимально изрезанными краями"? Возьмем четыре точки, являющиеся вершинами квадрата. По этим точкам можно провести окружность, квадрат, треугольник и еще массу контуров разнообразнейших фигур. Если ты имеешь в виду, что эти точки должны быть вершинами многоугольника, то - конечно - можно. В приложенном исходнике – определены четыре точки (для простоты). На известном баннере мастера У.Б. "Стань известным, добавь свой исходник", определено множество точек, образующих надпись. Там не фигура, - там посложнее. Но, как видишь, можно. Правильно ли я тебя понял?
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
Регистрация: 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); |
|
|||||
|
Регистрация: Jun 1999
Адрес: Russia, Samara
Сообщений: 1,138
|
Hi !
Спасибо всем громадное теперь у меня хотя бы появилась пища для размышлений ![]() |
![]() |
Часовой пояс GMT +4, время: 10:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|