PDA

Просмотр полной версии : Получение координат с нарисованной линни


Mylene
29.11.2003, 14:13
Подскажите, пожалуйста!!!Как с нарисованной кривой линии (нарисованной карандашом во Flash) получить значения координат каждой точки.
:rolleyes:

Techmaker
29.11.2003, 15:08
зачем тебе это нужно? :)

sergwizard
29.11.2003, 16:13
Самые простые способы:

Способ 1.
В первый фрейм вписываем код:

posX = [];
posY = [];
i =0;
this.onMouseDown = function(){
x = _xmouse;
y = _ymouse;
posX.push(x);
posY.push(y);
trace("x["+i+"]="+posX[i]);
trace("y["+i+"]="+posY[i])
i++;
}


На сцене рисуем линию. Жмем Ctrl+Enter. Мышкой щелкаем по линии, получаем координаты.

Способ 2.

Выделяем нарисованную линию, идем в меню, File -> Export Image. Сохраняем в формате *.ai (Adobe Illustrator). Открываем полученный файл в любом текстовом редакторе (Notepad, UltraEdit), и получаем координаты.

Mylene
29.11.2003, 18:30
Супер! Спасибо!!!
Но как можно это делать без мыши? И получать все координаты сразу со всей кривой?

Штрек
30.11.2003, 00:26
Если было б так просто -
Макромедия давно бы сделала криволин.градиент.
Мож превратить кривую в Guide, пустить по ней мувик и
EnterFrame снимать его координаты :confused:
В общем гимор, ну его....

derhab
30.11.2003, 08:02
Оригинал написал(а) sergwizard

Способ 2.

Выделяем нарисованную линию, идем в меню, File -> Export Image. Сохраняем в формате *.ai (Adobe Illustrator). Открываем полученный файл в любом текстовом редакторе (Notepad, UltraEdit), и получаем координаты.


ну вот:

400.3 166.3 m
400.3 168.8 400.4 171.3 400.5 173.8 C
400.9 179.8 399.7 185.5 397.0 190.7 C
395.3 193.9 393.3 196.8 390.9 199.4 C
386.5 204.1 382.2 209.0 378.1 214.0 C
376.3 216.1 374.3 217.8 372.0 219.0 C
362.7 224.1 352.7 228.2 342.2 231.4 C
336.1 233.2 330.0 235.0 323.8 236.6 C
313.2 239.3 302.3 240.2 291.2 239.0 C
287.3 238.6 283.4 238.0 279.6 237.1 C
267.7 234.3 256.4 230.0 245.7 224.3 C
242.1 222.4 238.7 220.1 235.6 217.5 C
234.5 216.6 233.9 215.4 233.7 213.9 C
232.6 202.5 233.5 191.3 236.5 180.2 C
239.5 169.5 242.8 158.8 246.5 148.3 C
250.7 136.0 252.2 123.3 250.9 110.2 C
249.6 97.3 247.0 84.6 243.0 72.2 C
240.2 63.6 237.3 55.0 234.3 46.5 C
230.0 34.5 224.1 23.3 216.7 12.9 C
215.1 10.6 213.2 8.7 211.1 7.1 C
209.4 5.9 207.5 4.9 205.3 4.2 C
198.8 1.9 192.1 1.1 185.1 1.7 C
178.5 2.3 171.8 3.2 165.3 4.5 C
155.2 6.4 145.2 8.6 135.2 11.0 C
126.4 13.1 118.0 16.2 110.0 20.3 C
99.5 25.6 89.6 31.8 80.2 39.1 C
70.0 46.9 60.3 55.2 50.9 63.9 C
45.7 68.6 40.8 73.5 36.1 78.6 C
27.8 87.6 20.4 97.1 13.8 107.2 C
9.0 114.5 5.6 122.2 3.4 130.4 C
1.9 136.0 1.3 141.6 1.6 147.3 C
1.7 150.8 2.1 154.3 2.7 157.7 C
3.4 161.8 5.1 165.5 7.9 168.7 C
9.5 170.7 11.2 172.6 12.8 174.5 C
22.2 184.9 29.1 196.7 33.6 209.8 C
37.6 221.1 39.3 232.8 38.9 244.8 C

как с этим разобраться? :confused:
Где тут х, а где y? Блин.

