PDA

Просмотр полной версии : Как на Action Script нарисовать линию


Anddrey
28.11.2001, 13:36
Как на Action Script нарисовать линию
от точки до точки а потом ее стереть?

Есть шарик который движется слева направо
и есть вверху точка привязки.Вот от нее надо
и вести линию.
Как это сделать?

El
28.11.2001, 13:45
надо сначала сделать клип с линией, а потом этот клип соответствующим образом, позиционировать, поворачивать и масштабировать

Fisher
28.11.2001, 16:03
Зри в исходниках. Тама такого завались. :)

believe
28.11.2001, 17:04
Можешь сделать линию маской, а в маскированном слое твин с перемещающимся объектом нужного цвета и это дело зареверсить (для стирания)

Cerber
28.11.2001, 18:13
это гемор :) и размер большой

El
28.11.2001, 18:34
ну вы, млин, даете!

рисум горизонтальную линию
делаем из нее мувик, называем его (instance) graph
его опять помещаем в мувик, называем его (instance) line

делаем в корне еще два мультика (любые)
один называем startPoint, другой endPoint

на line вешаем
onClipEvent (enterFrame) {
tmpDx = (_root.startPoint._x - _root.endPoint._x)
tmpDy = (_root.startPoint._y - _root.endPoint._y)
Angle = Math.atan(tmpDy/tmpDx)*180/Math.PI
lineLength = Math.sqrt( tmpDx*tmpDx + tmpDy*tmpDy)
LineX = (_root.startPoint._x + _root.endPoint._x)/2
LineY = (_root.startPoint._y + _root.endPoint._y)/2
//
this._x = LineX
this._y = LineY
this._rotation = Angle
this.graph._width = lineLength
}

все :cool:

Fisher
28.11.2001, 19:26
2Anddrey
Не слушай ты этих глупостей - смотри в исходниках. Все делаеться гораздо проще. :)
2El Ты бы еще ряды Фурье вспомнил :p

El
28.11.2001, 19:29
2 Fisher:
Это мы запросто, старик Фурье рулит :cool:

Хотя куда уж проще :)

El
28.11.2001, 19:37
А в исходниках это лежит в разделе математика :D

http://www.flasher.ru/src/category_40_2/

Fisher
28.11.2001, 19:53
Примерно так
onClipEvent (enterFrame) {
_x = _root.t1._x;
_y = _root.t1._y;
_xscale = _root.t2._x-_root.t1._x;
_yscale = _root.t2._y-_root.t1._y;
}
Тока линия это диагональ квадрата 100*100 и центр на конце.
Не те ты исходники смотришь. :)

El
28.11.2001, 19:56
Тока ведь ента линия должна жутко scale-ться. Или все таки нет?

[subway]design
28.11.2001, 21:05
если линия - hairline, то все в порядке

Novikoff
29.11.2001, 06:44
здесь тоже вроде бы код не сложный:)

El
29.11.2001, 14:02
2 [subway]design
А если мне понадобится толстая линия?

[subway]design
29.11.2001, 14:28
Я как раз дописываю возможность рисовать линии во FlashPainter'e (http://subwaydesign.by.ru/painter.swf)
Если код достаточно простой, тогда опубликую, но исходник не дам - не просите :D
В общем, если поставить толстую линию (солид), то в зависимости от искажения квадрата (в котором она - диагональ) будет разная толщина.

El
29.11.2001, 14:40
2 [subway]design

Это я к тому, что в моем варианте алгоритма (см. выше) линию можно делать любой толщины и она не будет искажаться :cool:

Fisher
29.11.2001, 15:22
Привет народ с утра не могу сюда попасть перед Элом извениться.
Положил свой вариант в исходники, может сегодня и появиться, но кому невтерпеж может посмотреть и здесь. Линию можно любой толщины. Немножго глючит, но это видать нужно не скалить а шириной оперировать, а для этого нужно еще один уровень вложенности было облом.
з.ы. Головастый!!! Ты где ? :D

El
29.11.2001, 16:06
прикольно, блин!
:D

Vaicartana
29.11.2001, 21:27
Юзать для этой цели аркТангенсных функций неприемлимо, т.к. не возможно нарисовать прямую горизонтальную(вертикальную) линию

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

Толщина линии - элементарное растяжение по другой оси.

[subway]design
29.11.2001, 22:34
я уже обновил FlashPainter (версия один точка ноль) :
subwaydesign.by.ru/painter.html (http://subwaydesign.by.ru/painter.html)
2 ALL: дружно комментируем!

Vaicartana
29.11.2001, 23:27
1. Ограничить на мах. колво линий!
2. Нафига там 3-и абсолютно одинаковые ф-ии setC1,..,setC3?
помойму было бы проще function setC1 (С,obj1) {} сделать.
3. Типы кистей лучше не в текстовых переменных хранить а в числовых, ведь строки "Аирбуш" и "Аиpбуш" хоть и выглядят одинакого.
Eval () - Маздай!
this[""+i] рулит

опчим работать и работать. :D :D

El
30.11.2001, 13:24
2 Vaicartana:

т.к. не возможно нарисовать прямую горизонтальную(вертикальную) линию

как это нельзя!? :confused:

Vaicartana
30.11.2001, 13:34
tan (90) = oo
artan (00) = 90

теперь покажи мне в АС функцию, возвращающую оо

El
30.11.2001, 13:56
А покажите мне во флэше функцию, соторая вернет мне точное значение PI или по крайней мере посчитает точное значение atan(90градусов).

если atan(Math.PI) будет вычисляться с точночтью до 10 знака, то этого вполне хватит чтобы нарисовать визуально горизонтальную линию

Vaicartana
30.11.2001, 14:00
ерунда!
он тебе вернет АшиПку.

ЗЫ: А функция PI до энного знака элементарно вычисляется с помощью ряда.

El
30.11.2001, 14:19
trace (Math.atan (Math.PI/2))

результат

1.00388482185389


P.S. А если это все не так, то как же оно у меня работает :)

P.P.S. Xотя базар гнилой, в конце концов можно поставить проверку и отсекать значения

gOloVasTicK '~
30.11.2001, 14:30
2Fisher: :D :D :D :D :D

gOloVasTicK '~
30.11.2001, 14:32
2Fisher: :D :D :D :D :D :cool:

[subway]design
30.11.2001, 16:41
С помощью какой проги подглядел? Я знаю что на Форуме это уже обсуждалось, но откуда качнуть?
А ты и реализацию onClipEvent(enterFrame) тоже видел?
Одинаковые функции - это остаток прошлого, просто не удалил. Там только 2 используются, т.к. 2 цвета хранятся в разных свойствах объекта _root.Tool. Можно создать еще один параметр и оставить всего одну ф-цию, но полмува переделывать - лень. Тем паче, этот код не очень-то тормозит, а великий тормоз - графика.

Кстати я пользуюсь линией - диагональю квадрата в 100 пикселей W&H. Все искажение в 2 строчки:

obj._xscale=deltax;
obj._yscale=deltay;

а eval() - это настоящий рулез! Противоположные доводы пожалуйста обосновывайте.

El
30.11.2001, 16:50
http://www.buraks.com/asv

Fisher
30.11.2001, 17:07
2gOloVasTicK '~
Нууу такогото добра.... У самих девать некуда :D Я вот все думаю как на этом принципе Надписи делать типа от руки.
Как у Уила но не поточечно. Все не соберусь поэксперементировать.
з.ы.Ты на эти выходные едешь? Фотик возьмите обязательно - отчитаешся :)

[subway]design
30.11.2001, 17:09
Черт! Он же весь мув вдоль и поперек сканирует!!!!!!!!!!!!
Аа-АААААААААААААААААААААААААААА!!!!!!!!!!!!!!!

[subway]design
30.11.2001, 17:13
Я сейчас рисую мувики под DuplicateMC, в которых масками на 40 кадров рисуется буква. Кому надо - пользуйтесь (когда доделаю, а это долго).

Идея! Можно такие шрифты разрабатывать! В swf формате! Для подгрузки и дуплицирования! Раздел "swf fonts" на flashkit'e !!!!!!!!!!!! Вот рулез будет!!!!

Ваши предложения и идеи на мой ящик

El
30.11.2001, 17:14
2 [subway]design

Ты посмотри там еще одна тулза есть, которая позволяет редактировать прямо в SWF ссылки, видимость символов и пр. вот это действительно труба

Fisher
30.11.2001, 17:24
Народ вы про какой софт баслаете? Где скачать? :p
2[subway]design Рисовать не рулез. Ты вот ерайзер реализуй-это рулез! :p

Fisher
30.11.2001, 17:26
Я маски это для уроков :p А еще большой геморой :D
Вот если бы дубли под маску засунуть тогда ДА! Хотя... не над тем мы головы ломаем. В шестерке все это уже есть. :)

El
30.11.2001, 17:27
2 Fisher

про Action Script Viewer
http://www.buraks.com/asv

и про URL Action Editor
http://buraks.com/uae/

Fisher
30.11.2001, 17:33
Спасибо Эл . АСВ у меня как и у любого порядочного чела уже давно имееться :D А вот вторую софтину уже заливаю - посмотримссс :p

El
30.11.2001, 17:42
2 Fisher

:p

Vaicartana
02.12.2001, 01:14
Я тут в ауте пару днёв быв, по поводу приезда к нам КиШ :D
опчим всем по порядку:

Эл - учи Мат.Ан - он рулит! АркТан (Н) существует для любого значения, кроме оо. Флеш на PI ваще забил и округляет его как ему хочется, поэтому Тан(90) на флеше дает 1.###*10^16


[subway]design: Ну, ты уже знаешь :D
а на счет Eval - с некоторых пор я им просто не пользуюсь. Я просто посмотрел как сделаны флешки Дениски и тихо выпал в осадок.
Да собсно не я один :D :D :D

El
03.12.2001, 11:26
2 Vaicartana

Я знаю, чему равен тан(90) :D :D :D. Но стояла задача сделать не математически точную модель, а модель визуально верную и работующую во флэше. Хотя я согласен, что использование арктан и арккатан с точки зрения математики здесь неправомерно.

к вопросу о eval. Встречался с жутким глюком когда строчка типа_root["foo"+i]._x = 10 не работала, eval("_root.foo" + i)._x = 10 не работало, а для того что бы заработало надо было написать frodo = "_root.foo"+i
eval(frodo)._x = 10 :confused:

gOloVasTicK '~
03.12.2001, 18:41
:D :D
Спецом для Фишера :)