Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-02-2006, 10:53   #1 (permalink)
Neuer User
 
Benutzerbild von M3g4Star
 
Registriert seit: Jan 2006
Beiträge: 11
Question sendAndLoad prüfen

Also da dies wirklich nicht einfach zu erklären ist fang ich mal ganz ganz von vorn an.

Ich will eine Visitenkarten Seite mit Flash machen. um mir mein *.jpg zu erstellen das dann letztendlich gedruckt wird habe ich ein PHP-Script erstellt das mittels der empfangenen Input-Daten aus Flash und ImageMagick ein *.jpg erstellt.

Soweit so gut.

Nur habe ich nun noch ein Problem, das sich mein Script aufhängt sobald es mehrfach ausgeführt wird. Keinen Plan warum ... aber ist nun mal so.

Nun lasse ich in Flash meine Inputfelder via
Code:
_root.Titel.onChanged = function () {
    vars.sendAndLoad("imagemagick_mini.php",vars,"POST");
    image_path="images/"+vars.id+".jpg?time="+new Date().getTime(); 
   _root.vis.loadMovie(image_path);  
}
überwachen und wenn es geändert wird werden die Daten an das Script geschickt, da sBild wird generiert und in Flash das Bild wird aktualisiert.

Nun muss ich hier einen "überlauf-schutz" einbauen, nur weiß ich nciht so recht wie ?

das heißt wenn mann schneller tippt darf das script erst wieder ausgeführt werden wenn der letzte Durchlauf "abgeschlossen" ist.

*hm* .. ich hoffe jemand weiß da Rat, aber derzeit steh ich auf'm schlauch.
M3g4Star ist offline   Mit Zitat antworten
Alt 08-02-2006, 11:02   #2 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Also...
was ist vars? Hast du dafür ein LoadVars definiert? Welche Daten sendest du denn mit vars? Ausserdem solltest du abfragen, ob bereits Daten wieder bei vars eingetroffen sind, bevor du auf Variablen in vars zugreifst!
Und wieso willst du das die ganze Zeit aktualisieren lassen? Schreib dir doch einfach ne Funktion, die nen Timer beendet und wieder startet, sobald etwas gemacht wurde. Die Zeit stellst du auf 5000ms oder so. Wenn innerhalb dieser 5 Sekunden keine Eingabe mehr erfolgt, lässt du das Bild neu laden!?
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 08-02-2006, 11:17   #3 (permalink)
Neuer User
 
Benutzerbild von M3g4Star
 
Registriert seit: Jan 2006
Beiträge: 11
Jo Hey ..

Also zunächst erstmal vars wird definiert :

PHP-Code:
var vars = new LoadVars(); 
mit vars sende ich die Daten die über die Eingabefelder eingegeben werden.
das heißt er soll möglichst Live sehen wie sich seine Visitenkarte entwickelt, und daher muss das Script wieder ausgeführt werden.

Zitat:
Ausserdem solltest du abfragen, ob bereits Daten wieder bei vars eingetroffen sind, bevor du auf Variablen in vars zugreifst!
<== dabei kann ich dir nicht ganz Folgen ?

Zitat:
schreib dir doch einfach ne Funktion, die nen Timer beendet und wieder startet, sobald etwas gemacht wurde
<== klingt nicht schlecht wäre ne Möglichkeit. gibts dafür Ansätze ? Ich müsste jedoch trotzdem prüfen ob der letzte Durchlauf des Scripts schon fertig wäre. Nur zur Sicherheit falls er doch mal mehr als 5 secs läuft.


es soll ja nur Aktualisiert werden wenn der User die Eingabefelder verändert, sprich: Seine Daten einfügt um seine Visitenkarte zu erstellen.

PHP-Code:
// Funktion zum erstellen der Textfelder
function createFeld(name,inhaltdxywh) { 
    
this.createTextField(namedxywh); 
    
this[name].border true
    
this[name].borderColor 0x000000
    
this[name].background true;
    
this[name].backgroundColor 0xDDDDDD;
    
this[name].autoSize true
    
this[name].type "input"
    
this[name].text inhalt;    


//Variablen aus Datei Laden (Soll nur einmal als erstes gemacht werden ?!)
 
var vars = new LoadVars();
 
vars.load("imagemagick_mini.php");
 
vars.onLoad bildladen;    
  function 
bildladen {
   
image_path="images/"+vars.id+".jpg?time="+new Date().getTime();      
   
_root.feldname.text image_path;
   
_root.vis.loadMovie(image_path);
   
_root.vis._x 200;
   
_root.vis._y 100;     
}

// Felder werden erstellt mit den empfangenen Daten 

createFeld("Titel",vars.Titel,1,3,13,0,0);
...

// wenn sich was ändert dann : ...
_root.Titel.onChanged = function () {
  
vars.Titel _root.Titel.text;
  
vars.sendAndLoad("imagemagick_mini.php",vars,"POST");  
  
image_path="images/"+vars.id+".jpg?time="+new Date().getTime(); 
  
_root.feldname.text image_path;
  
_root.vis.loadMovie(image_path);  

Vielleicht hilft der komplette Code mehr als nur so 'n Brocken. Das ist halt der teil des AS's der das mit der "Bild-aktualisierung" behandelt.

Geändert von M3g4Star (08-02-2006 um 13:35 Uhr)
M3g4Star ist offline   Mit Zitat antworten
Alt 08-02-2006, 11:30   #4 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Zitat:
<== dabei kann ich dir nicht ganz Folgen ?
Naja, du versuchst hier:
PHP-Code:
image_path="images/"+vars.id+".jpg?time="+new Date().getTime(); 
auf vars.id zuzugreifen, welches (so nehme ich mal an) ein Rückgabewert von sendAndLoad ist. Mit viel Glück steht die Variable schon zur Verfügung, wenn du das ganz lädst, es wäre aber besser, abzufragen, ob das ganze übertragen wurde und dann erst weiteres mit Rückgabe-Variabeln machst!
PHP-Code:
vars.sendAndLoad("imagemagick_mini.php",vars,"POST");
vars.onLoad = function(success) {
if(
success) {
    
_root.image_path="images/"+this.id+".jpg?time="+new Date().getTime(); 
}

Zitat:
es soll ja nur Aktualisiert werden wenn der User die Eingabefelder verändert,
Es ist aber unsinnig, für jeden Buchstaben, den er schreibt das ganze neu zu laden... jemand, der das 10-Finger-System beherrscht löst so ~5 Aktionen pro Sekunde aus... darum die Warte-Abfrage! Kannst ja die Wartezeit auch auf 2000ms verkürzen, dann wartet es zumindest, bis er das Wort oder so fertig getippt hat! Ansonsten ist Flash gar nie in der Lage ein Bild fertig zu laden, da das Bild ständig neu geladen wird! Das dürfte wohl auch der Grund sein, weshalb es nicht funktioniert!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 08-02-2006, 12:00   #5 (permalink)
Neuer User
 
Benutzerbild von M3g4Star
 
Registriert seit: Jan 2006
Beiträge: 11
Ja ok klingt nicht schlecht werd ich alles mal einbauen.

Wie kann ich denn aber prüfen ob seit 3 Sek nix mehr eingegeben wurde. also das das mittels
Code:
setInterval(FUNKTION,3000);
geht weiß ich schon, jedoch wie prüfe ich denn den abstand der einzelnen Eingaben ?

müsste ich da bei jedem Klick einen timestamp setzen und diesen dann vergleichen mit dem letzen Timestamp ? Oder so ähnlich wäre ich jetzt zumindest da ran gegangen.

hm. . ok Vielen dank erstmal. ich werd das mit den intervallen schon irgendwie hinbekommen. Oder hast da schon was parrat
M3g4Star ist offline   Mit Zitat antworten
Alt 08-02-2006, 13:11   #6 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
ist eigentlich ganz einfach... scherib ne Funktion, die dir das abnimmt!
ActionScript:
  1. ...onChanged = function() {
  2.    handleTimer();
  3.    //das andere bla bla ... ^^
  4. }
  5. function handleTimer() {
  6.      clearInterval(_global.waiter);
  7.      _global.waiter = setInterval(updater, 2000);
  8. }
  9. function updater() {
  10.      clearInterval(_global.waiter);
  11.      vars.Titel = _root.Titel.text;
  12.      vars.sendAndLoad("imagemagick_mini.php",vars,"POST");
  13.      vars.onLoad = function(success) {
  14.      if(success) {
  15.          _root.image_path="images/"+this.id+".jpg?time="+new Date().getTime();
  16.          _root.vis.loadMovie(image_path);
  17.      }
  18. } 
  19.  
  20. }

Wird sicher noch den einen oder anderen Fehler drin haben - aber das muss so sein, sonst wärs nicht mehr interessant!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 08-02-2006, 13:41   #7 (permalink)
Neuer User
 
Benutzerbild von M3g4Star
 
Registriert seit: Jan 2006
Beiträge: 11
Ja hey.

n1 !!!! 's funzt.
Nur ist jetzt wirklich auch abgesichert das das Script nicht parallel läuft ? Weil was ist wenn das script mal länger braucht als 2 Sekunden um das Bild zu generieren ? dann würde es ja wieder "hängen" oder ?
Hm .. ok das wäre ja denn ein anderes Problem Müsste ich sozusagne später nochmal checken wenn man sein eigenes Logo noch mit reingeladen hat und die generierung nicht nur den Text rendert, sondern auch mit dem Foto und dem Logo arbeitet.

Also thx für die schnelle Hilfe.
M3g4Star ist offline   Mit Zitat antworten
Alt 08-02-2006, 13:51   #8 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Dann ist das kein Problem! Definiere eine Variable, die auf true gesetzt wird, sobald gearbeitet wird und verhindere den Start der Funktion, wenn die Variable = true. Sobald die Funktion abgearbeitet ist, Variable auf false setzen. Et voilà.
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 08-02-2006, 14:16   #9 (permalink)
Neuer User
 
Benutzerbild von M3g4Star
 
Registriert seit: Jan 2006
Beiträge: 11
Jo auch fein die Idee aber kann ich das nicht auch mit vars.loaded machen ??? müsste doch eingeltich gehen oder ???

sprich :

ActionScript:
  1. function updater() {   
  2.  if(vars.loaded==true) {
  3.    clearInterval(_global.waiter);     
  4.    vars.Titel = _root.Titel.text;     
  5.    vars.sendAndLoad("imagemagick_mini.php",vars,"POST");   
  6.    vars.onLoad = function(success) {     
  7.     if(success) {     
  8.      _root.image_path="images/"+this.id+".jpg?time="+new Date().getTime();         
  9.      _root.vis.loadMovie(image_path);     
  10.      }
  11.     }   
  12.   }
  13. }

Müsste doch wenn ich die "loaded"-Funktion richtig verstanden habe auch gehen.

Also hast mir sehr weiter geholfen und mein Script läuft schon fein. Jedenfalls hängt's sich nicht mehr auf
M3g4Star ist offline   Mit Zitat antworten
Alt 08-02-2006, 14:52   #10 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Nicht wirklich... du setzt ja loaded nicht zurück, bzw. kannst das wohl gar nicht, das heisst, er wartet genau das erste Mal, danach ist loaded true!
ActionScript:
  1. ...onChanged = function() {   
  2.      handleTimer();   //das andere bla bla ... ^^
  3. }
  4. function handleTimer() {
  5.      clearInterval(_global.waiter);
  6.      _global.waiter = setInterval(updater, 2000);
  7. }
  8. function updater() {
  9.      if(_global.updaktiv != true) {
  10.           clearInterval(_global.waiter);
  11.           vars.Titel = _root.Titel.text;
  12.           vars.sendAndLoad("imagemagick_mini.php",vars,"POST");
  13.           vars.onLoad = function(success) {
  14.                if(success) {
  15.                    _root.image_path="images/"+this.id+".jpg?time="+new Date().getTime();
  16.                    _root.vis.loadMovie(image_path);
  17.                    _global.updaktiv = false;
  18.                }
  19.           }
  20.      }
  21. }
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 08-02-2006, 15:02   #11 (permalink)
Neuer User
 
Benutzerbild von M3g4Star
 
Registriert seit: Jan 2006
Beiträge: 11
Also so wie ich das verstanden habe braucht man das bei dieser LoadVars Eigenschaft nicht !

schau hier

Die müsste sich automatisch wieder zurücksetzen !? ich mein wenn's solche Eigenschaften bei LoadVars gibt sollte man sie auch nutzen oder?



// EDIT //

Ach so ... Ja jetzt wo du's sagst stimmt schon ... muss den Wert wieder zurücksetzen. obwohl ? Wenn da ein script schon läuft wird da sdoch auf false gesetzt ????? oder wie ???

Oh mann .. *wirrrrrr*

// EDIT //

Geändert von M3g4Star (08-02-2006 um 15:05 Uhr)
M3g4Star 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 06:32 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele