PDA

Просмотр полной версии : Векторная графика -> ActionScript


intangi
24.06.2008, 16:47
Есть ли программа/скрипт/возможность конвертировать созданую в Adobe Flash редакторе векторную графику в ActionScript 2/3 код с использованием Drawing-API?

к примеру из нарисованной на stage окружности получается:
...
graphics.lineStyle(5);
graphics.drawCircle(0,0,100);
...

divinus
24.06.2008, 18:17
сталкивался с такой проблемой но давно, поэтому не помню где взял данный скрипт (jsfl):
var arrayContours = fl.getDocumentDOM().selection[0].contours;
var numContours = arrayContours.length;
var strTrace = "";



strTrace += "[\n";

while (numContours --) {
var objContour = arrayContours[numContours];
var objHalfEdge = objContour.getHalfEdge();
var numStartID = objHalfEdge.id;
var numID = 0;

if (objContour.interior) {
continue;
}

strTrace += "[\n";

while (numID != numStartID) {
var edge = objHalfEdge.getEdge();
var vertex = objHalfEdge.getVertex();
var numAnchorX = vertex.x;
var numAnchorY = vertex.y;
var numControlX = edge.getControl(1).x;
var numControlY = edge.getControl(1).y;

strTrace += "[" + numControlX + ", " + numControlY + ", " + numAnchorX + ", " + numAnchorY + "],\n";
// [numControlX, numControlY, numAnchorX, numAnchorY]

objHalfEdge = objHalfEdge.getNext();
numID = objHalfEdge.id;
}
strTrace += "],\n";
}

strTrace += "]";
strTrace = strTrace.split("],\n]").join("]\n]");
strTrace = strTrace.split("],\n]").join("]\n]");

fl.trace(strTrace);
он выводит координаты всех опорных точек любого shape-а, надеюсь не надо описывать как пользоваться скриптом? думаю fl.getDocumentDOM().selection[0] красноречиво говорит об этом...
еще раз упоминаю, скрипт писал не я, но источник просто не помню...

intangi
24.06.2008, 21:46
спасибо за скорый ответ, но это даже не половина решения.

то, что скрипт выдает координаты shape-ов в форме:

[numControlX, numControlY, numAnchorX, numAnchorY]

... конечно дает возможность воспроизвести контур с помощью curveTo(), только вот толку с этого мало и лишь усложняет задачу.

(надо бы почитать про формат swf...)

wvxvw
25.06.2008, 09:06
Если для АС2, то можно Flasm/SWFMill попробовать, они оба умели сохранять SWF в виде XML и вроде помнится шейпы по точкам тоже...

intangi
25.06.2008, 16:32
опробовал swfmill - это уже есть та самая половина решения :) остается "всего-лишь" xslt написать. К тому же прочел SWF File Format Specification (занятное чтиво, между прочим) и окончательно пришел к выводу, что с drawCircle из вопроса выше я несколько перегнул: все шейпы описываются через path состоящем из straight и curved edges.