Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-08-2011, 15:20   #1 (permalink)
TotalBeginner
 
Registriert seit: Jun 2009
Beiträge: 3
Question Bitmap und Filereference

Hallo Flasher !

ich hoffe einer von euch kann mir weiter helfen...?
Ich habe mich die letzten Jahre schwerpunktmäßig in 3D entwickelt, weshalb ich den AS3-Hype quasi verpasst habe
Habe Folgende Herausforderung:
Ich möchte eine Offline-Presentation (auf CD) als Projektor erstellen, mit der Funktion das dynamisch geladene Bilder (per XML) aus der Flash-Gallerie abzuspeichern aber auch zu Drucken. Dies ist mir als Basis gelungen, da ich aber Quer- und Hochformatbilder habe speichert mir die Scriptversion bei Hochformat den zusätlichen "Space" links und rechts vom MC mit ab: also ein Screenshot so zu sagen. Genauso verhält es sich bei Printjob.
Gibt es überhaupt die möglichkeit in Flash diese Bilder "nativ" zu händeln, oder noch besser: Sich an die Originale Bilddaten zu orientieren/ aufzurufen zum abspeichern und drucken?

Hier die AS:

Code:
import com.flashotaku.slideshow.events.SlideshowEvent;
import flash.events.MouseEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;

var myTimer:Timer = new Timer(1500);
var urlRequest:URLRequest = new URLRequest("images1.xml");
var urlLoader:URLLoader = new URLLoader(urlRequest);
var total:int;

urlLoader.addEventListener(Event.COMPLETE, onXmlComplete);

function onXmlComplete(event:Event)
{
	var xmlList:XMLList;
	var xml:XML = new XML(event.target.data);
	total = xml.children().length();
}

mySlideshow.addEventListener(SlideshowEvent.SLIDE_INIT, slideInitHandler);

function slideInitHandler(event:SlideshowEvent)
{
	dText.text = (event.slide.id +1) + "  /  " + total;
}

start.addEventListener(MouseEvent.CLICK, startHandler);
pause.addEventListener(MouseEvent.CLICK, pauseHandler);
prev.addEventListener(MouseEvent.CLICK, prevHandler);
next.addEventListener(MouseEvent.CLICK, nextHandler);

function startHandler(event:MouseEvent)
{
	if(!myTimer.hasEventListener(TimerEvent.TIMER))
	{
		myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
		myTimer.start();
	}
}

function timerHandler(event:TimerEvent)
{
	myTimer.stop();
	myTimer.removeEventListener(TimerEvent.TIMER, timerHandler);
	mySlideshow.nextImage();
	if(!mySlideshow.hasEventListener(SlideshowEvent.TRANSITION_COMPLETE))
	{
		mySlideshow.addEventListener(SlideshowEvent.TRANSITION_COMPLETE, completeHandler);
	}
}

function completeHandler(event:SlideshowEvent)
{
	myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
	myTimer.start();
}

function pauseHandler(event:MouseEvent)
{
	stopTimer();
}

function prevHandler(event:MouseEvent)
{
	stopTimer();
	mySlideshow.prevImage();
}

function nextHandler(event:MouseEvent)
{
	stopTimer();
	mySlideshow.nextImage();
}

function stopTimer()
{
	if(myTimer.hasEventListener(TimerEvent.TIMER))
	{
		myTimer.stop();
		myTimer.removeEventListener(TimerEvent.TIMER, timerHandler);
	}
	
	if(mySlideshow.hasEventListener(SlideshowEvent.TRANSITION_COMPLETE))
	{
		myTimer.stop();
		mySlideshow.removeEventListener(SlideshowEvent.TRANSITION_COMPLETE, completeHandler);
	}
}


//////////////////////////////////////
// Flash File saving and image encoding example.
// www.permadi.com
// (C) F. Permadi
//////////////////////////////////////


// You can get the latest JPGEncoder from here:
// http://github.com/mikechambers/as3corelib/tree/master/src/com/adobe/images/
import com.adobe.images.JPGEncoder;
import com.adobe.images.PNGEncoder;

function onSavePictureButtonClicked(event:MouseEvent):void
{
    var bitmapData:BitmapData = new BitmapData(mySlideshow.width, mySlideshow.height);
    bitmapData.draw(mySlideshow, this.transform.matrix, null, null, null, true);
	
	var jpgEncoder:JPGEncoder = new JPGEncoder(quality_slider.value);
	var byteArray:ByteArray = jpgEncoder.encode(bitmapData);

	byteArray = PNGEncoder.encode(bitmapData);
	
	var fileReference:FileReference=new FileReference();
	fileReference.save(ByteArray, "Bild.jpg"); 				
}

// Initialize jpeg quality
quality_slider.minimum=0;
quality_slider.maximum=100;
quality_slider.value=100;


///////////////////////////
// DRAWING CODE BEGIN
///////////////////////////
/// omitted
///////////////////////////
// DRAWING CODE END
///////////////////////////

// Add button handler
btn_save.addEventListener(MouseEvent.CLICK, onSavePictureButtonClicked);

// Add Print handler

//File downloaded from www.riacodes.com

print_btn.addEventListener(MouseEvent.CLICK,printContent);

function printContent(evt:MouseEvent) {
	var printJob:PrintJob = new PrintJob();
	
	if (printJob.start()) {
		
		if (mySlideshow.width>printJob.pageWidth) {
			mySlideshow.width=printJob.pageWidth;
			mySlideshow.scaleY=mySlideshow.scaleX;
		}
		
		printJob.addPage(mySlideshow);
		printJob.send();
		/* Delete job from memory */
        printJob = null;
	}
}
d-artinstinct ist offline   Mit Zitat antworten
Alt 20-08-2011, 15:52   #2 (permalink)
Neuer User
 
Benutzerbild von padavan
 
Registriert seit: Apr 2002
Beiträge: 496
hab jetzt nur ganz kurz drübergeschaut - aber das gepostete skript verrät nicht viel über die struktur von mcSlideshow - und hier dürfte das problem liegen, denn das gespeicherte bitmap bildet diesen movieclip komplett ab

du kannst natürlich auch die BitmapData des Loaders direkt wieder encoden und speichern (verstehe den zweck noch nicht ganz , aber macht ja nix )
__________________
Grafik - Webdesign - Programmierung - www.thsc.at
Adventkalender 2011 advent.wien.info/de
Jobspace - Universum der Lehrstellen www.jobspace.at
padavan ist offline   Mit Zitat antworten
Alt 20-08-2011, 16:21   #3 (permalink)
TotalBeginner
 
Registriert seit: Jun 2009
Beiträge: 3
Hallo Padavan,

die Flash-Gallerie ist von "Flashotaku", der es freundlicherweise in seinem Blog zur verfügung gestellt hat. Falls Du dir das mal ansehen möchtest, hier zunächst mal die FLA, im zweiten Post den Rest der Datei:
Angehängte Dateien
Dateityp: fla Gallerie01_TEMP2.fla (748,8 KB, 1x aufgerufen)
d-artinstinct ist offline   Mit Zitat antworten
Alt 20-08-2011, 16:28   #4 (permalink)
Neuer User
 
Benutzerbild von padavan
 
Registriert seit: Apr 2002
Beiträge: 496
ich hab dazu jetzt nicht die muse - sry

aber du weißt wo du ansetzen musst - und vielleicht mag sich's ja wer anderer anschauen
noch ein hinweis - es wird in der slideshow irgendwo einen container oder verweis auf die bilddaten geben - den musst du verwenden
__________________
Grafik - Webdesign - Programmierung - www.thsc.at
Adventkalender 2011 advent.wien.info/de
Jobspace - Universum der Lehrstellen www.jobspace.at
padavan ist offline   Mit Zitat antworten
Alt 20-08-2011, 16:29   #5 (permalink)
TotalBeginner
 
Registriert seit: Jun 2009
Beiträge: 3
Sorry Hier noch mal alle Dateien:

http://d-artinstinct.de/Temp/DATA.zip
d-artinstinct ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
as3, bitmapdata, filereference, printjob, xml gallery

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
new FileReference(); thiagojonas ActionScript 3 2 05-07-2009 19:05
Bitmap Alpha in Bitmap kopieren LePeng ActionScript 3 1 04-03-2008 13:52
Bitmap zu Bitmap nach Farben kopieren? Sven_TK Flash 8 4 15-02-2008 19:14
FileReference und asp.net Linowitch Flash 8 2 27-06-2007 12:58
Transparentes Bitmap mit copyPixel in anders Bitmap kopieren erbsenknie ActionScript 3 4 30-01-2007 14:13


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:16 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele