Сохраните Java2D к SWF (флэш-память)

Просто ничего не делайте и удалите ваш setViewForPopups вызов. Это не обязательно.

7
задан wburke 5 November 2008 в 22:38
поделиться

6 ответов

Я просто заставил пример работать с помощью объекта SpriteGraphics2D от Flex 3 Adobe. К вашему сведению... Flex 3 является теперь открытым исходным кодом.

(от SpriteGraphics2D javadoc), SpriteGraphics2D является определенной реализацией SWF Java2D Graphics2D API. Вызовы к этому классу преобразовываются в TagList, который может использоваться для построения Sprite SWF.

Я понял это путем рассмотрения этих двух классов CubicCurveTest.java и SpriteTranscoder.java.

Эти только две банки должны были работать, этот пример swfutils.jar и batik-awt-util.jar, который может быть загружен здесь.

Вот мой пример кода...

     // Create the SpriteGraphics2D object
     SpriteGraphics2D g = new SpriteGraphics2D(100, 100);

     // Draw on to the graphics object
     Font font = new Font("Serif", Font.PLAIN, 16);
     g.setFont(font);         
     g.drawString("Test swf", 30, 30);         
     g.draw(new Line2D.Double(5, 5, 50, 60));
     g.draw(new Line2D.Double(50, 60, 150, 40));
     g.draw(new Line2D.Double(150, 40, 160, 10));

     // Create a new empty movie
     Movie m = new Movie();
     m.version = 7;
     m.bgcolor = new SetBackgroundColor(SwfUtils.colorToInt(255, 255, 255));
     m.framerate = 12;
     m.frames = new ArrayList(1);
     m.frames.add(new Frame());
     m.size = new Rect(11000, 8000);

     // Get the DefineSprite from the graphics object
     DefineSprite tag = g.defineSprite("swf-test");

     // Place the DefineSprite on the first frame
     Frame frame1 = (Frame) m.frames.get(0);
     Matrix mt = new Matrix(0, 0);
     frame1.controlTags.add(new PlaceObject(mt, tag, 1, null));

     TagEncoder tagEncoder = new TagEncoder();
     MovieEncoder movieEncoder = new MovieEncoder(tagEncoder);
     movieEncoder.export(m);

     //Write to file
     FileOutputStream fos = new FileOutputStream(new File("/test.swf"));
     tagEncoder.writeTo(fos);
8
ответ дан 6 December 2019 в 21:21
поделиться

Мм, я знаю некоторые библиотеки, производящие содержание Flash, как или Ming или даже Haxe, язык, который может быть "переведен" в JavaScript, Flash или код PHP... Но я не знаю библиотеки Java.

Поиск немного (мне любопытно), я нашел, что коммерческая Библиотека Графика Java, вероятно, закрытый исходный код, Flash player в Java, библиотеки управляла Исходным кодом ActionScript или байт-кодом... А-ч, последние точки к JavaSWF2, который, как предполагается, может генерировать SWF. Я нашел также DrawSWF, который использует... Библиотека JavaSWF2 как бэкенд!

PS.: Также найденный Преобразовывают SWF. Обещание взглядов.

2
ответ дан 6 December 2019 в 21:21
поделиться

Это, вероятно, не то, что Вы ищете, но я добавлю его как предложение -

Вы рассмотрели то, чтобы заставлять Ваш Java произвести actionscript, чтобы потянуть векторы с помощью флэш-памяти, тянущей API и скомпилировать его в.SWF файл с помощью свободного гибкого провода as3 компилятор? Если Вы не пользуетесь библиотекой гибкого провода, она не включает ни одного из него. Ваш код Java просто произвел бы линии проведения, окруженные шаблоном для кода ActionScript.

Это делает Test.swf, который опускает квадрат и компилирует в 610 байтов для меня.

Если бы необходимо преобразовать на лету затем, это было бы медленно, но для предпреобразованных рисунков это было бы просто.

package{
  import flash.display.Sprite;

  public class Test extends Sprite{
    public function Test (){

      // Start of lines generated by your java
      graphics.lineStyle(1, 0, 1);
      graphics.lineTo(100, 0);
      graphics.lineTo(100, 100);
      graphics.lineTo(0, 100);
      graphics.lineTo(0, 0);
      // End of lines generated by your java
    }
  }
}
1
ответ дан 6 December 2019 в 21:21
поделиться

Flash обычно использует SVG в качестве своего собственного формата. Вы могли экспортировать в SVG и затем записать тривиальную программу Flash, чтобы встроить и отобразить изображение. Но почему Flash использования вообще? Большинство браузеров способно к отображению SVG в наше время.

Править: Я не знаю, почему я был downvoted для явно корректного ответа. Я могу понять не быть upvoted для того, чтобы не иметь лучший ответ (я полностью подтверждаю, что этот soltuion не идеален), но я действительно не думаю, что он заслуживает downvote. Можно консультироваться с разделом посреди этой страницы о встраивании SVG в программах Flex. Для тех из Вас, кто не знаком, Flex является инструментарием/библиотекой Adobe, который генерирует программы SWF, которые работают в нормальном Flash player. Многие (все?) нормального Flash библиотеки доступны ему. Это использует ActionScript. Для Вас сомневающиеся вот отрывок, показывающий точно, как Вы делаете это, скопированный с программы Flex, которую я записал. Это должно войти в файл MXML.

<mx:Script><![CDATA[

[Embed(source="../images/down.svg")]
[Bindable]
protected var drillDownImage:Class;

]]></mx:Script>

<mx:HBox width="50%" horizontalAlign="right">
    <mx:Image id="drillDownButton" source="{drillDownImage}" height="20" width="20" click="drillDown();" />
</mx:HBox>

Теперь все, что необходимо сделать, является переносом, что в соответствующем файле MXML, возможно, импортируйте некоторые пакеты средств управления для HBox и Тегов изображения, и Вы хороши для движения. Пример в ссылке, которую я предоставил, должен быть достаточным, чтобы Вы поняли это.

1
ответ дан 6 December 2019 в 21:21
поделиться

Насколько я знаю, что флэш-память не использует SVG вообще. Я нисколько не убежден, что ответ, упоминая это корректен. (Но я не могу только добавить это как комментарий, как я хотел к тому, поскольку у меня нет достаточного количества точек...),

0
ответ дан 6 December 2019 в 21:21
поделиться

Выезд Преобразовывает SWF. API занимает время для привыкания к, но он идет с некоторыми действительно полезными примерами для запущения Вас. Я использовал его сам, и это работает очень хорошо.

Мой совет состоял бы в том, чтобы пропустить SVG в целом как способ пойти от Java2D до SWF. SVG, который производит Батик, ведет себя очень плохо с решениями, я пытался импортировать SVG в Flash.

0
ответ дан 6 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: