PDA

Просмотр полной версии : Граф редактор на флеш


SvTol
12.10.2007, 10:01
Есть желание сделать простую рисовалку на флеш с сохранением нарисованного в png например. (так сделано вконтакте)
Пример рисовалки вроде нашел. А вот как можно сохранить то что нарисовано?

Mr. Fixit
12.10.2007, 10:04
сохраняешь с помощью пхп-скрипта.

etc
12.10.2007, 10:16
http://ink.envisionext.com/swf2png/

SvTol
12.10.2007, 11:11
пасибо дальше я сам. :)

и ещё вопрос как сделать выбор цвета?
есть подозрение что есть какое то средство встроеное что бы не рисовать квадратики с цветом.

screamge
12.10.2007, 12:24
Есть класс Дембицкого, GradientAndSafePalette.as (http://sharedfonts.com/dembicki_org/GradientAndSafePalette.as)

etc
12.10.2007, 12:58
Да, осталось все соединить в AS3 =)

SvTol
12.10.2007, 12:59
воо.. терь главно допереть че с ним делать :)

screamge
12.10.2007, 13:05
Там в файле русскоязычное описание и пример использования есть.

SvTol
12.10.2007, 13:15
ну по поводу русскоязычного, вы ошибаетесь а что есть то есть.
да вроде несложно все.

screamge
12.10.2007, 13:22
Да, осталось все соединить в AS3 =)
Ну или Дембицкого переписать :)

Wolsh
12.10.2007, 16:38
Привет земляк. Как-то делал вот такую штуку, понравится - дарю.

etc
12.10.2007, 18:20
Ну или Дембицкого переписать :)
Ваню сложно переписать, а вот класс — без проблем.

SvTol
12.10.2007, 20:27
Привет земляк. Как-то делал вот такую штуку, понравится - дарю.
благодарю.

SvTol
12.10.2007, 22:28
мне кстати просто палитра нужна была а не градиент выбора цвета, хотя и он думаю пригодится

screamge
12.10.2007, 22:30
Ваню сложно переписать, а вот класс — без проблем.


Не придератесь к словам товарищь модератор :)

SvTol
13.10.2007, 20:58
так с палитрой разобрался... с тем как обрабатывать выбор цвета тоже.
возник другой вопрос: как изменить цвет объекта нримованного не программно.
т.е. есть символ brush в нем нарисован круг. нужно его типа покрасит в цвет выбранный в колопикере

Wolsh
13.10.2007, 22:33
всё тотже Color.setRGB(), тебе ведь не нужны в этом круге другие оттенки?

SvTol
16.10.2007, 20:01
все отлично, все сделал, но теперь возник вопро а можно ли сделать кнопку отмены?
т.е. отменить рисование последней линии?

Wolsh
16.10.2007, 20:14
Для такого дела тебе придется каждую линию помещать на "слой", т.е. создавать отдельный новый мувик при нажатии на кисть. А потом можно удалять сколько хочешь, но в одну сторону :) Хотя... Если как в фотошопе хочешь, можно не удалять, а делать прозрачными и записать в массив, какие хотели удалить. И если перестали играться с ctrlZ-ctrlY, нажали чтото другое - тогда всех кто в этом массиве - удалить.

SvTol
16.10.2007, 20:44
ну так то я и сам знаю что можно, но так сложно, и сохранение в пнг не уверен что будет работать...
лана нет так нет. :)

SvTol
06.11.2007, 18:53
http://ink.envisionext.com/swf2png/
блин. вроде код сохранения не менял но под линуксом не пашет. ПНГ пустой. Исходник пашет.
Может есть у кого соображения в чем может быть трабла?

etc
06.11.2007, 20:23
Там что-то с Filedata, в общем баг.

SvTol
07.11.2007, 07:30
исходная функция:
function sendImage(event:Event){
var data_bmp:BitmapData = new BitmapData(avatar_mc.width,avatar_mc.height);
data_bmp.draw(avatar_mc);
var png_image_data:ByteArray = PNGEnc.encode(data_bmp);
// png_image_data - это и есть наша картинка
var url_req:URLRequest = new URLRequest("http://127.0.0.1/img_create.php");
url_req.data = png_image_data; // назначаем объект который будем передавать на сервер
url_req.method = URLRequestMethod.POST;
var rhArray:Array = new Array(new URLRequestHeader("file_name", "my_avatar.png"));
url_req.requestHeaders = rhArray; // добавляем в заголовок имя файла под которым мы сохраним картинку (как сделать по дуругому так и не придумал...)
url_req.contentType = 'application/octet-stream';
flash.net.navigateToURL(url_req, "_blank");// отправляем на сервер и открываем результат в новом окне.
}
моя функция:
function sendImage(event:Event) {
var data_bmp:BitmapData = new BitmapData(avatar_mc.oblast.width,avatar_mc.oblast.height);
//trace();
data_bmp.draw(avatar_mc,null,null,null,avatar_mc.oblast);
var png_image_data:ByteArray = PNGEncoder.encode(data_bmp);

trace(png_image_data.length);
var ld:Loader=new Loader();
ld.loadBytes(png_image_data);
ld.x = 0;
ld.y = 0;
addChild(ld);

//
var url_req:URLRequest = new URLRequest("/grafiti/img_create.php");
url_req.data = png_image_data;
url_req.method = URLRequestMethod.POST;

var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
url_req.requestHeaders.push(header);
//trace(url_req);
navigateToURL(url_req, "_self");
}

etc
07.11.2007, 08:36
Ну и зачем надо было править и ломать код?

SvTol
07.11.2007, 14:13
ну нада было...
да и пломать то глобально ниче не поломал

etc
07.11.2007, 14:23
В общем, это проблема линуксовой версии флеш-плеера.

SvTol
13.11.2007, 20:59
В общем, это проблема линуксовой версии флеш-плеера.
да как бы не так...
в исходном варианте все пашет..

data_bmp.draw(avatar_mc,null,null,null,avatar_mc.oblast);
а было
data_bmp.draw(avatar_mc);

думаю в этом и трабла...а можно как то отследить в какой ОС находимся?

м ещё вопрос, делаю несколько раз:
child = new Shape();
avatar_mc.addChild(child);
терь хочу удалит все нафиг с avatar_mс. как?
child.graphics.clear(); - удаляет только последнее нарисованное.