• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flex und AIR > Flex allgemein

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-02-2010, 11:10   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 73
Question Funktion nach event aufrufen...

Hi zusammen,

ich versuche gerade einen Emailanhang Base64 zu codieren. Hierzu habe ich auch eine ganz gute App. in diesem Forum gefunden und bin dabei diese anzupassen.

Zur Zeit besteht die Funktion aus drei Buttons (Browse, Laden, Codieren), was etwas unpraktisch ist. Ich möchte gerne das die Funktionen Laden und Codieren direkt nach auswählen der Datei ausgeführt werden. Hat jemand eine Idee wie ich das anstellen kann?

Ich muss ja an sich nur sagen, dass wenn er die Funktion "browse" durchlaufen hat, er "load" und "dump" ausführen soll. Oder stelle ich mir das leichter vor als es ist?


Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" width="800" height="600">
	<mx:Script>
		<![CDATA[
			import mx.utils.Base64Encoder;
		
			[Bindable]
			private var fileRef:FileReference;
			
			private function browse():void
			{
				if (fileRef)
				{
					fileRef = null;
					txt.text = "";
				}
				fileRef = new FileReference();
				fileRef.browse();
			}
			
			private function load():void
			{
				fileRef.load();
			}
			
			private function dump():void
			{
				var bytes:ByteArray = fileRef.data;
				var encoder:Base64Encoder = new Base64Encoder();
				encoder.encodeBytes(bytes);
				txt.text = encoder.drain();
			}
			
			
		]]>
	</mx:Script>
	<mx:Button label="Browse" click="browse()"/>
	<mx:Button label="Laden" click="load()"/>
	<mx:Button label="Base64 konvertieren" click="dump()"/>
	<mx:TextArea id="txt" width="600" height="400"/> 
</mx:WindowedApplication>
Mole23 ist offline   Mit Zitat antworten
Alt 08-02-2010, 11:16   #2 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.271
Oha - schon mal was von "EventListener" gehört?


In diesem Falle
ActionScript:
  1. fileRef = new FileReference();
  2. fileRef.addEventListener(Event.SELECT, load);
  3. fileRef.browse();
  4.  
  5. private function load(event:Event):void
  6. {
  7. // tu Irgendwas
  8. }

Achja, ist die richtige Methode auf der File-instanz nicht "browseForOpen" ?
__________________
Mein Blog
Freue mich über jeden Besucher. :)

Geändert von Nico B. (08-02-2010 um 11:19 Uhr)
Nico B. ist offline   Mit Zitat antworten
Alt 08-02-2010, 11:18   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 73
ah danke!
Mole23 ist offline   Mit Zitat antworten
Alt 08-02-2010, 11:20   #4 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.271
Würde mir evtl. nen par Basics reinziehen, bevor Du anfängst irgendwelche Dateien zu codieren ^^
__________________
Mein Blog
Freue mich über jeden Besucher. :)
Nico B. ist offline   Mit Zitat antworten
Alt 08-02-2010, 11:21   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 73
Cool, habs hinbekommen! Jetzt verstehe ich auch wo für das Ding da ist!


Hab vielen Dank! Hast mich n großen Schritt voran gebracht!
Mole23 ist offline   Mit Zitat antworten
Alt 08-02-2010, 11:30   #6 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 73
Kannst du mir noch sagen was ich bei der Funktion dump falsch gemacht habe?


Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" width="800" height="600">
	<mx:Script>
		<![CDATA[
			import mx.utils.Base64Encoder;
		
			[Bindable]
			private var fileRef:FileReference;
			
			private function browse():void {
				
				if (fileRef) {
					fileRef = null;
					txt.text = "";
				}
				fileRef = new FileReference();
				fileRef.browse();
				
				fileRef.addEventListener(Event.SELECT, load);
			}
			
			private function load(event:Event):void
			{
				fileRef.load();
				fileRef.addEventListener(Event.SELECT, dump);
			}
			
			private function dump(event:Event):void
			{
				var bytes:ByteArray = fileRef.data;
				var encoder:Base64Encoder = new Base64Encoder();
				encoder.encodeBytes(bytes);
				txt.text = encoder.drain();
			}
			
			
		]]>
	</mx:Script>
	<mx:Button label="Browse" click="browse()"/>
	<mx:TextArea id="txt" width="600" height="400"/> 
</mx:WindowedApplication>
Mole23 ist offline   Mit Zitat antworten
Alt 08-02-2010, 11:37   #7 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.271
Ähm, ich glaube Du hast da was missverstanden.

Es gibt X verschiedene Arten von Events (eigentlich unendlich viele, da man sich selbst auch welche schreiben kann)


Event.SELECT ist nur sinnvoll, wenn du eben etwas "selectest", sprich auswählst. (Wie im Datei-öffnen Dialog)

In der "load" function macht SELECT aber überhaupt keinen Sinn!

Mit dem EventListener "horcht" man ja darauf, wann etwas passiert. Das kann ein Mausclick, ein Select oder auch ein fertiges Laden von einem Objekt sein.

Würde mir wirklich erstmal AS3-Basics reinziehen - Flex ist manchmal schon kompliziert genug. Da sollten EventListener mind. sitzen - Im Schlaf!


Achja, was soll in deiner "dump" function falsch sein? Oder wird sie, wie oben vermutet, gar nicht aufgerufen?
__________________
Mein Blog
Freue mich über jeden Besucher. :)

Geändert von Nico B. (08-02-2010 um 11:39 Uhr)
Nico B. ist offline   Mit Zitat antworten
Alt 08-02-2010, 11:44   #8 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 73
Exact! Wird garnicht ausgeführt! Wenn ich die über ein Button aufrufe geht diese. Also denke ich mal die wird nicht aufgerufen.
Mole23 ist offline   Mit Zitat antworten
Alt 08-02-2010, 11:54   #9 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.271
Kann ja nicht funktionieren^^

Wie oben bereits geschrieben, benutzt Du das 2. "SELECT" völlig falsch. Da findet kein Select statt - ergo wird auch keine Funktion aufgerufen.


Ich weiß jetzt nicht ausm Kopf wie file.load() genau funktioniert, aber irgendwie wirste da auch drauf "warten" können.

WOher hast Du die Scripte?
__________________
Mein Blog
Freue mich über jeden Besucher. :)
Nico B. ist offline   Mit Zitat antworten
Alt 08-02-2010, 11:56   #10 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 73
Habs mit COMPLETE hinbekommen... Aber THX nochmal!

Falls es jemand Quick and Dirty braucht:

Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" width="800" height="600">
	<mx:Script>
		<![CDATA[
			import mx.utils.Base64Encoder;
		
			[Bindable]
			private var fileRef:FileReference;
			
			private function browse():void {
				
				if (fileRef) {
					fileRef = null;
					txt.text = "";
				}
				fileRef = new FileReference();
				fileRef.browse();
				
				fileRef.addEventListener(Event.SELECT, load);
				
				fileRef.addEventListener(Event.COMPLETE, dump);
			}
			
			private function load(event:Event):void
			{
				fileRef.load();
				
			}
			
			private function dump(event:Event):void
			{
				var bytes:ByteArray = fileRef.data;
				var encoder:Base64Encoder = new Base64Encoder();
				encoder.encodeBytes(bytes);
				txt.text = encoder.drain();
			}
			
			
		]]>
	</mx:Script>
	<mx:Button label="Browse" click="browse()"/>
	<mx:TextArea id="txt" width="600" height="400"/> 
</mx:WindowedApplication>
Mole23 ist offline   Mit Zitat antworten
Alt 08-02-2010, 11:59   #11 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.271
Hatte es auch grad getestet - complete ist richtig.

Da ich mir gerade die Mühe gemacht habe es "nachzu scripten", wollte ich es mind. auch posten

ActionScript:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
  3.                        xmlns:s="library://ns.adobe.com/flex/spark"
  4.                        xmlns:mx="library://ns.adobe.com/flex/halo"
  5.                       
  6.                        creationComplete="init(event)"
  7.                        >
  8.     <fx:Script>
  9.         <![CDATA[
  10.             import flash.events.Event;
  11.             import flash.utils.ByteArray;
  12.            
  13.             import mx.events.FlexEvent;
  14.             import mx.utils.Base64Encoder;
  15.  
  16.            
  17.             private var _directory:File;
  18.            
  19.             protected function init(event:FlexEvent):void
  20.             {
  21.                 this._directory = new File();
  22.                 this._directory.addEventListener(Event.SELECT, fileSelect);
  23.                 this._directory.browseForOpen("Öffne mich");
  24.             }
  25.            
  26.            
  27.            
  28.             protected function fileSelect(event:Event):void
  29.             {
  30.                 this._directory.removeEventListener(Event.SELECT, fileSelect);
  31.                 this._directory.addEventListener(Event.COMPLETE, dump );
  32.                 this._directory.load();
  33.             }
  34.            
  35.             protected function dump(event:Event):void
  36.             {
  37.                 this._directory.removeEventListener(Event.COMPLETE, dump );
  38.                 var bytes:ByteArray = this._directory.data;
  39.                 var encoder:Base64Encoder = new Base64Encoder();
  40.                 encoder.encodeBytes(bytes);
  41.                 trace( encoder.drain() );
  42.             }
  43.  
  44.         ]]>
  45.     </fx:Script>
  46.    
  47.    
  48. </s:WindowedApplication>
__________________
Mein Blog
Freue mich über jeden Besucher. :)
Nico B. ist offline   Mit Zitat antworten
Alt 08-02-2010, 12:00   #12 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 73
Hast du das in flash gemacht, oder woher stammt der Code?

(Rein aus Interesse)
Mole23 ist offline   Mit Zitat antworten
Alt 08-02-2010, 12:04   #13 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.271
Ähm,

ich benutze derzeit Flashbuilder Beta2. (Leider bisschen buggy). In der Flash-IDE (Cs4) zu scripten macht ja keinen Spaß.
(Für reine As3 Projekte ==> FlashDevelop! )

Grüße, Nico
__________________
Mein Blog
Freue mich über jeden Besucher. :)
Nico B. ist offline   Mit Zitat antworten
Alt 08-02-2010, 12:11   #14 (permalink)
Neuer User
 
Registriert seit: Jan 2010
Beiträge: 73
Aha! Danke! Man lernt ja nicht aus! Netter Blog übrigens!
Mole23 ist offline   Mit Zitat antworten
Alt 15-02-2010, 18:39   #15 (permalink)
Neuer User
 
Registriert seit: Feb 2010
Beiträge: 108
Und das interessanteste am ganzen Thread ist der für mich bis dato unbekannte BBCode AS
Szdnez ist offline   Mit Zitat antworten
Antwort

Lesezeichen

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
Funktion ohne Event-Parameter aufrufen grizu Flash Einsteiger 3 19-09-2008 10:51
Funktion nach einer bestimmten Zeit immer wieder aufrufen jun-jun ActionScript 1 4 15-09-2008 12:23
Funktion aufrufen, die Event Parameter erwartet Digger2k3 ActionScript 3 5 29-07-2008 17:55
nach gotoAndStop() direkt Funktion in (Unter-)MC aufrufen xaromz ActionScript 2 0 22-02-2007 13:46
Funktion nach 5 sekunden aufrufen florianosch HTML und CSS 5 04-02-2003 12:11


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

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


Copyright ©1999 – 2012 Marc Thiele