Печать видеоролика в AS3 (Flash CS3) - PullRequest
1 голос
/ 01 июня 2011

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

По сути, мы пытаемся напечатать видеоклип, содержащий графику, нарисованную пользователем. У нас есть прямоугольник, который служит холстом, и некоторые рисунки могут быть за пределами этого холста. То, что мы пытаемся сделать, это напечатать только то, что находится на холсте, который не начинается с (0,0). Размер холста также должен быть изменен перед печатью для правильного размещения на бумаге.

Нам было интересно, есть ли у кого-нибудь решение для этого? Мы пробовали много разных вещей, но они всегда либо обрезаются, либо имеют неправильный размер, либо даже неправильно растягиваются.

Вот наш супер грязный код!

    function startPrint(evnt: Event) {
printJob = new PrintJob();
var xNumber:Number = allGraphic.x; //saving the original x-value of the movieclip
var yNumber:Number = allGraphic.y; //saving y
var wNumber:Number = allGraphic.width; //saving width
var hNumber:Number = allGraphic.height; //saving height
var rect:Rectangle = new Rectangle (0,0,0,0); //printArea

var sucess = printJob.start();

if (sucess) {
if (printJob.orientation == PrintJobOrientation.LANDSCAPE) {
//allGraphic.rotation = 90;
rect.x = 115;
rect.y = 107;
rect.width = 792;
rect.height = 576;
allGraphic.width = 792;
allGraphic.height = 576;
} //end if (landscape)
             else {
rect.x = 110; //x coor of the printArea rectangle
rect.y = 85; //y coor
rect.width = 875; //width of printArea
rect.height = 475; // height of printArea
allGraphic.width = allGraphic.width *(576/wNumber); //scale the movieclip width (with the drawing)
allGraphic.height = allGraphic.height * (396/hNumber); // height scaling    
}//end else

printJob.addPage (allGraphic, rect);
}//end

 if success

//reset allGraphic back to original size
allGraphic.x = xNumber;
allGraphic.y = yNumber;
allGraphic.width = wNumber;
allGraphic.height = hNumber;
}

1 Ответ

1 голос
/ 01 июня 2011

Проблема связана с использованием allGraphic.width.Это полная ширина области рисования, включая перекрытия негатива и позитива.Вы также должны использовать scaleX и scaleY вместо установки ширины и высоты для масштабирования (возврат - это только вызов scaleX = scaleY = 1).

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

...