![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 6
|
Приветствую.
Нужно реализовать следующее: Во флэш редактор загружается картинка, состоящая из одной линии. Например, узор. Чтобы было понятнее: обыкновенный белый фон и чёрная линия, которая нигде не пересекается сама с собой. Из этой линии и состоит весь узор, линия, соответственно, имеет начало и конец. Нужно сделать так, чтобы флэш плэер "рисовал" этот самый заданный узор. То есть: в редакторе выбирается точка-начало загруженной линии, выбирается количество фреймов, в которое процесс должен уместиться, после чего нажимается плэй и флэш, начиная с заданной точки, проводит эту линию со всеми её изгибами и поворотами. Пытался это реализовать в Adobe Flash 8 и в SwishMax'е, и там и там реализовать указанный выше эффект получалось только разбив узор на сегменты и вручную заставляя флэш рисовать их поочереди, устанавливая для каждого из них время появления и сторону, с которой это появление, соотвественно, происходит. Отсюда и вопрос к вам, эксперты: подскажите инструмент, который позволяет реализовать вышеупомянутый (и, по сути, элементарный) эффект без потери времени, то бишь, как я и расписал - в три приёма - отдаём флэшу объект, задаём его начало, уточняем скорость. P.S. Adobe Flash 8 использовал по причине наличия такового. Новые версии редактора достать не проблема. Если можно использовать стороннюю программу для создания требуемого эффекта и после чего импортировать результат во флэш, тоже не проблема. Главное - простота решения. Заранее спасибо. Последний раз редактировалось Van8; 29.11.2008 в 10:25. Причина: Уважаемые модераторы, извиняйте за то, что тема не раскрывает суть вопроса. С правилами раздела ознакомился только после создания темы, за что каюсь :) |
|
|||||
|
loading 50%
|
Вы про маски слышали?
|
|
|||||
|
Регистрация: Nov 2008
Сообщений: 6
|
Слышали. Причём поиском по форуму пользоваться умеем и этой способностью не пренебрегаем. Как результат, обнаружилась вот эта тема и ещё около 20ти тем с ней схожих, что свидетельствует о том, что вопрос с рисованием - тема наболевшая и востребованная, ибо поднималась неоднократно. Как решение проблемы обычно предлагалось разбиение контура на сегменты, создание индивидуальных масок и затем их поочерёдное передвижение, а так же вариации этого решения. При наличии сложного, громоздкого контура (узора) процесс анимирования становится крайне трудоёмким, ибо производится вручную. Мне же любопытно, имеется ли способ автоматизации начертания требуемого узора (при условии, что узор - это просто линия, у которой есть начало и конец - и нужно, чтобы флэш за Х секунд этот узор нарисовал).
P.S. Большинство тем, найденых мной при использовании поиска, являются устаревшими, причём в большинстве своём устаревшими года на полтора-два. Вполне очевидно, что за это время появилось более мощное, удобное ПО, с помощью которого можно реализовать поставленную задачу без особых временных затрат. |
|
|||||
|
loading 50%
|
Давайте для начала переведем на адекватный язык Ваш первый меседж:
Цитата:
Одна линия в случае узора... Вы имеете в виду, что не будите загружать пиксельную картинку? В векторном узоре как правило куча отдельных кривых, которые таки пересекаются друг с другом в узлах. Что ставит вопрос о логике прочтения изображения - дочки должны отрисовываться относительно корневого элемента и своих центров симетрии, а не просто слева-направо. Это еще одна самостоятельная подзадача. Причем, довольно сложная. Цитата:
В приведенной Вами ветке обсуждения автор выложил свои соображения о коде и задал вопрос по существу и получил практический ответ. У Вас - более чем абстрактный вопрос - абстрактный софт не затрагивая АС должен сделать что то мегасложное не понятно как в редакторе флеш. Ответ: Такого софта нет. Вас устроит? |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 6
|
Что ж, если мой вопрос поставлен слишком абстрактно, разъяснить не составит никакого труда.
Пример номер раз: Открыт редактор флэша. В панели инструментов выбираем карандаш. В любой точке на рабочей плоскости зажимаем левую кнопку мыши и начинаем малевать пока не надоест. В результате получаем непонятную кракозябру ака клубок ниток или что-то вроде того. Стоит заметить, что объект был целиком нарисован за один приём. У объекта есть точка начала (там, где "карандаш" впервые каснулся холста) и точка конца (там где мы устали малевать и отпустили кнопку). Последующий вопрос очевиден: можем ли мы заставить флэш (или какой-либо другой инструмент, результат работы которого мы можем импортировать во флэш) повторить наше художество? По-моему задача вовсе не "мегасложная": мы просто говорим флэшу - "посмотри как я делаю и затем повтори". Пример номер два будет иметь место быть только если пример номер раз реален для реализации без прописывания вручную событий и тайминга для каждого небольшого участка нашей кракозябры. P.S. Уважаемый aksios, я пришёл на этот форум именно по причине того, что я ни разу не спец во флэше и я не знаю, как реализовать довольно-таки простую с моей т.з. вещь. Если я некорректно (или чересчур абстрактно) задаю вопросы, уточнение не займёт никакого труда. Более того, я благодарен вам за ответы и время, которое вы на эти ответы тратите. Посему вопросы вроде "Вас устроит?" мне не понятны. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Просто - не можем. В истории JSFL рисование не воспроизводимая операция. JSFL - это скриптовый язык среды разработки, которые помогает автоматизировать многие процессы. Но с помощью того же JSFL можно написать скрипт, который отслеживает положения мыши и время и после отпуска кнопки, выдает массив данных. Но будет их много.
Но это пол беды. Вторая половина это то, что флеш редактор оптиматизирует нарисованные линии, сглаживая, скругляя и спрямляя. Поэтому то что вы наводили рукой и что отобразит флеш, это не одно и тоже. |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 6
|
В моём предыдущем посте был приведён "пример номер раз", идея которого, надо сказать, существенно проще "примера номер два" и того, что хотелось бы получить. Странно, что даже в таком навороченном инструменте как CS4 не существует возможности автоматизировать процесс.
Пример номер два по сути описан в начале этой темы, однако повторюсь: берётся заранее нарисованная кракозябра (а лучше узор), состоящий из одной линии (она сама с собой не пересекается). Нарисована она может быть в несколько приёмов, совмещена из кусков или создана любым другим аналогичным способом (т.е. в отличае от "примера номер раз" флэш не видит процесса создания объекта, ему нечего запоминать и затем нечего повторять). Результат, тем не менее, должен быть аналогичным, как в первом примере. Пишу это потому, что у меня возникла идея (более-менее простой) реализации. По причине моего знакомства с PHP и практически незнания ActionScript, поясню как умею. От вас же, уважаемые эксперты, нужно мнение, можно такое реализовать во флэше или нет: 1) Допустим, во флэш загружается картинка 100х100 пикселей, фон у которой - белый. На картинке изображен узор, соответствующий критериям, перечисленным во втором примере (без пересечений). 2) Левый верхний пиксель картинки имеет координаты 0,0. Правый нижний, соответственно, имеет координаты 99,99. Создаётся функция, в которой поочереди перебираются все пиксели нашей картинки и координаты всех цветных (небелых, т.е. относящихся к узору) записываются в массив. 3) Срабатывает функция, которой передаётся массив координат и координаты начальной точки (X и Y одного из концов линии, из которой состоит наш узор). Допустим, наше начало - это 21,40. Эта точка удаляется из массива. 4) Функция ставит на пустом белом холсте в этом месте точку,а затем проверяет, есть ли в массиве точка, имеющая координаты, отличные от начальной не более чем на 1 пиксель. Если продолжение найдено, точка с соответствующими координатами удаляется из массива и ставится на плоскость. Далее процесс идёт циклически, пока не останется точек. 5) Варианты: если линия толще одного пикселя, ну или изгибы линии в нескольких местах заставляют один цветной пиксель соприкасаться с несколькими другими, код будет слегка изменён, однако суть останется прежней. Ещё раз to iNils: думаю, я написал приблизительно то же, что должно быть в скрипте, о котором вы говорили. Если нет, прошу прокомментировать возможность реализации подобного во флэше. Особенно интересует меня первая функция - та, которой скармливается картинка для создания массива. |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 6
|
А что если анти-алиазинг, наоборот, улучшит изображение, сгладив изгибы? Конечно, приходится признать, результат будет отличаться от ожидаемого. iNils, вы так и не ответили - можно ли в ActionScript'е реализовать первую функцию? Извиняюсь, что в разделе форума, посвящённом вопросам без ActionScript'а, поднялся такой вопрос, но уж если наша дискуссия зашла в такое русло, не могли бы вы вкратце пояснить, как скормить функции картинку и заставить попиксельно её отпарсить?
P.S. Так же интересно, что думают другие комрады с форума - может быть всё же есть какие-нибудь другие идеи решения проблемы? |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Я думаю, что это Вам не очень понравится)
Судите сами:
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:54. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|