Печать Flex 4 путем добавления динамических элементов в область печати (AKA. Как добавить элементы с динамическим именем в другой элемент на лету) - PullRequest
0 голосов
/ 01 ноября 2011

У меня есть несколько предметов, которые я добавляю на сцену динамически.

Они называются flexShapeXXX, где xxx обычно является уникальным идентификатором.

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

Это выглядит так:

    <?xml version="1.0"?>
<!-- myComponents\MyPrintView.mxml -->
<mx:VBox xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         backgroundColor="#FFFFFF" 
         height="300" width="500" 
         paddingTop="50" paddingLeft="50" paddingRight="50">


</mx:VBox>

Теперь, пока все хорошо, я возьму свой маленький отпечаток, составляющий vbox:

var formPrintView:MyPrintView = new MyPrintView();
formPrintView.width = printJob.pageWidth - 50;
formPrintView.height = printJob.pageHeight - 50;    
addElement(formPrintView);

Это прекрасно работает, добавляет хорошее пространство для работы.

Теперь я хочу иметь возможность сделать что-то вроде этого:

formPrintView.addElement(dashPreview["flexShape" + TheID]);
printJob.addObject(formPrintView);

Эта часть не работает.

Так что мой вопрос в том, как мне добавлять дополнения со сцены через динамические имена. Чтобы я мог их напечатать.

Пожалуйста, и спасибо за любую помощь, которую вы можете предложить.

Craig

1 Ответ

0 голосов
/ 01 ноября 2011

Можете ли вы попробовать мое решение ниже и дайте мне знать, если оно не работает. Предположим, у вас есть компонент пользовательского интерфейса: Page1

var page1:VBox = new VBox();

// Convert class name to Class object.
var cls:Class = getDefinitionByName(page1) as Class;
// Create a new instance of the class.
var instance:UIComponent = new cls();

var formPrintView:MyPrintView = new MyPrintView();
formPrintView.width = printJob.pageWidth - 50;
formPrintView.height = printJob.pageHeight - 50;   
formPrintView.addElement(instance);
printJob.addObject(formPrintView);
...