mmofacts.com

Flash --> Nix mit der Number

gepostet vor 17 Jahre, 9 Monate von taker
Also mein Mundi (so heißt die Spielfigur) wird geklickt, es gibt +10 Punkte im Anzeigefeld
on ( press ) { _root.Punkte = Number(_root.Punkte)+10; }

Das Textfeld ist ein Dynamischer Text, kein Instanzen Name, die Var = Punkte
Das Feld hat den Startwert 0, klicke ich nun den lieben Munti an, wird aus der 0 ein NaN [Not a Number], erst hatte ich das Problem das er aus der 10 eine 1010 gemacht hat, ohne mir erkennbaren Grund macht er daraus nun nix mehr :S,
Taker
Edit: Falsche Themen überschrift
gepostet vor 17 Jahre, 9 Monate von MrMaxx
Ohne das ich Ahnung von Actionscript hätte hört sich das nach nem überladenen Operator an.
Number(_root.Punkte)+10;
+ = addition und + = concat
Zur Initialisierung ist root._Punkte=0...dann im ersten Durchlauf wirds zu NAN, weil das + als concat interpretiert wird und aus dem Ergebnis einen String macht (was deine Aussage mit 100 zu 1010 auch nahelegt).
Kann man in Actionscript explizit casten?
Falls ich total daneben liege liegt das daran, das ich seit Version 4 nichts mehr mit Flash g emacht habe und dementsprechend Ahnungslos bin....
Mr.Maxx
gepostet vor 17 Jahre, 9 Monate von FateF8
du hast wahrscheinlich die variable vorher nicht initialisiert.
ein einfaches
_root.Punkte = 0;

sollte da ausreichen.
allerdings solltest du, je nach flash-version die du nutzt / in der du veröffentlichen willst, schon strikter arbeiten.
spätestens ab version 7 (MX 2004) solltest du da besser wie folgt vorgehen:
var score:Number = 0;

...
on(press) {
_root.score += 10;
}
wenn du das ganze dann auch noch in AS2.0 angehen willst, und das ganze objektorientiert aufbauen willst...
...dann melde dich einfach nochmal *gg*
gruss,
FateF8
gepostet vor 17 Jahre, 9 Monate von taker
benutze Flash 7 , werde es gleich mal ausprobieren, und ja die variable habe ich vorher nicht installiert-.-
melde mich dann wenns was besseres gibt
Edit: da haben wir schon das erste Problem
,
wo soll ich denn nun das Installieren die Variable,
Meine ebenen sind, MUNDI, SPIELEWELT, Logo, Logohintergrund, Buttons,
das Textfeld befindet sich in der ebene Spielwelt, soll ich das unter Aktionen im Bild 1 machen, oder wie jetzt -.- ich noob, sry ist mein erstes Flash Projekt und bisher ging alles wie Butter, bisher wusste ich nichtmal das man einem Textfeld eine Aktion zuordnen kann
Ein wenig verzweifelter Taker
gepostet vor 17 Jahre, 9 Monate von FateF8
ok...
dann erstell' dir eine neue ebene (gaaaaanz oben auf der zeitleiste) und benenne diese z.b. "actionscript"
hier schreibst du dann deinen code hinein, um z.b. deine score-variable zu initialisieren:
var score:Number = 0;

du du dich auf der hauptzeitleiste befindest, also in keinen movieclip etc., wird diese variabel automatisch auf _root geschrieben.
somit kannst du den code für deine schaltfläche so lassen, wie er ist.
tipp:
da der interne actionscript-editor nicht unbedingt der beste ist, möchtest du vllt. einen externen editor verwenden:
[URL]https://sourceforge.net/project/showfiles.php?group_id=90749&package_id=114139&release_id=458610[/URL]
wenn du mit eclipse arbeitest und du ggf. 199€ investieren magst:
fdt.powerflasher.com
es gibt auch ein kostenloses plugin für eclipse, afdt (oder so ähnlich)
da schau mal unter:
www.osflash.org nach
gruß,
FateF8
gepostet vor 17 Jahre, 9 Monate von BjoernLilleike
Und bei weiteren Fragen zu Flash am Besten im www.flashforum.de suchen und gegebenfalls dort fragen. Dort findest du haufenweise Flash-Freeks und Tutorials.
Bei deinem Problem würde ich diagnostizieren, dass du direkt mit dem Textfeld _root.punkte operierst statt mit einer Variable.
Der Wert eines Textfeldes ist eigentlich _root.punkte.text, dem du zuweisen kannst. Flash 7 wandelt Zuweisungen implizit in Strings um, aber du kannst das Feld eben nicht auf Number casten (NaN).
Ohne Umbau müsstest du mal versuchen:
on ( press ) { _root.Punkte.text = Number(_root.Punkte.text)+10; }

Aber wesentlich besser wäre es, die Variable als Number anzulegen, mit dieser zu rechnen und nur das Ergebnis dem Textfeld zuzuweisen.
gepostet vor 17 Jahre, 8 Monate von readme_txt
Und bei weiteren Fragen zu Flash am Besten im www.flashforum.de suchen und gegebenfalls dort fragen. Dort findest du haufenweise Flash-Freeks und Tutorials.

Unverschämtheit! Wir sind keine Freeks ... Wir animieren die Welt!
...
@taker: Man kann aus den 3 Zeilen schon entnehmen das du ungünstige/veraltete Syntax benutzt. Du solltest auf jeden Fall drauf verzichten Textfelder über die Variablen-Eigenschaft zu befüllen/auszulesen ... das gibt immer wieder Probleme.
Besser ist es tatsächlich über Instanznamen und die .text Eigenschaft des Textfeldes zu arbeiten.
Außerdem solltest du auf ClipEvents verzichten und alle Scripte wie schon vorgeschlagen zentral in einem Schlüsselbild ablegen. Bei komplexer werdenden Anwendungen reisst du dir sonst irgendwann mal die Haare aus wenn du einen Fehler suchen musst.
gepostet vor 17 Jahre, 8 Monate von BjoernLilleike
@readme_txt: Das war von mir als Kompliment gemeint (im Sinne von "Profis") - finde ich doch viele meiner Fragen zu Flash ebendort beantwortet.
gepostet vor 17 Jahre, 8 Monate von readme_txt
Hab ich schon verstanden ... Aber das konnte ich trotzdem nicht Kommentarlos stehen lassen als alter Flasher

Auf diese Diskussion antworten