Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.11.2008, 10:12
Van8 вне форума Посмотреть профиль Отправить личное сообщение для Van8 Найти все сообщения от Van8
  № 1  
Ответить с цитированием
Van8

Регистрация: Nov 2008
Сообщений: 6
Cool Существует ли простой способ заставить flash нарисовать заданный объект?

Приветствую.
Нужно реализовать следующее:
Во флэш редактор загружается картинка, состоящая из одной линии. Например, узор. Чтобы было понятнее: обыкновенный белый фон и чёрная линия, которая нигде не пересекается сама с собой. Из этой линии и состоит весь узор, линия, соответственно, имеет начало и конец.
Нужно сделать так, чтобы флэш плэер "рисовал" этот самый заданный узор. То есть: в редакторе выбирается точка-начало загруженной линии, выбирается количество фреймов, в которое процесс должен уместиться, после чего нажимается плэй и флэш, начиная с заданной точки, проводит эту линию со всеми её изгибами и поворотами.

Пытался это реализовать в Adobe Flash 8 и в SwishMax'е, и там и там реализовать указанный выше эффект получалось только разбив узор на сегменты и вручную заставляя флэш рисовать их поочереди, устанавливая для каждого из них время появления и сторону, с которой это появление, соотвественно, происходит.

Отсюда и вопрос к вам, эксперты: подскажите инструмент, который позволяет реализовать вышеупомянутый (и, по сути, элементарный) эффект без потери времени, то бишь, как я и расписал - в три приёма - отдаём флэшу объект, задаём его начало, уточняем скорость.

P.S. Adobe Flash 8 использовал по причине наличия такового. Новые версии редактора достать не проблема. Если можно использовать стороннюю программу для создания требуемого эффекта и после чего импортировать результат во флэш, тоже не проблема. Главное - простота решения. Заранее спасибо.


Последний раз редактировалось Van8; 29.11.2008 в 10:25. Причина: Уважаемые модераторы, извиняйте за то, что тема не раскрывает суть вопроса. С правилами раздела ознакомился только после создания темы, за что каюсь :)
Старый 29.11.2008, 11:43
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 2  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
Вы про маски слышали?

Старый 29.11.2008, 12:33
Van8 вне форума Посмотреть профиль Отправить личное сообщение для Van8 Найти все сообщения от Van8
  № 3  
Ответить с цитированием
Van8

Регистрация: Nov 2008
Сообщений: 6
Цитата:
Сообщение от aksios Посмотреть сообщение
Вы про маски слышали?
Слышали. Причём поиском по форуму пользоваться умеем и этой способностью не пренебрегаем. Как результат, обнаружилась вот эта тема и ещё около 20ти тем с ней схожих, что свидетельствует о том, что вопрос с рисованием - тема наболевшая и востребованная, ибо поднималась неоднократно. Как решение проблемы обычно предлагалось разбиение контура на сегменты, создание индивидуальных масок и затем их поочерёдное передвижение, а так же вариации этого решения. При наличии сложного, громоздкого контура (узора) процесс анимирования становится крайне трудоёмким, ибо производится вручную. Мне же любопытно, имеется ли способ автоматизации начертания требуемого узора (при условии, что узор - это просто линия, у которой есть начало и конец - и нужно, чтобы флэш за Х секунд этот узор нарисовал).

P.S. Большинство тем, найденых мной при использовании поиска, являются устаревшими, причём в большинстве своём устаревшими года на полтора-два. Вполне очевидно, что за это время появилось более мощное, удобное ПО, с помощью которого можно реализовать поставленную задачу без особых временных затрат.

Старый 29.11.2008, 13:27
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 4  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
Давайте для начала переведем на адекватный язык Ваш первый меседж:
Цитата:
Во флэш редактор загружается картинка, состоящая из одной линии. Например, узор.
Значит как минимум, флеш редактор сам должен определить что это за картинка. Это как бы самостоятельная подзадача. Встроеные средства флеша в этом плане таки не изменны - он по прежнему не понимает, что от него хотят, когда просто загрузили картинку.
Одна линия в случае узора... Вы имеете в виду, что не будите загружать пиксельную картинку? В векторном узоре как правило куча отдельных кривых, которые таки пересекаются друг с другом в узлах. Что ставит вопрос о логике прочтения изображения - дочки должны отрисовываться относительно корневого элемента и своих центров симетрии, а не просто слева-направо. Это еще одна самостоятельная подзадача. Причем, довольно сложная.
Цитата:
в редакторе выбирается точка-начало загруженной линии, выбирается количество фреймов, в которое процесс должен уместиться, после чего нажимается плэй и флэш, начиная с заданной точки, проводит эту линию со всеми её изгибами и поворотами.
Появились фреймы, поэтому я и спросил про маски - для использования чисто программной анимации такой поворот в сюжете не ожиданен, по прежнему речь про одну линию и как решение анимации во фреймах - применение маски по направляющей.
В приведенной Вами ветке обсуждения автор выложил свои соображения о коде и задал вопрос по существу и получил практический ответ. У Вас - более чем абстрактный вопрос - абстрактный софт не затрагивая АС должен сделать что то мегасложное не понятно как в редакторе флеш. Ответ: Такого софта нет. Вас устроит?

Старый 29.11.2008, 15:30
Van8 вне форума Посмотреть профиль Отправить личное сообщение для Van8 Найти все сообщения от Van8
  № 5  
Ответить с цитированием
Van8

Регистрация: Nov 2008
Сообщений: 6
Что ж, если мой вопрос поставлен слишком абстрактно, разъяснить не составит никакого труда.

Пример номер раз: Открыт редактор флэша. В панели инструментов выбираем карандаш. В любой точке на рабочей плоскости зажимаем левую кнопку мыши и начинаем малевать пока не надоест. В результате получаем непонятную кракозябру ака клубок ниток или что-то вроде того. Стоит заметить, что объект был целиком нарисован за один приём. У объекта есть точка начала (там, где "карандаш" впервые каснулся холста) и точка конца (там где мы устали малевать и отпустили кнопку). Последующий вопрос очевиден: можем ли мы заставить флэш (или какой-либо другой инструмент, результат работы которого мы можем импортировать во флэш) повторить наше художество? По-моему задача вовсе не "мегасложная": мы просто говорим флэшу - "посмотри как я делаю и затем повтори".

Пример номер два будет иметь место быть только если пример номер раз реален для реализации без прописывания вручную событий и тайминга для каждого небольшого участка нашей кракозябры.

P.S. Уважаемый aksios, я пришёл на этот форум именно по причине того, что я ни разу не спец во флэше и я не знаю, как реализовать довольно-таки простую с моей т.з. вещь. Если я некорректно (или чересчур абстрактно) задаю вопросы, уточнение не займёт никакого труда. Более того, я благодарен вам за ответы и время, которое вы на эти ответы тратите. Посему вопросы вроде "Вас устроит?" мне не понятны.

Старый 29.11.2008, 15:46
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от Van8 Посмотреть сообщение
мы просто говорим флэшу - "посмотри как я делаю и затем повтори".
Просто - не можем. В истории JSFL рисование не воспроизводимая операция. JSFL - это скриптовый язык среды разработки, которые помогает автоматизировать многие процессы. Но с помощью того же JSFL можно написать скрипт, который отслеживает положения мыши и время и после отпуска кнопки, выдает массив данных. Но будет их много.
Но это пол беды. Вторая половина это то, что флеш редактор оптиматизирует нарисованные линии, сглаживая, скругляя и спрямляя. Поэтому то что вы наводили рукой и что отобразит флеш, это не одно и тоже.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 29.11.2008, 17:11
Van8 вне форума Посмотреть профиль Отправить личное сообщение для Van8 Найти все сообщения от Van8
  № 7  
Ответить с цитированием
Van8