sergwizard
01.12.2003, 01:41
Derhab, ну не ленись. Поэкспериментируй немного. Нарисуй точку, отследи, как это проявляется в ai. Потом нарисуй прямую линию, - еще раз отследи. Поверни линию, - посмотри, что изменилось. Усложняй рисунок, отслеживай.
У меня, в свое время, на то чтобы врубиться, ушло около двух часов. Врубился. Пользовался. Потом нашел более легкий способ. От этого отказался.
Вот, попробовал по твоим координатам нарисовать линию. Похоже?

derhab
01.12.2003, 09:51
Да вроде похоже:)) Я уже забыл..линия была вчера...но я тебе верю. Думаю, будет нужда, разберусь с этим способом, а вообще я делал пару раз методом пускания мувика по кривой-guide с записью его координат в массив. Для несложных кривых вполне подходит.

sergwizard
02.12.2003, 00:54
а вообще я делал пару раз методом пускания мувика по кривой-guide с записью его координат в массив. Для несложных кривых вполне подходит.

Вот, возьми эту флэшку-утилитку. Она подойдет и для более сложных кривых.
Год назад, когда мы делали на flasher.ru "новогоднюю елку", и мне надо было срочно нарисовать зайца с подарками, - хороший человек Max N. Chubin, помог мне этой штукой.

derhab
02.12.2003, 02:33
Сбасибо:), я видел это... Кстати, не слишком удобная весч, попробуй нарисовать методом кликания по-настоящему плавную кривую.

sergwizard
02.12.2003, 03:18
Да при желании - все можно. Чаще кликай. Вспомни, что координаты можно использовать не только для lineTo, но и для curveTo. В любом случае, это хорошее подспорье.

Mylene
02.12.2003, 08:56
Как бы сделать, чтобы выводились сразу все координаты кривой одномерный массив,
а затем записывались в текстовый файл?

Mylene
03.12.2003, 09:20
Помогите, как получить все координаты, которые пробежал мувик по кривой! У меня не получается, это ж легко???!!!

:mad:

Mylene
03.12.2003, 09:20
Помогите, как получить все координаты, которые пробежал мувик по кривой! У меня не получается, это ж легко???!!!

:mad:

Mylene
03.12.2003, 09:20
Помогите, как получить все координаты, которые пробежал мувик по кривой! У меня не получается, это ж легко???!!!

:mad:

Mylene
03.12.2003, 09:20
Помогите, как получить все координаты, которые пробежал мувик по кривой! У меня не получается, это ж легко???!!!

:mad:

Mylene
03.12.2003, 09:20
Помогите, как получить все координаты, которые пробежал мувик по кривой! У меня не получается, это ж легко???!!!

:mad:

Mylene
03.12.2003, 09:20
Помогите, как получить все координаты, которые пробежал мувик по кривой! У меня не получается, это ж легко???!!!

:mad:

derhab
03.12.2003, 15:54
ну для начала...выложи нормальный файл, твой зип битый.
Зачем же так орать?

Mylene
03.12.2003, 16:18
вот этот файл ничего???
:D

derhab
03.12.2003, 19:22
Вобщем твой код должен выглядеть примерно так:

В руте:


ArrX = new Array();
ArrY = new Array();
i = -1;
function Coord()
{
i++;
ArrX[i] = _root.point._x;
ArrY[i] = _root.point._y;
}
_root.onEnterFrame = function()
{
Coord();
};


На кнопке:


on (release) {
trace("ArrX["+_root.ArrX+"]");
trace("ArrY["+_root.ArrY+"]");
}

sergwizard
03.12.2003, 20:59
У меня, в принципе, то же самое, что и у Derhab(a). Только маленькое, но нужное дополнение: проверка на остановку МС "point". Это чтобы ArrX и ArrY не росли бесконечно.

ArrX = [];
ArrY = [];
i = 0;
function Coord(){
ArrX[i] = _root.point._x;
ArrY[i] = _root.point._y;
i++;

Lx = ArrX.length;
LPx = ArrX[Lx-2];
LIx = ArrX[Lx-1];
LPy = ArrY[Lx-2];
LIy = ArrY[Lx-1];
}
this.onEnterFrame = function(){
coord();
if(LPx==LIx and LPy==LIy){
this.onEnterFrame = null;
}
}

Кнопка

on (release) {
trace("ArrX["+_root.ArrX+"]");
trace("ArrY["+_root.ArrY+"]");
}