Flashhilfe.de - Flash Community

prima drucken, aber dann wird der screen weiss [Flash 10]

 


AntwortenRegistrieren Seite1  

Griepto#1
Benutzerbild von Griepto
Beiträge: 41
Wohnort: Berlin
Registriert: Jan 2009

11.02.2009, 22:33

Moin all,
mit dem folgenden script kann ich zwar hervorragend drucken,
aber danach ist der screen weiss als hätte sich der .swf file irgendwo in einen
leeren frame verzogen. Kennt jemand dieses Phänomen?

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function mausHorch4(evt:MouseEvent):void {
   //Druckfunktion einrichten
   
      var ausdruck:PrintJob = new PrintJob();
      if (ausdruck.start()) {
           if (ausdruck.orientation == PrintJobOrientation.PORTRAIT) {
          this.rotation = 90;
           }
      trace(ausdruck.pageHeight);
      trace(ausdruck.pageWidth);
      var pjo:PrintJobOptions = new PrintJobOptions();
      pjo.printAsBitmap = true;
      this.scaleY = .85;
      this.scaleX = .85;
      ausdruck.addPage(this, new Rectangle(0, -45, 960, 660), pjo, 11);
      ausdruck.send();
      }
      ausdruck = null;
}
Zeit hat man dazu, wozu man Lust hat.
Griepto#2
Benutzerbild von Griepto
Beiträge: 41
Wohnort: Berlin
Registriert: Jan 2009

Themenautor/in

16.02.2009, 21:33

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function tastenhorcher(evt:MouseEvent):void {
   //Druckfunktion einrichten
      var ausdruck:PrintJob = new PrintJob();
      if (ausdruck.start()) {
           if (ausdruck.orientation == PrintJobOrientation.PORTRAIT) {
          this.rotation = 90;
           }
      var pjo:PrintJobOptions = new PrintJobOptions();
      pjo.printAsBitmap = true;
      this.scaleY = .85;
      this.scaleX = .85;
      try {
         ausdruck.addPage(this, new Rectangle(0, 10, 960, 610),pjo,20);
         }
         catch(e:Error) {
           trace ("fehler");
           }
      ausdruck.send();
      }
      ausdruck = null;
}

So ich habe das noch mal verfeinert. Wie gesagt, druckt prima nur danach ist der movie entladen und der screen leer.
Zeit hat man dazu, wozu man Lust hat.
Geändert von Griepto am 16.02.09 um 21:35 Uhr
niquito12#3
Benutzerbild von niquito12
Beiträge: 901
Wohnort: Nether-Bavaria
Registriert: Jun 2008

17.02.2009, 17:46

Warum das so ist kann ich dir leider nicht sagen, aber du könntest versuchen per Stage.invalidate() die Bühnenobjekte neu zu zeichnen.
Qt! www.adrianslaboratory.net
Griepto#4
Benutzerbild von Griepto
Beiträge: 41
Wohnort: Berlin
Registriert: Jan 2009

Themenautor/in

17.02.2009, 21:15

ich habe mich jetzt eine ganze Weile mit der invalidate() Methode beschäftigt.
Nur wie soll ich damit umgehen, als draw Ersatz (render function),
oder um das Entladen der stage zu verhindern?
Hier entlädt sich der screen nicht mehr, aber dafür wird auch nix gedruckt:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function tastenHorch(evt:MouseEvent):void {
   //Druckfunktion einrichten
   var kopie:BitmapData = new BitmapData(960,560,true, 0xFFFFFFFF);
      kopie.draw(this);
      var wirdGedruckt:Sprite = new Sprite();
      wirdGedruckt.addChild(new Bitmap(kopie));
      
      var ausdruck:PrintJob = new PrintJob();
      if (ausdruck.start()) {
           if (ausdruck.orientation == PrintJobOrientation.PORTRAIT) {
             wirdGedruckt.rotation = 90;
           }
      var pjo:PrintJobOptions = new PrintJobOptions();
      pjo.printAsBitmap = true;
      wirdGedruckt.scaleY = .85;
      wirdGedruckt.scaleX = .85;
      try {
         ausdruck.addPage(wirdGedruckt, new Rectangle(0, 10, 960, 610),pjo);
         }
         catch(e:Error) {
           trace ("fehler");
           }
      ausdruck.send();
      
      }
      
      ausdruck = null;
   
}
Zeit hat man dazu, wozu man Lust hat.
Geändert von Griepto am 17.02.09 um 21:25 Uhr
niquito12#5
Benutzerbild von niquito12
Beiträge: 901
Wohnort: Nether-Bavaria
Registriert: Jun 2008

18.02.2009, 09:09

Ich würd es nach
ActionScript:
1ausdruck = null;
einfügen. versuchs doch mal.
Qt! www.adrianslaboratory.net
Griepto#6
Benutzerbild von Griepto
Beiträge: 41
Wohnort: Berlin
Registriert: Jan 2009

Themenautor/in

18.02.2009, 09:45

Aehem
ActionScript:
1stage.invalidate();

ist wie immer alles schön weiss,
beziehungsweise mit der per
ActionScript:
1draw(this)
erzeugten Kopie
wird auch nix gedruckt.
Hast Du vielleicht ein klitzekleines Beispiel?
Am schlimmsten ist ja das entladen der stage, nach dem Absenden des Druckauftrags.
Wenn man das vermeiden könnte wäre ja alles prima.

Der workaround mit der erzeugten Kopie ist nicht wirklich optimal,
da ja eigentlich
ActionScript:
1ausdruck.addPage(this, new Rectangle(0, 10, 960, 610),pjo,20);

eine prima Sache wär.
Zeit hat man dazu, wozu man Lust hat.
niquito12#7
Benutzerbild von niquito12
Beiträge: 901
Wohnort: Nether-Bavaria
Registriert: Jun 2008

18.02.2009, 10:04

Wenn das auch nicht funktioniert bin ich mit meinem Latein am Ende ohne tiefer zu forschen.

Aber es gibt da ein gutes Tutorial, das das ausführlichst behandelt ( Hier )
Qt! www.adrianslaboratory.net
Geändert von niquito12 am 18.02.09 um 10:05 Uhr
Griepto#8
Benutzerbild von Griepto
Beiträge: 41
Wohnort: Berlin
Registriert: Jan 2009

Themenautor/in

18.02.2009, 10:16

super, das ist genau das was ich brauch,
tausend dank,
wenn ich das Problem gelöst habe poste ich die funktionierende Version
Zeit hat man dazu, wozu man Lust hat.
niquito12#9
Benutzerbild von niquito12
Beiträge: 901
Wohnort: Nether-Bavaria
Registriert: Jun 2008

18.02.2009, 10:48

Sehr schön :) Das würde mich nämlich auch interessieren!
Qt! www.adrianslaboratory.net
Griepto#10
Benutzerbild von Griepto
Beiträge: 41
Wohnort: Berlin
Registriert: Jan 2009

Themenautor/in

18.02.2009, 11:27

Das Problem besteht also eigentlich nicht im Drucken, sondern erfolgreich kopierten content an den Sprite zu übergeben.
Dem Sprite kann ich ja auch einzelne mc übergeben nur verschwinden diese dann von der Stage
und werden noch nicht mal gedruckt.
Zeit hat man dazu, wozu man Lust hat.
niquito12#11
Benutzerbild von niquito12
Beiträge: 901
Wohnort: Nether-Bavaria
Registriert: Jun 2008

18.02.2009, 13:14

Es könnte sein, dass du die Dimensionen nicht gesetzt hast.

Teste mal ob folgendes etwas ändert.

ActionScript:
1
2
3
4
var wirdGedruckt:Sprite = new Sprite();
wirdGedruckt.addChild(new Bitmap(kopie));
wirdGedruckt.width = kopie.width;
wirdGedruckt.height = kopie.height;
Qt! www.adrianslaboratory.net
Griepto#12
Benutzerbild von Griepto
Beiträge: 41
Wohnort: Berlin
Registriert: Jan 2009

Themenautor/in

18.02.2009, 20:34

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function tastenschnuff4(evt:MouseEvent):void {
   //Druckfunktion einrichten
   
      var kopie:BitmapData = new BitmapData(960,560,true, 0xffffff);
      var druckBereich:Rectangle = new Rectangle(0, 10, 960, 610);
      kopie.draw(this);
      var wirdGedruckt:Sprite = new Sprite();
      wirdGedruckt.addChild(new Bitmap(kopie));
      wirdGedruckt.width = kopie.width;
      wirdGedruckt.height = kopie.height;
      
      var ausdruck:PrintJob = new PrintJob();
      if (ausdruck.start()) {
           if (ausdruck.orientation == PrintJobOrientation.PORTRAIT) {
             wirdGedruckt.rotation = 90;
           }
      var pjo:PrintJobOptions = new PrintJobOptions();
      pjo.printAsBitmap = true;
      wirdGedruckt.scaleY = .85;
      wirdGedruckt.scaleX = .85;
      try {
         ausdruck.addPage(wirdGedruckt,druckBereich,pjo);
         }
         catch(e:Error) {
           trace ("fehler");
           }
      ausdruck.send();
      
      }
      
      ausdruck = null;
      stage.invalidate();

}

Danke für den Hinweis, aber damit hatte ich schon experimentiert,
es ist noch irgendeine Kleinigkeit, grummel...
Zeit hat man dazu, wozu man Lust hat.
Griepto#13
Benutzerbild von Griepto
Beiträge: 41
Wohnort: Berlin
Registriert: Jan 2009

Themenautor/in

20.02.2009, 10:31

So, Problem gelöst.
und zwar wie folgt:
1. von dem zu druckenden Bereich eine Kopie machen
2. auf die Stage laden (das hatte ich nicht gemacht und deshalb wurde auch nichts gedruckt
3. drucken
Mit dem send() wird automatisch die Kopie von der Stage gelöscht
und man kann im drunter liegenden Hauptfilm weiterarbeiten.
Hier noch mal das Machwerk:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function tastenHorch(evt:MouseEvent):void {
   //Druckfunktion einrichten
      var kopie:BitmapData = new BitmapData(960,560,true, 0xffffff);
      var druckBereich:Rectangle = new Rectangle(0, 10, 960, 610);
      kopie.draw(this, null, null, null, druckBereich, true);
      var wirdGedruckt:Sprite = new Sprite();
      wirdGedruckt.addChild(new Bitmap(kopie));
      wirdGedruckt.width = kopie.width;
      wirdGedruckt.height = kopie.height;
      stage.addChild(wirdGedruckt);
      
      var ausdruck:PrintJob = new PrintJob();
      if (ausdruck.start()) {
           if (ausdruck.orientation == PrintJobOrientation.PORTRAIT) {
             wirdGedruckt.rotation = 90;
           }
      var pjo:PrintJobOptions = new PrintJobOptions();
      pjo.printAsBitmap = true;
      wirdGedruckt.scaleY = .85;
      wirdGedruckt.scaleX = .85;
      try {
         ausdruck.addPage(wirdGedruckt,druckBereich,pjo);
         }
         catch(e:Error) {
           trace ("fehler");
           }
      ausdruck.send();
      }   
      ausdruck = null;
}
Zeit hat man dazu, wozu man Lust hat.
niquito12#14
Benutzerbild von niquito12
Beiträge: 901
Wohnort: Nether-Bavaria
Registriert: Jun 2008

20.02.2009, 11:01

Wunderbar, ich danke recht herzlich!
Qt! www.adrianslaboratory.net

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2021 Sebastian Wichmann - Flashhilfe.de