Flashhilfe.de - Flash Community

Variablen aus externer .txt dividieren [Flash 10]

 


AntwortenRegistrieren Seite1 2  

NApokalypse#1
Benutzerbild von NApokalypse
Beiträge: 33
Registriert: May 2005

25.12.2009, 23:26

Moin moin,

ich hoffe ihr hattet alle ein Nettes Fest und habt's euch über die gemütlichen Tage ein bisschen gut gehen lassen.
Ich habe einen guten Teil der Tage damit verbracht, an Flash zu verzweifeln, in vielen vielen Foren nach Antworten zu suchen und dann weiter zu verzweifeln.

Zum Glück habe ich mich an die guten alten Tage im Flashhilfe-Forum zurück erinnert und hoffe nun, dass hier jemand bei einem wahrscheinlich trivialen Problem aushelfen kann.

Ich habe zwei Textdateien.
Diese werden mittels LoadVariables zu beginn geladen.

Also:
_root.loadVariables("txt1.txt");
_root.loadVariables("txt2.txt");

In jeder Textdatei steht eine Variable
zb: var1=123 in txt1 und var2=456 in txt2.txt

Ich lasse die beiden variablen in zwei Textfeldern anzeigen. Das funktioniert prima. Alles was ich jetzt noch zu meinem Flasher-Glück bräuchte wäre ein drittes Textfelh, in dem das ergebnis von var1 geteilt durch var2 steht.

Alle Versuche die ich in den letzten 4 Nächten unternommen habe haben ein zauberhaftes "NaN" oder "undefined" in mein drittes Textfeld gezaubert.

Kann mir jemand helfen? Ich habe leider echt keine Ahnung was ich falsch mache. Ich kann mit den beiden Variablen einfach nicht rechnen. :(

Danke euch schonmal und liebe Grüße,
Niklas
Wozu Socken? - Die schaffen nur Löcher!  -  Albert Einstein
Geändert von NApokalypse am 25.12.09 um 23:27 Uhr
Werbung
Beiträge: 0
Registriert: Feb 2016


Kerstin77#2
Benutzerbild von Kerstin77
Beiträge: 1004
Registriert: Jul 2008

26.12.2009, 10:50

Hi,

teste mal, ob es sich bei var1 und var2 um Variablen vom Typ Number handelt, falls nicht, musst du sie noch konvertieren:

ActionScript:
1
2
3
4
// Prüfen auf Zahl
if (!isNaN(var1)) trace("gültige Zahl");
// Umwandlung in Number
ergebnis = Number(var1) / Number(var2);


Grüße,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
NApokalypse#3
Benutzerbild von NApokalypse
Beiträge: 33
Registriert: May 2005

Themenautor/in

26.12.2009, 12:19

Guten Morgen Kertin,

lieben Dank für deine Antwort. Leider ergibt das immernoch "NaN" in meinem Textfeld.

Das AS befindet sich in einem movieclip. Im ersten Frame des Clips steht:

ActionScript:
1
2
3
4
5
6
7
8
_root.loadVariables("view.txt?num="+random(999));
_root.loadVariables("click.txt?num="+random(999));


// Prüfen auf Zahl
if (!isNaN(_root.count)) trace("gültige Zahl");
// Umwandlung in Number
performance = Number(_root.count) / Number(_root.click);


Der Inhalt der beiden txt ist:
view.txt:
  count=123
click.txt
  click=456

ich habe ein Textfeld welches _root.count anzeigt, eins welches _root.click anzeigt und eins welches performance anzeigt. Die ersten beiden funktionieren.

Muss in den Textdateien vielleich &count=123 stehen anstelle von count=123 ??
Danke nochmal für deine Hilfe :)

Besten Gruß,
Niklas
Wozu Socken? - Die schaffen nur Löcher!  -  Albert Einstein
Geändert von NApokalypse am 26.12.09 um 12:22 Uhr
Kerstin77#4
Benutzerbild von Kerstin77
Beiträge: 1004
Registriert: Jul 2008

26.12.2009, 12:23

Ja, Inhalt der Textdateien sollte so aussehen:

view.txt:
  &count=123&
click.txt
  &click=456&

Grüße,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
Werbung
Beiträge: 0
Registriert: Feb 2016


NApokalypse#5
Benutzerbild von NApokalypse
Beiträge: 33
Registriert: May 2005

Themenautor/in

26.12.2009, 12:32

Mhhh.. das ist sicherlich eine noch viel blödere Frage... aber:
Wie bekomm ich denn das zweite "&" dahinter?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
//Made by Syko ?2004 ! [ counter php file for php 4.3.0 or higher ]
//Reading the file
$count file_get_contents("view.txt");
//Increasing the count
$count explode("="$count);
$count[1] = $count[1]+1;
//Writing to file
$file fopen("view.txt""w+");
fwrite($file"&count=".$count[1]);
fclose($file);
//Returning the count
print "&count=".$count[1];

?>


Egal wie ich es darein schreibe gibts immer einen Syntax-Fehler.
Ich habe

fwrite($file, "&count=".$count[1]"&"); versucht und fwrite($file, "&count=".$count[1]&);

Wahrscheinlich stellen sich dir da alle Haare auf, wenn du das liest :O
Ich sollt' mich dringendst mal ans PHP lernen wagen glaube ich... dann brauch ich nicht immer so nette Helferlein in den Foren nerven *schäm*
Wozu Socken? - Die schaffen nur Löcher!  -  Albert Einstein
Kerstin77#6
Benutzerbild von Kerstin77
Beiträge: 1004
Registriert: Jul 2008

26.12.2009, 12:46

Hi,

hast nur einen Punkt vergessen ;-)
PHP:
1
2
3
4
<?
fwrite
($file"&count=" $count[1] . "&");
?>


Grüße,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
vindel#7
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

26.12.2009, 12:48

Hallo,

ein "." ist das Trennzeichen in PHP. Wenn du zwischen Variablen und "text" welchselst musst du mit ." php sagen, dass jetzt die Variable zu ende ist und text anfängt.
aus: fwrite($file, "&count=".$count[1]"&");
machst du: fwrite($file, "&count=".$count[1]."&"); einfach ein "." vor das letzte"&" schreiben.
Aber das wird dein Problem nicht lösen, da du am Ende nciht unbedingt ein "&" bracusht - wenn keien andere Variable mehr kommt.
Versuch mal statt "Number()" "int()". also:
performance = int(_root.count) / int(_root.click);
Damit sollte es eg laufen (also bei mir tuts dann imemr :D)
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
NApokalypse#8
Benutzerbild von NApokalypse
Beiträge: 33
Registriert: May 2005

Themenautor/in

26.12.2009, 12:59

Hey ihr Zwei,

Danke für die Antworten.
Das mit dem Trennzeichen klingt logisch und funktioniert bestens :) Danke. - Wieder ein PHP Mysterium mehr gelüftet :)
Allerdings steht bei dem Performance-Textfelt immernoch "NaN" - trotz Int()
Wozu Socken? - Die schaffen nur Löcher!  -  Albert Einstein
Geändert von NApokalypse am 26.12.09 um 13:02 Uhr
vindel#9
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

26.12.2009, 13:04

Was ist, wenn du deinen 2 Variablen mal einfach so in das Textfeld schreibst.
also:
ActionScript:
1performance = int(_root.count)+" "+ int(_root.click);

Werden die dann richtig dargestellt?
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
NApokalypse#10
Benutzerbild von NApokalypse
Beiträge: 33
Registriert: May 2005

Themenautor/in

26.12.2009, 13:07

Mhhh.. Spannend... dann steht dort "0 0"
Das könnte die erklärung für NaN sein... da durch 0 ja nicht geteilt werden kann.

Wenn ich ein "*" anstelle des / einsetzte (also "performance = int(_root.count) * int(_root.click);" ) dann ergibt es auch das "richtige" Ergebnis 0, welches im Textfeld angezeigt wird.

Aber wieso sind die beiden variablen 0? In den anderen Textfeldern werden sie ja richtig angezeigt...
Wozu Socken? - Die schaffen nur Löcher!  -  Albert Einstein
Geändert von NApokalypse am 26.12.09 um 13:09 Uhr
vindel#11
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

26.12.2009, 13:19

Sorry - hab den Fehler direkt übersehen..
Also, externe Dateien werden nicht an Ort und Stelle geladen ( da das laden ja etwas dauert), somit ist die Variable bei "_root.loadVariables("view.txt?num="+random(999));" noch nicht verfügbar.
Dafür gibt es den loadVars-Listener... dann geht das ganze auch:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var counter:Number = 0;
myVars = new LoadVars();
myVars.onLoad = function(success) {
   if (success) {
      counter++;
      geladen();
   }
};
myVars.load("view.txt");
myVars.load("click.txt");

function geladen() {
   if (counter>=2) {
      // Prüfen auf Zahl
      if (!isNaN(_root.count)) {
         trace("gültige Zahl");
      }
      // Umwandlung in Number 
      performance = int(_root.count)/int(_root.click);
   }
}

Also du lädst beide Datein mit dem Loader und immer wenn eine fertig ist, wird ein counter erhöht. Nach dem laden wird eine Funktion aufgeführt, die dann die Division aufführt..
Mal am Rande: warum nimmst du nciht eine Datei, in der beide Variablen sind?
also
PHP:
1
2
3
4
<?
&count=123&click=5678
?>

Ist dann von der performance besser, da Flash weniger laden muss..
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
NApokalypse#12
Benutzerbild von NApokalypse
Beiträge: 33
Registriert: May 2005

Themenautor/in

26.12.2009, 13:43

wow.. super.. danke.. das werde ich gleich mal ausprobieren.
Der Counter wird allerdings nicht in Flash, sondern in PHP erhöht.
Auf eine Textdatei habe ich verzichtet, da es sein kann, dass die variablen gleichzeitig geschrieben werden (wenn click und view gleichzeitig ausgeführt werden.).

Was machen denn " if (counter>=2)" und das trace("gültige Zahl") genau?

Vielen Dank nochmal :)
Wozu Socken? - Die schaffen nur Löcher!  -  Albert Einstein
Geändert von NApokalypse am 26.12.09 um 13:58 Uhr
vindel#13
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

26.12.2009, 13:56

Hallo,

die Zeile
ActionScript:
1
2
3
  if (!isNaN(_root.count)) {
        trace("gültige Zahl");
      }

kannst du entfernen, sie ist nur um zu prüfen ob "_root.count" eine Zahl ist.

Der counter ist nur dafür da, um zu prüfen ob beide Datein geladen sind.. Also lass den mal schön drinne, da du sonst für einen Moment wieder eine NaN drin hast! Der ist unabhängig von deinem Click/View-counter.
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
NApokalypse#14
Benutzerbild von NApokalypse
Beiträge: 33
Registriert: May 2005

Themenautor/in

26.12.2009, 13:59

Schade... nun sind alle 3 Textfelder leer... Jetzt klappts garnicht mehr :(
Wozu Socken? - Die schaffen nur Löcher!  -  Albert Einstein
vindel#15
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

26.12.2009, 14:12

..dann schick mal plz deine FLA
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
NApokalypse#16
Benutzerbild von NApokalypse
Beiträge: 33
Registriert: May 2005

Themenautor/in

26.12.2009, 15:43

Gerne... ich habe die Datei mal angehängt.
Die Zahlen werden angezeigt, wenn man auf "banner01" klickt.
Wozu Socken? - Die schaffen nur Löcher!  -  Albert Einstein

Angehängte Dateien:
Komprimierte Datei Backend.fla.zip16.68 KB
Geändert von NApokalypse am 26.12.09 um 15:45 Uhr

AntwortenRegistrieren Seite1 2  

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   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2019 Sebastian Wichmann - Flashhilfe.de