Zurück   Flashforum > Alternative Technologien > HTML und CSS

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-11-2003, 09:52   #1 (permalink)
Genius
 
Benutzerbild von f@gju
 
Registriert seit: Sep 2003
Ort: Banned into Jail
Beiträge: 650
[TUTORIAL] Flash-JS Kommunikation

Kommunikation von Flash mit HTML-Formularen über JavaScript

Benötigte Mittel:
- Flash
- HTML-Editor

Fangen wir mit dem Flashteil an.
Wir brauchen:
- 1 Textfeld (txtEingabe) [var: eingabe][Mehrzeilig][Rahmen zeigen opt.]
- 1 Sendbutton (cmdtxtsend)

Dann dieses AS in die Hauptzeitleiste:

ActionScript:
  1. _root.cmdtxtsend.onRelease = function(){
  2.     texte = new Array();
  3.     text = _root.eingabe;
  4.     x = 0;
  5.     while(text.length > 100){                      //der Text wird in Stücke à 100 Zeichen aufgesplittert
  6.         texte[x] = substring(text, 0 , 100);       //die ersten 100 Zeichen werden abgeschnitten und in [texte] geschrieben
  7.         text = substring(text, 101, text.length)//die restlichen Zeichen werden weiter verwendet
  8.         x++;
  9.     }
  10.     texte[texte.length] = text//das übriggeblibene wird noch angehängt
  11.     texte[texte.length] = 0;     //das ist der counter
  12.     action = 'del';              //action kann [del] sein, wenn das HTML-Textfeld gelöscht werden soll
  13.    
  14.     getURL("javascript:getVarsFromFlash('" + texte[0] + "', '" + texte.length + "', '" + action + "');", "_self");
  15.     //Der erste Textteil wird zusammen mit den initialisierungsvars versendet
  16.    
  17.     intID = setInterval(_root.sendVarsToJS, 50, texte);
  18.     //es wird ein Interval erzeugt der alle 50 Milisec prüft ob die Vars in der Funktion angekommen sind
  19. }
  20.  
  21. function sendVarsToJS(arr){              //die Intervalfunktion
  22.     counter = parseInt(arr[arr.length-1])+1;    //der übergebene counter wird einer Variable zugewiesen (einfacher)
  23.     if(arr[arr.length-1] == arr.length){        //wenn alles versendet wurde (counter = arraylänge) wird er gelöscht
  24.         clearInterval(intID);   
  25.     }
  26.     if(parseInt(_global.checkVar) == counter){ 
  27.     //_global.checkVar ist die Variable die vom JS manipuliert wird wenn die Daten
  28.     //in der JS Funktion angekommen sind, wird die bestätigung in _globa.checkVar geschrieben
  29.        
  30.         getURL("javascript:getVarsFromFlash('" + arr[counter] + "', '" + arr.length + "', 'null');", "_self");
  31.         //die Daten werden erneut versendet, für action wird nichts übergeben, weil es ja nur zum initialisieren war
  32.        
  33.         arr[arr.length-1] = counter;  //könnte man wahrscheinlich besser lösen, hatte aber kein Bock *gg*
  34.     }
  35. }

Dann das exportieren unter FlashToJS.swf

Dann das HTML-File an.
Wir brauchen:
- 1 Formular (form1)
- 1 Textarea (txtOutput)
- 1 Textfield (aktuell) [disabled=„true“]
- 1 Flashfile (FlashToJS.swf)

Damit alles funktioniert müssen wir einige Einstellungen bei der Flasheinbindung vornehmen.

Beim <object> tag müssen wir name=“flaToJS“ und id=“flaToJS“ ändern und beim
<embed> tag müssen wir ebenfalls name=“flaToJS“ machen.
Wenn das alles gemacht ist, müssen wir nur noch das JavaScript hinzufügen.
PHP-Code:
<script language="JavaScript" type="text/JavaScript">
function 
getVarsFromFlash(texttotalaction) {
    if(
action == 'del'){
        
document.form1.txtOutput.value '';    //bei neustart werden die Textfelder geleert
        
document.form1.aktuell.value '0';     //wird zurückgesetzt
    
}
    var 
document.form1.txtOutput.value;
    
text;                               //die Textteile werden zusammengesetzt
    
document.form1.txtOutput.value n;
    
    var 
akt document.form1.aktuell.value;     //der zähler wird ausgelesen
    
akt ++;                                     //erhöht
    
document.form1.aktuell.value akt;         //und zurück ins Textfeld geschrieben
    
    
if(akt != total 1){                       //Check ob alle Teile versendet wurden
        
document.flaToJS.setVariable("_global.checkVar"akt);  //Flash wird mitgeteil, dass das Teil angekommen ist
    
}else{
        
document.flaToJS.setVariable("_global.checkVar""end");//Das Ende wird mitgeteilt
        
document.form1.aktuell.value 0;                       //aktuell wird zurückgesetzt (geschiet eigentlich schon oben
    
}
}
</script> 
Nun muss man nur noch die HTML-Datei starten und beim Flash den Texteingeben den man versenden will.

Bekannte Probleme:
Hochkommas (’) können nicht versendet werden [JavaScript problem]
Copy + Paste im Flashtextfeld funktioniert bei meinem Beispiel nicht, oder nur bedingt.
__________________
Klick hier

Geändert von f@gju (05-11-2003 um 13:20 Uhr)
f@gju ist offline   Mit Zitat antworten
Alt 14-11-2003, 10:10   #2 (permalink)
Genius
 
Benutzerbild von f@gju
 
Registriert seit: Sep 2003
Ort: Banned into Jail
Beiträge: 650
ups

Beispiel vergessen
Angehängte Dateien
Dateityp: zip [tut]kommunikation.zip (6,9 KB, 247x aufgerufen)
__________________
Klick hier
f@gju 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



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

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


Copyright ©1999 – 2012 Marc Thiele