Регистрация: Nov 2008
Сообщений: 6
Цитата:
Сообщение от iNils Посмотреть сообщение
Просто - не можем.
<...>
Но это пол беды.
В моём предыдущем посте был приведён "пример номер раз", идея которого, надо сказать, существенно проще "примера номер два" и того, что хотелось бы получить. Странно, что даже в таком навороченном инструменте как CS4 не существует возможности автоматизировать процесс.

Пример номер два по сути описан в начале этой темы, однако повторюсь: берётся заранее нарисованная кракозябра (а лучше узор), состоящий из одной линии (она сама с собой не пересекается). Нарисована она может быть в несколько приёмов, совмещена из кусков или создана любым другим аналогичным способом (т.е. в отличае от "примера номер раз" флэш не видит процесса создания объекта, ему нечего запоминать и затем нечего повторять). Результат, тем не менее, должен быть аналогичным, как в первом примере. Пишу это потому, что у меня возникла идея (более-менее простой) реализации. По причине моего знакомства с PHP и практически незнания ActionScript, поясню как умею.
От вас же, уважаемые эксперты, нужно мнение, можно такое реализовать во флэше или нет:

1) Допустим, во флэш загружается картинка 100х100 пикселей, фон у которой - белый. На картинке изображен узор, соответствующий критериям, перечисленным во втором примере (без пересечений).
2) Левый верхний пиксель картинки имеет координаты 0,0. Правый нижний, соответственно, имеет координаты 99,99. Создаётся функция, в которой поочереди перебираются все пиксели нашей картинки и координаты всех цветных (небелых, т.е. относящихся к узору) записываются в массив.
3) Срабатывает функция, которой передаётся массив координат и координаты начальной точки (X и Y одного из концов линии, из которой состоит наш узор). Допустим, наше начало - это 21,40. Эта точка удаляется из массива.
4) Функция ставит на пустом белом холсте в этом месте точку,а затем проверяет, есть ли в массиве точка, имеющая координаты, отличные от начальной не более чем на 1 пиксель. Если продолжение найдено, точка с соответствующими координатами удаляется из массива и ставится на плоскость. Далее процесс идёт циклически, пока не останется точек.
5) Варианты: если линия толще одного пикселя, ну или изгибы линии в нескольких местах заставляют один цветной пиксель соприкасаться с несколькими другими, код будет слегка изменён, однако суть останется прежней.

Ещё раз to iNils: думаю, я написал приблизительно то же, что должно быть в скрипте, о котором вы говорили. Если нет, прошу прокомментировать возможность реализации подобного во флэше. Особенно интересует меня первая функция - та, которой скармливается картинка для создания массива.

Старый 29.11.2008, 17:50
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Весь алгоритм "спотыкается" об антиалисинг.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 29.11.2008, 20:31
Van8 вне форума Посмотреть профиль Отправить личное сообщение для Van8 Найти все сообщения от Van8
  № 9  
Ответить с цитированием
Van8

Регистрация: Nov 2008
Сообщений: 6
А что если анти-алиазинг, наоборот, улучшит изображение, сгладив изгибы? Конечно, приходится признать, результат будет отличаться от ожидаемого. iNils, вы так и не ответили - можно ли в ActionScript'е реализовать первую функцию? Извиняюсь, что в разделе форума, посвящённом вопросам без ActionScript'а, поднялся такой вопрос, но уж если наша дискуссия зашла в такое русло, не могли бы вы вкратце пояснить, как скормить функции картинку и заставить попиксельно её отпарсить?

P.S. Так же интересно, что думают другие комрады с форума - может быть всё же есть какие-нибудь другие идеи решения проблемы?

Старый 30.11.2008, 01:59
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 10  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Я думаю, что это Вам не очень понравится)
Судите сами:
Вложения
Тип файла: rar pixelator.rar (6.2 Кб, 117 просмотров)
__________________
Reality.getBounds(this);

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:54.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.