Zurück   Flashforum > Flash > ActionScript > ActionScript 2

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-07-2009, 07:36   #1 (permalink)
dr monk
Gast
 
Beiträge: n/a
Code führt zu Fehler - nur warum?

Hallo zusammen.

Ich wusste nicht wie ich den Titel anders formulieren sollte

Es geht darum:

Ich habe ein Programm welches 3 MovieClips hat welche durch "weiter" und "zurück" Buttons eingeblendet werden. In diesen MCs befinden sich Elemente, die je nach auswahl unterdrückt werden.

Jetzt habe ich allerdings das phänomen, wenn ich in einem der MCs Code schreibe (oder teilweise auch wenn ich ein weiteren MC hinzufüge) verschwindet einer meiner "Haupt"-MCs spurlos. Allerdings beinhaltet der Code keine _visible-Befehle, die Falsch interpretiert werden könnten.
Fehler zeigt mir die Skriptkontrolle auch nicht an.

Aber irgendwas muss daran doch falsch sein, dass er mir den einen "Haupt"-MC ausblendet (es gibt keine Stelle im Programm wo dieser MC ausgeblendet werden soll -> sollte eigentlich immer sichtbar sein -> nur die MCs im MC werden nach bedarf ein/ausgeblendet).

Könntet ihr mal schnell über folgenden Code schauen? Vielleicht ist da ein grober Fehler drin, der von Flash nicht erkannt aber falsch verarbeitet wird??

(Zur Funktion: Es wird ein Verhältnis errechnet das auf einen MC im "Haupt"-Mc angewendet wird -> Maßstabsfunktion)

artikelAngaben = "Haupt"-MC Nr2 (in diesem Befindet sich das Skript und wird auf wuerfelPlatzieren angewendet)

wuerfelPlatzieren = "Haupt"-MC Nr3

PHP-Code:
function massstabEins (){
    
tempWert 0;  // falls noch keiner angegeben wurde
    
if(_root.artikelAngaben.laengeEingabe.text _root.artikelAngaben.breiteEingabe.text){
        
tempWert Number(_root.artikelAngaben.laengeEingabe.text)/_root.wuerfelPlatzieren.dingEins._width;
        
_root.wuerfelPlatzieren.dingEins._height Number(_root.artikelAngaben.breiteEingabe.text)/tempWert;
        
trace (_root.wuerfelPlatzieren.dingEins._width);
    }
    else {
        
tempWert Number(_root.artikelAngaben.breiteEingabe.text)/_root.wuerfelPlatzieren.dingEins._height;
        
_root.wuerfelPlatzieren.dingEins._width Number(_root.artikelAngaben.laengeEingabe.text)/tempWert;
        
trace (_root.wuerfelPlatzieren.dingEins._height);
    }
    
trace("Funktion Nr.1");
}

function 
massstabZwei (){
    
tempWert2 0//falls noch keiner angegeben wurde
    
if(_root.artikelAngaben.laengeEingabe.text _root.artikelAngaben.breiteEingabe.text){
        
tempWert2 Number(_root.artikelAngaben.laengeEingabe.text)/_root.wuerfelPlatzieren.dingZwei._width;
        
_root.wuerfelPlatzieren.dingZwei._height Number(_root.artikelAngaben.breiteEingabe.text)/tempWert2;
        
trace (_root.wuerfelPlatzieren.dingZwei._width);
    }
    else {
        
tempWert2 Number(_root.artikelAngaben.breiteEingabe.text)/_root.wuerfelPlatzieren.dingZwei._height;
        
_root.wuerfelPlatzieren.dingZwei._width Number(_root.artikelAngaben.laengeEingabe.text)/tempWert2;
        
trace (_root.wuerfelPlatzieren.dingZwei._height);
    }
        
trace("Funktion Nr.2");
}

function 
massstabDrei (){
        
trace("Platzhalter Funktion Nr.3");

Wenn ich diese Funktionen (und deren Aufruf) auskommentiere ist das "Haupt"MC wieder sichtbar

Kann mir da einer sagen warum? Ich werd noch irre wenn das MC immer weg ist...

MfG Monk
  Mit Zitat antworten
Alt 24-07-2009, 16:37   #2 (permalink)
Neuer User
 
Benutzerbild von the binary
 
Registriert seit: Jul 2001
Ort: Berlin | Friedrichshain
Beiträge: 3.561
vielleicht solltest du dir mal die werte fuer 'widht' und 'height' ausgeben lassen..

gruss
__________________
8bm | join ff@BOINC
formpackage.org | audiohunter.de | problematica.de | 8ball-media.de/blog | taikonauten.cn
the binary ist offline   Mit Zitat antworten
Alt 24-07-2009, 21:16   #3 (permalink)
dr monk
Gast
 
Beiträge: n/a
Werte stimmen soweit. Es kommt ja auch nicht zu errors oder ähnlichen. Es wird nur ein MC unterdrückt, der eigentlich nie vom Code her unterdrückt werden sollte.

Ich hab auch schon daran gedacht, dass mir eine Variable eines MCs überschrieben wird und das es dann daran liegt, aber in dem Code ist ja keine Änderung der Sichtbarkeit.

Morgen versuche ich mal die Funktion innerhalb des problem-"Haupt-MCs" zu definieren und aufzurufen. Vielleicht kann ich das Problem damit umgehen.
  Mit Zitat antworten
Alt 24-07-2009, 21:55   #4 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
So kriegst Du keine Number ...

text ist immer ein String!

ActionScript:
  1. tempWert = Number(_root.artikelAngaben.breiteEingabe.text)/_root.wuerfelPlatzieren.dingEins._height;

Aber so:

ActionScript:
  1. tempWert = _root.artikelAngaben.breiteEingabe.textHeight / _root.wuerfelPlatzieren.dingEins._height;

Siehe Anhang, Flash 8.

edit: Wenn Du das so schreibst wird das hier als Textfeld-Instanz behandelt ->
_root.artikelAngaben.breiteEingabe.text

Was IST denn jetzt _root.artikelAngaben.breiteEingabe?
Angehängte Dateien
Dateityp: fla masstab.fla (23,0 KB, 2x aufgerufen)

Geändert von ~pyropete~ (24-07-2009 um 22:02 Uhr)
~pyropete~ ist offline   Mit Zitat antworten
Alt 24-07-2009, 22:25   #5 (permalink)
dr monk
Gast
 
Beiträge: n/a
Danke für die Antwort.

"_root.artikelAngaben.breiteEingabe" ist ein text-input feld.

Es geht von der Funktion her darum:

In einem meiner MovieClips (hab da 3stk, die sozusagen 3 Menüs darstellen) wird eine Form (_root.wuerfelPlatzieren.dingEins) dargestellt. Auf dieser Form kann man weitere MCs platzieren.
Allerdings soll die Form sich entsprechend der Benutzerdaten (_root.artikelAngaben.breiteEingabe) anpassen können ohne die maximalen Abmaße zu verändern (_root.wuerfelPlatzieren.dingEins._height).

So kann man z.b. bei der eingabe von Breite "1" und Länge "5" ein Verhältniss von 1:5 darstellen, ohne dass der MC in einer (entweder height oder width) Richtung kleiner wird -> die Darstellung also maximal ausgenutz wird.

Wenn ich nur den MassstabEins (direkt) in die "weiter"-Funktion einbinde funktioniert das Skript auch. Wenn ich versuche alle 3 Funktionen in die "weiter"-Funktion einbauen möchte klappt das genau so wenig als ob ich es wie im Post 1 geschrieben in eine extra Funktion packe.

Mich treibt die ganze Geschichte mit den Zahlen in AS2 eh ein wenig in den Wahnsinn. Jedesmal muss ich Texteingaben temporären Werten zuweisen um mit ihnen Rechnen zu können
Liegt wohl an mir, dass die Programmiersprache mich nicht mag.

Demnächst hab ich 3 Wochen Urlaub den ich nutzen werde auf AS3 und Flex umzusteigen - aber ob ich das jetztige Programm deswegen nochmal von Vorne anfange wage ich zu bezweifeln. Dafür ist einfach schon zu viel Arbeit reingesteckt worden.

Darum bin ich euch auch immer dankbar wenn ihr mir weiter helfen könnt (tue das ja auch in meinen "Fachgebieten" )

Etwas OT:
Ich kann mir garnicht vorstellen, wie Leute vor 10-15 Jahren neue Sachen gelernt haben?! Früher war Programmieren was für Leute, die sich damit auskennen - heute kann es jeder Lernen - und ihr, die Community, seid daran... ähm... schuld? Naja ihr wisst wie ich es meine An der Stelle mal ein Danke!
  Mit Zitat antworten
Alt 24-07-2009, 23:33   #6 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Also vielleicht hilft Dir das hier weiter.

Kannste nicht mal ne FLA posten oder nen Link, damit man mal genauer sieht, was
so abgeht?
Angehängte Dateien
Dateityp: fla prop.fla (49,0 KB, 1x aufgerufen)
~pyropete~ ist offline   Mit Zitat antworten
Alt 26-07-2009, 11:12   #7 (permalink)
dr monk
Gast
 
Beiträge: n/a
ich habe das ganze mal nachgebaut (bessergesat nochmal frisch aufgebaut in ner neuen Datei)

Ich glaube ich habe im Aufau Probleme, sodass diese sich auf meine MCs auswirken.
Bei der angehängten Datei tritt der Fehler zwar nicht auf (ist auch um einiges einfacher Strukturiert) aber es gibt denoch probleme.
Die ersten Paar eingaben funktionieren wie Sie sollen. Aber kommt man mal über einen Verhältnissfaktor 1/10 gibt es nur noch Probleme.

Vielleicht habe ich ja das Glück und euch fällt gleich auf woran es liegt (ich tippe darauf, dass ich die Texteingaben nicht richtig umdefiniere und es deswegen immer wieder zu Problemen kommt).

Danke schonmal und einen schönen Sonntag noch!

Link zum Dokument

(Ich bekomm noch die Kriese.... nie kann ich was anhängen weil es ein paar KB zu groß ist... jetzt muss ich vom Arbeitsrechner auf meinen Desktop die Daten kopieren und sie dort per FTP hochladen und hier rein verlinken... arghh )

Geändert von dr monk (26-07-2009 um 11:19 Uhr) Grund: Link zum Dokument hinzugefügt...
  Mit Zitat antworten
Alt 27-07-2009, 06:50   #8 (permalink)
dr monk
Gast
 
Beiträge: n/a
Kann es sein, dass das Problem in dem obrigen Program an einem Rundungsfehler von Flash aus liegt?

Wenn ich z.b. bei Länge einen Wert über 1000 eingebe und bei Breite einen unter 1000 wird der MC falsch dargestellt (er überschreitet die maximalen _height und _width-Werte).

Wenn beide Zahlen allerdings über 1000 liegen ist das Problem wieder weg.

Dafür würde auch sprechen warum es passt, wenn man die Werte durch 1, 10, 100 ... teilt.

Mal so nebenher gefragt: ich werde meinen kommenden Urlaub zum AS3+Flex Selbststudium auf Balkonien nutzen. Ist es in AS3 einfacher mit Eingaben zu rechnen?

Anbei nochmal das Programm als SWF, für diejenigen, die sich damit besser vorstellen können um was es denn genau geht (ohne die FLA herrunter laden zu müssen).
Angehängte Dateien
Dateityp: swf massstab-test2.swf (35,2 KB, 6x aufgerufen)

Geändert von dr monk (27-07-2009 um 06:52 Uhr)
  Mit Zitat antworten
Alt 29-07-2009, 08:57   #9 (permalink)
dr monk
Gast
 
Beiträge: n/a
Question

Guten Morgen.

Wollte mal nachfragen ob inzwischen jemand weiß woran es liegen könnte (leider hat sich das Problem nicht von selbst gelöst - und ich bin leider auch nicht auf eine Lösung gekommen)

MfG Monk
  Mit Zitat antworten
Alt 03-08-2009, 18:24   #10 (permalink)
dr monk
Gast
 
Beiträge: n/a
Dann muss es wohl so sein. Naja, vielleicht wird es später mit AS3 was - schade
  Mit Zitat antworten
Alt 18-09-2009, 17:54   #11 (permalink)
dr monk
Gast
 
Beiträge: n/a
Inzwischen weiß ich woran es lag.
Wenn man 2 texte auf "größer" bzw "kleiner" vergleicht kann das auch nicht funktionieren.
Denn 1xxxx... ist da immer kleiner als 2

Wenn man die Eingaben vorher als Number definiert funktioniert die ganze Geschichte.
  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 12:29 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele