| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Nov 2004
Beiträge: 138
| String umwandeln in "Garnichts"
hallo. mal eine etwas merkwürdige frage - folgendes problem: ich möchte etwas in ein textfeld eingeben, das dann in einer anderen funktion verwendet wird. leider wird ja bekanntlich alles in form von strings, also mit " " weitergegeben, sobald man auch buchstaben eintippt. ist es möglich, das zu ändern? könnte man beispielsweise den string in ein objekt umwandeln, während man schreibt? würde mich sehr über antwort freuen!! mfg fireshark |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Apr 2003
Beiträge: 644
|
hm, brauchst du doch garnicht, du kannst doch bei deiner function in dei klammer [function blabla()] eine var definieren die du nachher in der funktion verwenden kannst, dann beim aufrufen der funktion kannste doch einfach so machen blabla("hallo"); So schaffste das ein string in deine function zu übergeben. Um den text eines textfelds weiterzugeben gibst du entweder den pfad zur var oder zum textfeld an, dann muss aber ja bekanntlich ".text" noch hinten dran. Geändert von jonny-noob (19-12-2004 um 15:39 Uhr) |
| | |
| | #3 (permalink) |
| All-rounder Registriert seit: Mar 2004 Ort: Bayerische Rhön
Beiträge: 2.507
|
Hi. Einen String umwandeln geht glaube ich nicht. Warum muss er denn gewandelt werden? Du kannst auch mit Strings z.B. Objekte auf der Bühne ansprechen. Hier ein Beispiel. Auf der Bühne liegt ein MC namens box_mc. Gebe mal in das Textfeld box_mc ein und schaue was passiert. ActionScript:
__________________ -------------------------------- Ich klicke, ergo bin ich. (me) -------------------------------- |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Nov 2004
Beiträge: 138
|
erst mal danke für die antworten! am besten beschreibe ich mal genau, was ich will. also folgendes: ziel ist ein kleines script, das mathematische funktionen in graphen umwandeln kann (also z.b. f(x) = 2x² + 4 als parabel). so etwas hat auch in der ersten version prima geklappt, doch ich wollte das ganze flexibler machen (z.b. auch sin, cos, parabeln 6., 7., etc. grades), deshalb sollte man die ganze funktion einfach selbst in das feld eingeben. wenn man aber z.b. eintippt "x" (also y = x), dann liest der interpreter "y = 'x'", "x" eben als string. und dann funzt es nicht mehr. wenn ich den code ändere in y = x;, geht es. es sollte aber: y = feld;. in das feld gibt man die funktion ein. dann geht es aber nicht mehr... hier nochmal ein gekürzter auszug des scriptes: Code: fx.onRelease = function() {
set(feld, 0);
for (i = -500; i <= 500; i++) {
attachMovie("ding", "ding" + i, i);
x = i/2;
y = feld;
_root["ding"+i]._x = x + breite;
_root["ding"+i]._y = y + hoehe;
}
} mfg fireshark |
| | |
| | #5 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
von alleine geht sowas nicht. woher sollte das flash auch wissen, dass das X ein stellvertreter für eine zahl sein soll und nicht einfach ein X ? dieses umzuwandeln, das musst du schon selbst programmieren. sowas nennt man dann einen parser. ActionScript:
und dabei auch auf mögliche schreibvarianten achten, wie z.b. auf das weglassen des "mal"-zeichens. var vFormel="x+20 cos(x)+xy"; -------------------- einfacher ist es vielleicht, wenn du ein paar formeln zur auswahl vorgibst und man dann "nur" die grenzwerte eingeben kann.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (20-12-2004 um 15:39 Uhr) |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Nov 2004
Beiträge: 138
|
vielen dank für den parse-code!! so etwas ähnliches habe ich schon mal in einem meiner anderen threads in einem ähnlichen zusammenhang gesehen, das war aber ziemlich anders und hat nicht funktioniert. jetzt verstehe ich den kontext viel besser. das mit den mathematischen formeln ist auf jeden fall das kleinste problem. übrigens: punkt vor strich z.b. - das beachtet der interpreter schon automatisch! mfg fireshark |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Nov 2004
Beiträge: 138
|
kann vielleicht noch mal jemand mein zwischenergebnis überprüfen? ich habe den code mal eingefügt, allerdings funzt noch nicht alles wie es sollte. könnte es sein, dass ich da total auf dem holzweg bin, oder ist der ansatz richtig? PHP-Code: fireshark |
| | |
| | #8 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
hin und wieder mal tracen bzw. mal den debugger benützen ;-) feld = feld.split("x").join(x); x = i/2; y = feld; zuerst ersetzt du in feld den text "x" durch den inhalt der variablen x, die du aber erst DANACH definierts?? und nachdem du bereits im 1. schleifendurchgang das "x" rausgenommen hast, wirst du es in den folgenden durchgängen kaum noch in feld finden. so ist das prinzipiell richtiger (in deinem sinne, vermute ich mal): x = i/2; y = feld.split("x").join(i); ich bezweifle aber, das flash einen textstring ausrechnet. z.b. var vFormel="5+3"; trace(7+vFormel); // // ergibt den string "75+3" // und keineswegs das rechenergebnis 15
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (20-12-2004 um 20:42 Uhr) |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Nov 2004
Beiträge: 138
|
super! der ansatz funktioniert. du meintest aber: y = -feld.split("x").join(x);. gibt es denn keine möglichkeit, das ganze auch mit ganzen rechnungen zu machen?? sobald ich z.b. "2 * x" eingebe, funzt es nicht mehr (wie du schon sagtest). daran soll es nun echt nicht scheitern! mfg fireshark |
| | |
| | #10 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
"..du meintest aber.." ich meine vor allem, du sollst keine variable benützen, die erst in der folgenden zeile definiert wird. und ein minuszeichen vor einem textstring funktioniert auch nicht. flash kennt keinen befehl "einen string als function" auszuwertet. das hatte ich bereits geschrieben und flash hat sich in der zwischenzeit auch nicht verändert. du brauchst also nicht nochmal zu fragen: "..jetzt müsstest du allerdings noch etwas schreiben, was diesen string ausrechnet, mit allen mathematischen besonderheiten wie punkt- vor strichrechnung usw. und dabei auch auf mögliche schreibvarianten achten, wie z.b. auf das weglassen des "mal"-zeichens. var vFormel="x+20 cos(x)+xy"; .."
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (20-12-2004 um 23:13 Uhr) |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Jun 2001 Ort: Stuttgart
Beiträge: 6.415
|
hui hartes thema ausgesucht. wenn du php hast würde ich lieber ming in verbindung mit openswf.com verwenden-ne is auch nich besser! willst dus wirklich in flash realisieren, dann mußt du deinen code sehr variabel halten, denn operatoren kannst du definitiv NICHT parsen du mußt sie über 4 abfragen(für jede grundrechenart(+-*/)) an den echten operator "weiterleiten". ActionScript:
damit wäre dein hauptproblem schonmal in die richtige richtung gelenkt. was du jetzt brauchst um so gleichungen wie cos(x)*cosy zu lößen ist eine funktion die dir deine gleichung in untergleichungen unterteilt(cos,sin), bei cos(sin(x)) natürlich nach klammernregeln vorgehen, und nun herausfinden was der user eingetippt hat dafür am besten nen array mit gültigen mathematischen funktionen anlegen. zB fkt=["sin","cos"] //... -operator herausfinden -damit splitten ("x*x").split("*") -über schleifen und indexOf entsprechende funktion von flash suchen und per fkt="cos" //heruasgefundene funktion Math[fkt](x) ausführen. hast du sowas mal geschafft und natürlich(!!) auch punkt vor strich,klammern von innen nach außen, und was es sonst für regeln gibt beachtet kannst du theoretisch jede noch so lange funktion berechnen. viel spaß hier gabs auch mal nen thrad dazu such mal nach plotter gruß deluxe |
| | |
| | #12 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
@Deluxe genau so, oder so ähnlich ;-) wenn's dann fertig ist heisst das ding: Mathematika und das ist auch genau der grund, warum ich schon gestern mittag FireShark das da vorgeschlagen hatte: "..einfacher ist es vielleicht, wenn du ein paar formeln zur auswahl vorgibst und man dann "nur" die grenzwerte eingeben kann.." aber auf mich hört ja mal wieder keiner...
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #13 (permalink) |
| Neuer User Registriert seit: Nov 2004
Beiträge: 138
|
moin. @deluxe: vielen dank für die vorschläge. das scheint ja echt nicht einfach zu sein. mal sehen, on ich dafür überhaupt die zeit finde. @hgseib: doch, ich hatte deinen vorschlag schon in erwägung gezogen... aber ich kann noch nicht sagen, was ich im endeffekt machen werde. und wieso hab ich ein minuszeichen vor meine formel gesetzt? weil flash bekanntlich das kartesische koordinatensystem vertikal umdreht. mfg fireshark |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |