Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-04-2006, 03:34   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 37
Zählvariable funktioniert nicht!?

Hallo Leute,

ich habe ein kleines Problem. In meiner Animation ist einer Variable x der Wert 100 zugewiesen ( var x= 100; ). Dann gibt es noch einen Button. Bei jedem Klick auf den Button soll der Wert um 1 erhöht werden. Dazu habe ich folgende Zeile als ActionScript in den Button eingefügt: on (press) { x = x+1;}. Der aktuelle Wert wird in einem dynamischen Textfeld wiedergegeben. Leider kann ich so oft klicken, wie ich will, der Anfangswert 100 verändert sich nicht..... Entdeckt vielleicht jemand den Fehler? Wäre echt toll.....Danke schonmal für die Hilfe!

Gruß Citrix
Citrixon ist offline   Mit Zitat antworten
Alt 23-04-2006, 08:54   #2 (permalink)
lernwillig
 
Benutzerbild von 23012
 
Registriert seit: Jan 2002
Ort: auf dem Land
Beiträge: 1.327
Hallo,
also ich mache das immer als Button-Aktion:
on (release) {
zaehlen++;
trace(_root.zaehlen);
}
(Was bei Dir x heisst, ist bei mir zaehlen.)
Gruss
23012
__________________
[TUTORIAL] Nahtlose Muster erstellen in Photoshop
23012 ist offline   Mit Zitat antworten
Alt 23-04-2006, 13:24   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 37
das habe ich auch schon versucht, aber da meckert Flash immer rum......!
Nach zähler++; kommt die Fehlermeldung " ; expected "....
Citrixon ist offline   Mit Zitat antworten
Alt 23-04-2006, 14:02   #4 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Zeig mal deinen Code, bitte...
Und: Bezeichner mit Sonderzeichen/Umlauten sind nix!
sonar ist gerade online   Mit Zitat antworten
Alt 23-04-2006, 15:15   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 37
Mein Code ist folgender:

In der Hauptzeitleiste:

var x = 100;

Im Button:

on ( press) { x = x + 1; }

oder alternativ: on ( press) { x++; }

Beides funzt nicht wirklich....bei der ersten Variante bleibt der Zähler immer auf 100, bei der zweiten variante kommt die Fehlermeldung " ; expected "
Citrixon ist offline   Mit Zitat antworten
Alt 23-04-2006, 15:30   #6 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Dann gib dem Button mal nen Instanznamen und mach's so in der Art von der HZL aus, das geht auf jeden Fall:
ActionScript:
  1. var x = 100;
  2.  
  3. btn.onPress = function() {
  4.     x++;
  5.     trace(x);
  6. }
sonar ist gerade online   Mit Zitat antworten
Alt 23-04-2006, 15:40   #7 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
wenn der button in wirklichkeit ein movieclip ist, dann musst du wegen der hirachie aufpassen. ist etwas komisch gelöst, aber daher immer sowas wie this._parent davor hauen wenn du eine Ebene höher willst.

Wobei er dennoch die Variable hochzählt, aber geht dann eben bei 1 los. Ich vermute dass du ein Textfeld hast, das die _root Variable anzeigt und in deinem Button (eigentlich MC) eine weitere Variable hochgezählt wird, die aber nicht angezeigt wird
sebastian ist offline   Mit Zitat antworten
Alt 23-04-2006, 17:24   #8 (permalink)
lernwillig
 
Benutzerbild von 23012
 
Registriert seit: Jan 2002
Ort: auf dem Land
Beiträge: 1.327
Man kann sich auch anzeigen lassen, welchen Wert die
einzelnen Variablen haben.
> Steuerung > Film testen > Fehlersuche > Variablen auflisten
Da kommst Du vielleicht eher auf die Spur.
Gruss
23012
__________________
[TUTORIAL] Nahtlose Muster erstellen in Photoshop
23012 ist offline   Mit Zitat antworten
Alt 24-04-2006, 03:14   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 37
Hallo leute, das mit dem Hochzählen habe ich jetzt auch hinbekommen, aber nun habe ich ein anderes Problem: Die Variable x ist in einem Layer mit var x= 100; deklariert. Nun habe ich in einem anderen Layer die Funktion button.onPress = function(){ x=x+1}. Das Hochzählen funktioniert auch wunderbar, aber der aktuelle Wert von x wird nicht zurückgegeben. Das erkenne ich daran, dass der aktuelle Wert von x in einem MC wiedergegeben werden soll. Und obwohl durch das Klicken auf den Button die Variable hochgezählt wird, bleibt in der Anzeige die 100 stehen. Ich denke mal, das liegt an der Kommunikation zwischen den Funktionen? Kann mir jemand bei dem Problem helfen? Das wäre super toll.....
Citrixon ist offline   Mit Zitat antworten
Alt 24-04-2006, 09:10   #10 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Bitte deine Texte zukünftig etwas mehr strukturieren.

Du hättest vielleicht auch die Beiträge lesen sollen. Es ist wieder das gleiche Hirachie Problem.

Wenn du auf der Hauptzeitleiste eine Variable erstellst (und veränderst), dann ist diese Variable nur da verfügbar.
Also entweder weißt du deinem MC diese Variable auch zu oder du greifst vom Textfeld aus auf _root zu.

Ein paar Möglichkeiten
ActionScript:
  1. this.deinMC.x = this.x;
  2. this.deinMC.deinTextfeld.text = this.x;
  3. this.deinMC.deinTextvariable = this.x;
Ich hoffe du erkennst die Unterschiede. Beim ersten hast du das x dann in "deinMC" verfügbar, bei zweiten wird dem Textfeld "deinTextfeld" in "deinMC" direkt der Wert zugewiesen und das letzte kannst du verwenden, wenn du eine Variable für das Textfeld festgelegt hast.

Das gleiche kannst du im Prinzip vom MC aus machen und auf den darüberliegenden x Wert zugreifen.
sebastian ist offline   Mit Zitat antworten
Alt 24-04-2006, 12:14   #11 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 37
OK, vielen Dank....damit wäre dann das Problem mit der Anzeige gelöst ( habs noch nicht ausprobieren können ). Aber wie sieht es mit den variablen aus. Die variable x wurde ja im Hauptzeitfenster deklariert, durch Drücken eines Buttons im Layer darunter wird sie dann verändert. Muss ich hier auch this. einsetzen? Zum Bsp. so?:
[ActionScript]
Im Layer 1 des Hauptzeitfensters: var x=100;
Im Layer 2 des Hauptzeitfensters: Button.onPress=function(){this.x=this.x+1}
[/ActionScrpit]
Citrixon ist offline   Mit Zitat antworten
Alt 24-04-2006, 12:23   #12 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
this._parent. wäre korrekt.. Aber du hast auch bei Button.onPress kein this, beim Setzen der Variable auch nicht, also lass es auch hier weg

(Der Button sollte übrigens nicht "Button" heißen)
sebastian ist offline   Mit Zitat antworten
Alt 24-04-2006, 12:28   #13 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 37
Das mit dem Button.onPress war ja nur ein veranschaulichendes Besipiel! Aber wenn ich nichts am Code verändere funktioniert die Rückgabe nicht. Ich möchte das mal kurz am Beispiel zeigen:
Code:
1. Layer: var x=100; /*Test:*/ if(x>105){Grafik1._visible=true};
2. Layer: Button.onPress=function(){x=x+1;if(x>105){Grafik2._visible=true}
Bei diesem Test wird Grafik2 angezeigt, Grafik1 aber nicht, obwohl die Bedingungen doch gleich sind. Vielleicht verdeutlicht das etwas mein Problem. Danke für die Hilfe.

Geändert von Citrixon (24-04-2006 um 12:33 Uhr)
Citrixon ist offline   Mit Zitat antworten
Alt 24-04-2006, 12:35   #14 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Na ja die erste If Abfrage wird nur einmal aufgerufen, direkt nachdem x auf 100 gesetzt wurde. Daher kann diese nicht true ergeben

Die zweite Abfrage wird bei jedem onPress ausgeführt, daher ergibt sie irgendwan true.
sebastian ist offline   Mit Zitat antworten
Alt 24-04-2006, 12:38   #15 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 37
Aber Du meinst, die variable wird dann trotzdem "global" verändert?
Wenn ich zum Beispiel in der Buttonfuntion an letzter Stelle
Code:
gotoAndPlay(1)
einsetzen würde, müsste doch die erste if()-Abfrage immer ausgeführt werden, oder?
Citrixon 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 14:16 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele