Просмотр полной версии : Как на Action Script нарисовать линию
Как на Action Script нарисовать линию
от точки до точки а потом ее стереть?
Есть шарик который движется слева направо
и есть вверху точка привязки.Вот от нее надо
и вести линию.
Как это сделать?
надо сначала сделать клип с линией, а потом этот клип соответствующим образом, позиционировать, поворачивать и масштабировать
Зри в исходниках. Тама такого завались. :)
Можешь сделать линию маской, а в маскированном слое твин с перемещающимся объектом нужного цвета и это дело зареверсить (для стирания)
это гемор :) и размер большой
ну вы, млин, даете!
рисум горизонтальную линию
делаем из нее мувик, называем его (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:
2Anddrey
Не слушай ты этих глупостей - смотри в исходниках. Все делаеться гораздо проще. :)
2El Ты бы еще ряды Фурье вспомнил :p
2 Fisher:
Это мы запросто, старик Фурье рулит :cool:
Хотя куда уж проще :)
А в исходниках это лежит в разделе математика :D
http://www.flasher.ru/src/category_40_2/
Примерно так
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 и центр на конце.
Не те ты исходники смотришь. :)
Тока ведь ента линия должна жутко scale-ться. Или все таки нет?
[subway]design
28.11.2001, 21:05
если линия - hairline, то все в порядке
Novikoff
29.11.2001, 06:44
здесь тоже вроде бы код не сложный:)
2 [subway]design
А если мне понадобится толстая линия?
[subway]design
29.11.2001, 14:28
Я как раз дописываю возможность рисовать линии во FlashPainter'e (http://subwaydesign.by.ru/painter.swf)
Если код достаточно простой, тогда опубликую, но исходник не дам - не просите :D
В общем, если поставить толстую линию (солид), то в зависимости от искажения квадрата (в котором она - диагональ) будет разная толщина.
2 [subway]design
Это я к тому, что в моем варианте алгоритма (см. выше) линию можно делать любой толщины и она не будет искажаться :cool:
Привет народ с утра не могу сюда попасть перед Элом извениться.
Положил свой вариант в исходники, может сегодня и появиться, но кому невтерпеж может посмотреть и здесь. Линию можно любой толщины. Немножго глючит, но это видать нужно не скалить а шириной оперировать, а для этого нужно еще один уровень вложенности было облом.
з.ы. Головастый!!! Ты где ? :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
2 Vaicartana:
т.к. не возможно нарисовать прямую горизонтальную(вертикальную) линию
как это нельзя!? :confused:
Vaicartana
30.11.2001, 13:34
tan (90) = oo
artan (00) = 90
теперь покажи мне в АС функцию, возвращающую оо
А покажите мне во флэше функцию, соторая вернет мне точное значение PI или по крайней мере посчитает точное значение atan(90градусов).
если atan(Math.PI) будет вычисляться с точночтью до 10 знака, то этого вполне хватит чтобы нарисовать визуально горизонтальную линию
Vaicartana
30.11.2001, 14:00
ерунда!
он тебе вернет АшиПку.
ЗЫ: А функция PI до энного знака элементарно вычисляется с помощью ряда.
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() - это настоящий рулез! Противоположные доводы пожалуйста обосновывайте.
http://www.buraks.com/asv
2gOloVasTicK '~
Нууу такогото добра.... У самих девать некуда :D Я вот все думаю как на этом принципе Надписи делать типа от руки.
Как у Уила но не поточечно. Все не соберусь поэксперементировать.
з.ы.Ты на эти выходные едешь? Фотик возьмите обязательно - отчитаешся :)
[subway]design
30.11.2001, 17:09
Черт! Он же весь мув вдоль и поперек сканирует!!!!!!!!!!!!
Аа-АААААААААААААААААААААААААААА!!!!!!!!!!!!!!!
[subway]design
30.11.2001, 17:13
Я сейчас рисую мувики под DuplicateMC, в которых масками на 40 кадров рисуется буква. Кому надо - пользуйтесь (когда доделаю, а это долго).
Идея! Можно такие шрифты разрабатывать! В swf формате! Для подгрузки и дуплицирования! Раздел "swf fonts" на flashkit'e !!!!!!!!!!!! Вот рулез будет!!!!
Ваши предложения и идеи на мой ящик
2 [subway]design
Ты посмотри там еще одна тулза есть, которая позволяет редактировать прямо в SWF ссылки, видимость символов и пр. вот это действительно труба
Народ вы про какой софт баслаете? Где скачать? :p
2[subway]design Рисовать не рулез. Ты вот ерайзер реализуй-это рулез! :p
Я маски это для уроков :p А еще большой геморой :D
Вот если бы дубли под маску засунуть тогда ДА! Хотя... не над тем мы головы ломаем. В шестерке все это уже есть. :)
2 Fisher
про Action Script Viewer
http://www.buraks.com/asv
и про URL Action Editor
http://buraks.com/uae/
Спасибо Эл . АСВ у меня как и у любого порядочного чела уже давно имееться :D А вот вторую софтину уже заливаю - посмотримссс :p
Vaicartana
02.12.2001, 01:14
Я тут в ауте пару днёв быв, по поводу приезда к нам КиШ :D
опчим всем по порядку:
Эл - учи Мат.Ан - он рулит! АркТан (Н) существует для любого значения, кроме оо. Флеш на PI ваще забил и округляет его как ему хочется, поэтому Тан(90) на флеше дает 1.###*10^16
[subway]design: Ну, ты уже знаешь :D
а на счет Eval - с некоторых пор я им просто не пользуюсь. Я просто посмотрел как сделаны флешки Дениски и тихо выпал в осадок.
Да собсно не я один :D :D :D
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
Спецом для Фишера :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.