Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-02-2004, 12:47   #1 (permalink)
Alter User
 
Benutzerbild von quaint
 
Registriert seit: Nov 2003
Ort: Berlin
Beiträge: 180
unerwünschte nachkommastellen bei zuweisung

moin,

ich weise einem balken in einem onClipEvent(enterFrame) eine neue breite zu. dieser neu zugewiesene wert wird aus drei anderen dynamischen berechnet und sogar mit Math.round(...) gerundet. der ausgangswert der breite ist ein wert ohne komma.
trotzdem bekommt die breite bei der 4. zuweisung einen nicht runden wert, da kann man noch so viel Math.round benutzen wie man lustig ist...
nach stunden des grübelns bin ich nun am ende meines lateins und hoffe auf die großartige mithilfe schlauerer menschen.

der betreffende teil des codes:

mx1 = _root.Menue.MenueMaske._x;
mx2 = _root.Menue.MenueMaske._x + _root.Menue.MenueMaske._width;
ox1 = _global.menueOverX1;
ox2 = _global.menueOverX2;

if( mx2 < ox2) {
trace("links nach rechts");
if (_global.schritte == 1) {
trace("huii" + _root.Menue.MenueMaske._width);
var laenge = ox2 - mx1;
_root.Menue.MenueMaske._width = laenge;
trace(laenge);
trace("huii" + _root.Menue.MenueMaske._width);
_global.schritte = 5;
} else {
var schritt = (ox2 - mx2) / _global.schritte;
schritt = Math.round(schritt);
trace("schritt = "+schritt);
_root.Menue.MenueMaske._width += schritt;
_root.Menue.MenueMaske._width = Math.round(_root.Menue.MenueMaske._width);
_global.schritte--;
}
}

wer an dem gesamten code interessiert ist kann auch gerne das fla bekommen...

grüße
jan eric
quaint ist offline   Mit Zitat antworten
Alt 24-02-2004, 16:53   #2 (permalink)
Alter User
 
Benutzerbild von quaint
 
Registriert seit: Nov 2003
Ort: Berlin
Beiträge: 180
weiß denn da wirklich niemand weiter? ist das vielleicht ein flash internes problem bei der programmierung von actionscript 2.0 (weshalb das thema da auch eigentlich stand - keine ahnung warum es der moderator hier rüber geschoben hat)?

...hilfe

jan
quaint ist offline   Mit Zitat antworten
Alt 24-02-2004, 17:06   #3 (permalink)
info.krypto(256bit)
 
Registriert seit: Sep 2002
Beiträge: 48
Also ,
ohne jetzt dein skript vollständig analysiert zu haben: hast du es schon mal mit int(Ausdruck) versucht, ist mein Stil jedenfalls und bei einer ähnlichen Fragestellung bei mir hat das ganze ohne Probleme gefunzt - ne FLA ist einfach deswegen immer besser, weil mann innerhalb kürzester Zeit sinnlich wahrnehmen kann, worum es geht - es ist nicht jedermanns Sache sich ein sprödes Skript mal eben im Hirn zu visualisieren, mir macht das zwar Spass, aber es ist anstrengend, zeitaufwändig und nicht immer zielführend...


B
Basileusdeus ist offline   Mit Zitat antworten
Alt 24-02-2004, 17:18   #4 (permalink)
Alter User
 
Benutzerbild von quaint
 
Registriert seit: Nov 2003
Ort: Berlin
Beiträge: 180
neja, mit int(...) hats bei mir genausowenig geklappt. leider.
wie gesagt, ich checkst halt überhaupt nicht wodran des liegen könnte...

selbst wenn ich sowas mach wie:
_root.Menue.MenueMaske._width = 818;

zeigt mir trace(_root.Menue.MenueMaske._width); 817.95

mittlerweile tipp ich immer mehr auf einen fehler in der sprache, vielleicht klappts ja in alten flash-versionen noch. ich hab ja keine ahnung, bin aber kurz davor an mir selbst zu zweifeln...

ach wenn du das fla haben willst gib mir mal bitte deine email-adresse, es ist leider zu groß um es hier zu posten (212kb).

gruß,
jan
quaint ist offline   Mit Zitat antworten
Alt 24-02-2004, 19:04   #5 (permalink)
Alter User
 
Benutzerbild von quaint
 
Registriert seit: Nov 2003
Ort: Berlin
Beiträge: 180
da scheints immer noch keiner eine idee hat, habe ich die datei nu online gestellt:

http://www.tfh-berlin.de/~s718431/jan.fla

...

gruß,
jan
quaint ist offline   Mit Zitat antworten
Alt 25-02-2004, 02:15   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
das passiert aber nicht an der von dir angemahnten stelle, sondern da, wo du so interessante konstrukte generiert hast:
Math.round(_root.Menue.MenueMaske._width = ox2 - ox1);
ändere das (kommt 4x vor) in
_root.Menue.MenueMaske._width = Math.round(ox2 - ox1);
dann gehts ;-)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 25-02-2004, 12:43   #7 (permalink)
Alter User
 
Benutzerbild von quaint
 
Registriert seit: Nov 2003
Ort: Berlin
Beiträge: 180
funktioniert des dann bei dir?
welche version von flash hast du?

ich hab deine verbesseungen eingefügt komme, aber wie vorher garnicht bis dorthin, sofern ich die maus über referenzen oder einen anderen menüpunkt im rechten bereich bewege, da es sich vorher schon an der kritischen stelle aufhängt und in eine endlosschleife kommt...
eigentlich sind diese Math.round(ox2-mx1) usw. sowieso überflüssig, da dort niemals eine zahl mit kommastellen auftaucht, aber naja man kann ja nichts unversucht lassen.

ich habe jetzt mal folgendes eingebaut:

while (_root.Menue.MenueMaske._width != laenge) {
trace("verdammter dreck");
_root.Menue.MenueMaske._width = laenge;
}

wodurch das programm zum absturz kommt...
aaaahhhhh!!!!!!!!
da 'krisch plack
quaint ist offline   Mit Zitat antworten
Alt 25-02-2004, 23:35   #8 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
du weist der breite ox2 - ox1 zu und übergibst _width der round- funktion. die tut auch brav ihre arbeit und sendet das ergebnis zurück. NUR, mit dem zurückgesendeten machst du nichts! somit ist die rundung für die katz und in _width bleibt der gebrochene wert stehen.
dachte zu viel "copy and paste" den weiter oben hattest du es ja richtig geschrieben.

ich hab 2004 pro, dein fla im debuger laufen lassen und MenueMaske._width verfolgt.
beim nach rechst bewegen ist alles eckig, beim nach links bewegen kamen grumme zahlen. die waren weg, nachdem ich -wie geschrieben- an den 4 stellen diesen schreib-fehler behoben hatte.


bei mir ist nichts hängen geblieben (auch nicht im kopf) und ansonsten beschäftige ich mich jetzt nicht 33stunden lang mit deinem zeug ;-)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (25-02-2004 um 23:36 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 26-02-2004, 00:49   #9 (permalink)
Alter User
 
Benutzerbild von quaint
 
Registriert seit: Nov 2003
Ort: Berlin
Beiträge: 180
verlangt ja auch niemand (das beschäftigen) und so weiß ich wenigstens, dass ich nicht komplett bescheuert bin...

danke!

wenn du mir jetzt noch verraten könntest welche versionnummer dein gelöt hat, wäre ich über glücklich und würde dir nen kuchen backen wenn du das nächste mal vorbeischneist.


janneric
quaint ist offline   Mit Zitat antworten
Alt 26-02-2004, 02:25   #10 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
Flash MX 7.1 r 498 auf mac

498 die machen offensichtlich jeden tag 5 neue versionen :-)

wie auch immer. das kann nichts mit alter und neuer version zu tun haben! so einen balken nach links und rechts verschieben kann man ja selbst mit flash4 programmieren...

geh das ding doch mal mit dem debugger durch. da kannst du dir jede eigenschaft und variable zur laufzeit ansehen. manchmal sieht man den wald vor lauter bäumen nicht.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib 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 08:00 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele