Antworten auf deine Fragen:
Neues Thema erstellen

Buttons in for-Schleife?

Reb00t

Aktives Mitglied

Hey. Habe wieder ein Problem.

Script ist folgendes:

PHP:
/*---Farbauswahl---*/
var Colors:Array = new Array("0x000033", "0x000099", "0x00CBFF", "0x990000", "0xCC0000", "0xFF3232", "0x003300", "0x009900", "0x00FF00", "0x000000", "0x666666", "0xCCCCCC");
var newColor = 0x000000;
_root.farbauswahl._visible = false;
_root.farbauswahl.enabled = false;

var samplecolor = new Color(button5);
samplecolor.setRGB(newColor);
this.onEnterFrame = function(){
button5.onRelease = function() {
    _root.farbauswahl._visible = true;
    _root.farbauswahl.enabled = true;
    for (var i = 0; i<=11; i++) {
        _root.farbauswahl["farbe"+i].onRelease = function() {
            _root.newColor = _root.Colors[i-1];
            trace(newColor);
            _root.farbauswahl._visible = false;
            _root.farbauswahl.enabled = false;
            samplecolor.setRGB(newColor);
        };
    }
};
}

Wenn ich nen Button in meinem MC "farbauswahl" anklicken will,
gibt er mir immer nur die Werte newColor vom letzten Button aus.

Ich habe also 11 Buttons aber er gibt mir immer nur die Werte vom
11. aus.
Wie mache ich das, das ich jeweils die Werte für ALLE Buttons von 0-11
die ich anklicke bekomme?

lg, Reb00t
 

sokie

Mod | Web

AW: Buttons in for-Schleife?

ich hänge mit der logik ein bisschen an der Stelle, wo du einem Button5 bei jedem onEnterFrame dieselbe onRelease-funktionalität zuweist - kann ja irgendwie nicht Sinn der sache sein, oder?

wenn man in einer Schleife MC Eigenschaften zuweist kann man zB den mc um die Eigenschaft erweitern, dann bleibt sie auch erhalten, ansonsten ist da natürlich der Wert den i zuletzt hat.
Code:
for (var i = 0; i<11; i++){
this["meinmc" + i + "_mc"].meineEigenschft = eigenschaften[i];
}
um dann später per
Code:
this["meinmc" + i + "_mc"].onRelease = function(){
  trace(this.meineEigenschaft);
}
wieder drauf zugreifen zu können.
 

Reb00t

Aktives Mitglied

AW: Buttons in for-Schleife?

Mh...
Ich habe jetzt mal die onEnterFrame Funktion rausgehauen.
Hab das auch nur testweise eingefügt um zu sehen ob sich damit das
Problem beheben lässt.
Kannst du vllt mal deinen Code auf meinen anwenden?
Wüsste jetzt nicht wie ich das umschreiben sollte.

Fakt bei meiner Schleife ist folgendes:

Ich kann jeden x-beliebiegen Button drücken (Farbe0 - Farbe11) und er
gibt mir immer nur 0xCCCCCC, also die letzte Farbe aus.
Ich will aber, dass er mir die Farbe zum dazugehörigen Button ausgibt!

Also den ersten Arraywert auf den Button Farbe1.

Verstehst du mich jetzt?

Danke schonmal für deine Antowort nur leider weiß ich immoment nichts
damit anzufangen.

LG, Reb00t
 
A

ad86

Guest

AW: Buttons in for-Schleife?

Hi,

Noch ein kleines Problem, was ich bei Deinem Script sah:
Code:
    for ([COLOR=Red]var i = 0[/COLOR]; i<=11; i++) {
        _root.farbauswahl["farbe"+i].onRelease = function() {
            [COLOR=Red]_root.newColor = _root.Colors[i-1];[/COLOR]
            trace(newColor);
            _root.farbauswahl._visible = false;
            _root.farbauswahl.enabled = false;
            samplecolor.setRGB(newColor);
        };
    }
Was macht 0 (Anfangswert von i) minus 1? -1, da müsste Dir Flash eigentlich schon einen Fehler werfen, denn ein Array sollte erst bei 0 anfangen.

MFG ad86
 

Reb00t

Aktives Mitglied

AW: Buttons in for-Schleife?

Wenn ich nur Colors drinnen habe gibt er mir ein undefined aus.
mit dem i-1 passt es wieder.

Man macht ja auch bei array.length-1 das gleiche. Der letzte wert würde
sonst als undefined dastehen (da der wert nicht vorhanden ist).
Aufjedenfall funktionierts so.
 

sokie

Mod | Web

AW: Buttons in for-Schleife?

Code:
[COLOR=#000000][COLOR=Black]var Colors:Array = new Array("0x000033", "0x000099", "0x00CBFF", "0x990000", "0xCC0000", "0xFF3232", "0x003300", "0x009900", "0x00FF00", "0x000000", "0x666666", "0xCCCCCC");

for (var i = 0; i<Colors.length; i++){
    var m = i+1;
    this.farbauswahl["farbe" + m].farbe = Colors[i]; //neue Eigenschaft: "farbe"
    this.farbauswahl["farbe" + m].onRelease = function(){
        trace(this.farbe);
    }
}[/COLOR][COLOR=#007700]
[/COLOR][/COLOR]

ps: einfacher wäre es, wenn deine instanznamen auch mit farbe0 beginnen würden.
 
Zuletzt bearbeitet:
A

ad86

Guest

AW: Buttons in for-Schleife?

Hi,

Wenn ich nur Colors drinnen habe gibt er mir ein undefined aus.
mit dem i-1 passt es wieder.

Man macht ja auch bei array.length-1 das gleiche. Der letzte wert würde
sonst als undefined dastehen (da der wert nicht vorhanden ist).
Aufjedenfall funktionierts so.


Also das mit length-1 kommt ja daher, dass die Informatik bei 0 anfängt zu zählen:
Index: 0, 1, 2, 3, 4
bei einem Array mit Länge 5. Will man auf das erste Element zugreifen: array[0], will man auf das letzte Element zugreifen:array[5-1], denn
array[5], würde Dir einen Fehler werfen, dass Du außerhalb des gültigen Bereiches bist, da Du ja schon auf das sechste Element damit zugreifen würdest.

Das DU ein undefined bekommst, kann dadurch kommen, dass Du auf ein Element zugreifen willst, was nicht da ist, oder noch keinen Wert bekommen hat.
ODER was mir gerade einfällt: Dein i ist ja erstmal keine Zahl (die 0 kann ja auch als Zeichen stehen), wenn Du also "var i:int=0" (ich hoffe das ist in AS2 so richtig) schreibst, gibt er vielleicht kein undefined aus, da er ja weiß, dass das eine Zahl ist. Sind aber alles nur Möglichkeiten. Wie das AS2 genau handhabt, weiß ich ja nicht. Und austesten kann ich es auch gerdae nicht, da muss ich erst wieder auf MacOS.

Aber Du müsstest doch trotzdem ein undefined bekommen, und zwar am Anfang für array[-1], oder?

MFG ad86
 

sokie

Mod | Web

AW: Buttons in for-Schleife?

"var i:int=0" (ich hoffe das ist in AS2 so richtig)
gibts in AS2 nicht. Ähnlicher typ wäre :Number (kann float oder integer sein).
übrigens kann in Flash ein index auch [-1] sein:
Code:
var arr:Array = new Array();
arr[-1] = "meine Farbe";
trace(arr[-1]);
ist der angeforderte index nicht im Array, wird "undefined" ausgegeben.

natürlich hätte das erste Element imArray hier:
Code:
var meinArr:Array = new Array("ein Wert");
den Index[0]
 
Zuletzt bearbeitet:

Reb00t

Aktives Mitglied

AW: Buttons in for-Schleife?

Danke.

Habs jetzt hinbekommen.
Wenn jemand interesse am Code hat dann poste ich ihn nochmal.

lg, Reb00t
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.068
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben