![]() |
Простенький графический редактор на флеше.
Кто-нибудь может бросить ссылкой на исходники простенького граф. редактора?
Или может у кого есть идеи. Суть в том, что необходим простой редактор (холст и один инструмент - карандаш). Итоговую картинку надо разобрать попиксельно (точнее сжать с помощью LZW). Палитра предопределена. Я пока что-то смутно представляю каким образом это можно сделать во флеше (редактор, с LZW все понятно). То, как я себе представляю, имхо, весьма накладно и будет тормозить, возможно для этого есть некие спец. вещи во флеше? Можете в двух словах сказать как бы вы такое сделали, а уж подробности по вашим тезисам я раскопаю в докуентациях. |
Еще раз , можно уточнить что должен делать редактор ??
Насчет карондоша понятно , дальше нет , ты хочешь изменять каждый пиксель на картинке ??? тогда БитмапДата флешь 8 не ниже . |
Уже то, что надо разобрать попиксельно - значит, что надо использовать bitmapData. И лучше сразу 9-й плеер, чтобы побыстрее шевелилось...
Кстати, и сам LZW можно легко сделать в том же actionscript 3.0, ZIP ведь уже реализовали, не так уж сильно тормозит, а LZW должен ещё побыстрее кодировать... :) |
Спасибо за ответы.
Dendroid LZW как раз у меня не вызывает опасения. Тем более, что при предопределенной палитре все должно получиться весьма просто. Вопрос именно в рисовании. Уточню, что должен уметь редактор. А уметь он должен немного. Должен быть всего один инструмент - карандаш, у которого можно выбрать диаметр и цвет из предопределенной палитры. И этим карандашом надо рисовать на холсте (битмапдата, как я понимаю вы советуете). Затем рисинок я сожму с помощью LZW и все. В общем.. интересует именно вопрос рисования карандашом на "холсте". Как это реализовать лучше? Ну там... обрабатывать события движения мыши поверх битмапдаты (если такое есть) и вычисляя диаметр карандаша закаршивать пикселы. Или есть для этого что-то специальное? |
P.S. И где можно почитать про BitmapData. В яндексе мало ссылок.. видать не очень популярная это тема :)
|
В хелпе.
|
2 Fbor:
Пользуйтесь Google. |
Цитата:
Текст по ссылке можно обнаружить при нажатии кнопки F1. А вы не знали? :bye: В Яндексе потому и мало ссылок, потому что не нужны, когда есть волшебная кнопка F1, которой, некоторые, до сих пор не научились пользоваться и ждут ответа на свои вопросы часами. |
запрос "flash BitmapData":
yandex.ru : 467 страниц; google.com : ~214 000 страниц. ^_^ |
А вам не приходила мысль в голову, что волшебной кнопочки F1 может не быть под рукой, а точнее не быть самого Flash-а?
Доки я привык читать на работе в свободное время а флеша там нет и не будет. Поэтому и спросил. Развели тут демагогию :) |
Цитата:
http://livedocs.macromedia.com/flash/8/main/index.html Так что отсутствие самого флэша — дешевые отмазки. |
да я понял :)
спасибо! :) |
Я так понимаю BitmapData не позволяет реализовать "карандаш" т.к. рисовать на ней (окромя как попиксельно) можно только с помощью fillrect, а нечто типа fillcircle нет?
|
copyPixels
|
copyPixels(sourceBitmap:BitmapData, sourceRect:Rectangle, destPoint:Point, [alphaBitmap:BitmapData], [alphaPoint:Point], [mergeAlpha:Boolean]) : Void
Тут тоже sorceRect. Да и что собственно копировать? Я так понимаю.. данный метод берет кучу пикселов заданную прямоугольником и копирует куда мне надо. А как с его помощью моделировать карандаш определенного радиуса? |
Кстати, а как можно отловить событие перемещения мыши по битмапДате?
Там в мануале ни одного event-а не описано.... или события ловятся контейнером битмапдаты (клипом я так понимаю) ? |
ActionScript classes > BitmapData (flash.display.BitmapData) > hitTest (BitmapData.hitTest method)
|
Цитата:
|
Stone
Спасибо. Вроде оно. __etc Откуда такое желание заниматься графоманством? |
рисуем векторно на скрытом объекте: lineTo(), moveTo(), при этом можно задавать любые стили для линии, толщину, цвет, все изменения копируем на битмап, используя draw(), для реалистичности можно добавлять noise. И не забыть включить прозрачность! :)
|
Попробовал я дополнить пример тем, что мне надо. Вот что получилось.
Жирным выделена суть - момент рисования так сказать. Попробуйте запустите.. видно что ни о каком рисовании речи не идет.. точки успевают рисоваться одна через 10. Видать надо идти другим путем... каким? Код:
import flash.display.BitmapData; |
Dendroid
А.. эээ.. а как с помощью lineTo можно к примеру овал нарисовать? Можете дать ссылочку на пример. Просто насколько я понимаю.. таким образом я смогу рисовать только прямые линии... или нет? |
для переноса на битмап лучше использовать совет от Dendroid (пост 20)
пример рисования фигур вы можете найти у себя (flash8) C:\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\DrawingAPI |
Кстати, вот примерно то, что мне надо
http://www.webmastera.org/painter.php/ только мне надо попроще :) Пошел смотреть пример "у себя" :) |
Глянул пример из C:\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\DrawingAPI
Там же лишь фигуры... а кривые это немного иное... или они аналогично создаются? |
По идее, наверное действительно... можно на маусдаун начинать по ентерфрейм рисовать линии от начальной до текущей точки... если они отличаются... в итоге если быстро мышкой не елозить то будет плавная линия, а если быстро, то и в видимых мною до этого редакторах она становится ломаной.
Это нормальный подход? |
вы спрашивали про овал, и ответ про него получили. кривые рисуются спомощью MovieClip.curveTo().
|
я уже не помню, в чем была проблема но вот самый простой код наверно
Код:
var down:Boolean = false; |
Во блин! Оно. Вот это мне и надо :) По сути.. здесь так и есть... как я предположил.. на маусдаун начинаем циклично (правда здесь не на ентерфрейм, а на маусмув, что логичнее) рисовать прямые до текущей точки :)
Все намного проще, чем я думал :) Спасибо всем :) |
забавно выходит если заменить
_root.lineStyle(3, Number(Math.round(Math.random()*16777215))); на _root.lineStyle(Math.random()*5, Number(Math.round(Math.random()*16777215))); -------------- пиши на мыло если нужно еще что-то из параметров подогнать, я щас тоже рисовалкой занимаюсь. |
Ну рисовать програмно проще сначало в векторе а потом с помощью draw всё кидать в BitmapData ... вот тут немного о рисовании
|
to AlexSol:
Ага.. еще 5-чку заменить на 15 :) Напишу, если что :) Спасибо :) Правда.. основной вопрос у меня был именно в том, как рисовать... я даже не представлял как это делать. Оказалось все неимоверно просто :) А как к остальному подойти вроде представляю. to KUZEN Так и предполагаю сделать. За ссылку спасибо, пойду почитаю. |
| Часовой пояс GMT +4, время: 15:09. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.