Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-01-2005, 11:11   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 16
Question problem mit globaler variable

hallo,

ich habe eine globale variable i deklariert. sie wird beim "release" von mehreren
schaltflächen von 0 hochgezählt. sobald ich aber eine schaltfläche in einem
mc habe, wird die variable nicht mehr hochgezählt.?


deklaration:
_global.i;
i=0;



action script auf der schaltfläche welche in einem mc ist:

on (release) {
_global.i = _global.i + 1;
this._parent.gotoAndStop(4)
}

vielen dank schon mal!
harmar ist offline   Mit Zitat antworten
Alt 22-01-2005, 11:20   #2 (permalink)
Neuer User
 
Benutzerbild von Lukin
 
Registriert seit: Jun 2001
Ort: mainz
Beiträge: 692
du hast i auf der bühne deklariert, oder?

versuch sie mal mit _root an z u sprechen.

PHP-Code:
on (release) { 
_root._global._root._global.1;
this._parent.gotoAndStop(4)

Kann von allen Funktionen benutz werden, liegt aber im root deiner fla.

hoffe es geht so

grüße
__________________
Lukin Lin Satima
Lukin ist offline   Mit Zitat antworten
Alt 22-01-2005, 11:42   #3 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
nein, nie _root._global schreiben, das macht keinen Sinn, und wird auch höchstwahrscheinlich kein Ergebnis liefern.

Zum Problem:

Du kannst globale Variablen nur schreiben, wenn du den Pfad (also _global) explizit angibst.

Wenn du also auf _root schreibst:
ActionScript:
  1. _global.i = 1;
  2. i = 2;
dann gibt
ActionScript:
  1. trace(_global.i)
weiterhin 1 aus, aber jetzt gibt es auch _root.i mit dem Wert 2.

Also wenn du globale Variablen beschreiben möchtest, IMMER _global. davor!

Lesen kannst du sie auch ohne _global, wenn nicht "näher" in deinem Scope eine Variable gleichen Namens existiert.
ActionScript:
  1. _global.i = 1;
  2.  
  3. _root.onEnterFrame = function()
  4. {
  5. var i = 2;
  6.  
  7. trace(i);
  8. };
wird 2 liefern, da die lokale Variable i "näher" liegt.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)

Geändert von Janoscharlipp (22-01-2005 um 11:46 Uhr)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 22-01-2005, 11:52   #4 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 16
....hat leider auch nicht geklappt.
harmar ist offline   Mit Zitat antworten
Alt 22-01-2005, 12:01   #5 (permalink)
Neuer User
 
Benutzerbild von the binary
 
Registriert seit: Jul 2001
Ort: Berlin | Friedrichshain
Beiträge: 3.561
weil so i wieder neu definiert wird...

ActionScript:
  1. _global.i = 1;
  2.  
  3. _root.onEnterFrame = function()
  4. {
  5. trace(i++);
  6. }

gruss

so sollte es gehen

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 22-01-2005, 14:25   #6 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 16
Question

wie implementiere ich das?

_root.onEnterFrame = function() -> was passiert in dieser zeile?

habe leider nicht so gute action script kenntnisse. muss ich function()
mit etwas ersetzen?
harmar ist offline   Mit Zitat antworten
Alt 22-01-2005, 14:33   #7 (permalink)
Neuer User
 
Benutzerbild von the binary
 
Registriert seit: Jul 2001
Ort: Berlin | Friedrichshain
Beiträge: 3.561
einfach so kopieren, in den ersten frame einfügen und schauen was passiert.
versteh dein frage nicht ?

ist nur eine unterschiedliche schreibweise.

PHP-Code:
_root.onEnterFrame = function () { trace(i) }

_root.onEnterFrame = function () { 
  
trace(i
}

_root.onEnterFrame = function ()
{
  
trace(i)

ist alles das gleiche. ist nur unterschiedlich gut lesbar und
und unterscheidet sich in der anzahl der zeilen...

grüssle
__________________
8bm | join ff@BOINC
formpackage.org | audiohunter.de | problematica.de | 8ball-media.de/blog | taikonauten.cn
the binary ist offline   Mit Zitat antworten
Alt 22-01-2005, 14:52   #8 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 16
also erstmal vielen dank für die schnellen antworten und für deine gedult.

hab versucht i mit 10 zu initialisieren -> dann hat es mit trace "10" aufgerufen,
was ja richtig ist, aber nicht nur einmal sondern so:
10
10
10
.... (bis ich dann halt das fenster geschlossen habe)

also habe ich i wieder mit 0 initialisiert und statt trace { i= i+ 1 } eingegeben.
leider hat es dann 258 ausgegeben...
ich denke mal das hat was mit dem 10 10 10....zu tun.

verstehst du was ich meine....?
oh mann!
harmar ist offline   Mit Zitat antworten
Alt 22-01-2005, 18:04   #9 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
das geht schon so.
mc mit dem namen button.
ActionScript:
  1. _global.i=1
  2.  
  3. button.onRelease = function() {
  4.     trace(_global.i+=1)
  5. }
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 22-01-2005, 18:30   #10 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 16
hmmm, das funzt anscheinend auch nicht. ich habs jetzt so:

on (release) {

button.onRelease = function() {
trace(_global.i+=1)
}

this._parent.gotoAndStop(4)
}

wobei "button" der mc ist, in welchem die schaltfläche drin ist.
ich komme zwar auf frame 4, das trace wird aber nicht ausgegeben.
am projekt funktioniert alles bis auf diesem "kleinem" problem
vielen dank nochmal!
harmar ist offline   Mit Zitat antworten
Alt 22-01-2005, 18:40   #11 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
button ist dann die schaltfläche dort wird doch das release draufgeschrieben.
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 22-01-2005, 19:03   #12 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 16
schon wieder ich...

jetzt habe ichs geändert. das problem ist, dass wenn ich auf die schaltfläche
klicke, es das trace nicht ausgibt, sonder einfach zum bild 4 springt.

lasse ich hingegen " this._parent.gotoAndStop(4)" weg, dann kommt beim
2. klick auf die schaltfläche die meldung Not a Number. ?
harmar ist offline   Mit Zitat antworten
Alt 22-01-2005, 19:14   #13 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
also nochmal
du hast auf der HZL einen MC mit dem instanznamen meinMC.
in diesem MC hast du einen schalter mit dem namen button.
und dann diesen code in das erste bild der HZL und keinen code auf den schalter oder mc.
ActionScript:
  1. _global.i=1
  2.  
  3. deinMC.button.onRelease = function() {
  4.     trace(_global.i+=1)
  5. }
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 23-01-2005, 11:21   #14 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
wichtig sind die Instanznamen, ohne die geht es nicht.
Und am besten du nimmst was anderes als den Namen "button", das gibt es nähmlich schon.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 23-01-2005, 17:19   #15 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 16
oki, hab das problem etwas anders gelöst :-) jedenfalls ist jetzt ein anderes problem "aufgetaucht":
und zwar bei einem drag n drop; hier wird das gedraggte objekt auf das
richtige ziel ausgelassen, und es sollte die variable i hochgezählt werden...

on (release) {
stopDrag();
if (this._droptarget == "/ziel") {
i=i+1;
_root.Kontrolle2.gotoAndStop(2);
}

das ist alles in der hauptzeitleiste,wo auch die globale variable deklariert
worden ist. das problem ist dass i nicht hochgezählt wird. wenn ich statt
"i=i+1;" z.b trace(5) hinschreibe, dann gibt es 5 aus.
wenn ich aber trace(i+1) hinschreibe, zeigt es mir "Not a Number" an. also
stimmt was mit der variablen nicht, aber was? :

danke nochmal!
harmar 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 04:27 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele