Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-12-2005, 02:42   #1 (permalink)
Zurückgekehrt
 
Registriert seit: Nov 2005
Ort: Berlin
Beiträge: 84
gewünschte Array Elemente überspringen?

Hi Mädels und frohe Ostern ,

nehmen wir mal das Beispiel hier aus dem Board, welches dazu dient, mehrere häufig mit gleichen Props zu verändernde mc's in ein Array verpacken zu können und mit nur EINER Anweisung abarbeiten zu können, statt mit hundert gleichen Anweisungen hantieren zu müssen:

PHP-Code:
function propChange ( array, eigenschwert ) {
for ( var 
n in array ) array[n][eigensch] = wert;
}

//genutzt am beispiel:

setalpha = new Array(infotxt,bigframe,bigframe2,btnhover1,btnhover2,btnhover3,btnhover4);
propChange setalpha"_alpha"0); 
SO, und jetzt nehmen wir mal an, solche Arrays würden im Falle eines bestimmten Konzepts den gesamten AS-Code ums Vielfache kürzen und beschleunigen. Also stellt sich doch die Frage, warum dann nicht immer solche "verwandte" mc's im Array abhandeln, und nur die jeweilgen Ausnahmen in der Anweisung umgehen??

Und genau das ist die Frage, nämlich wie?:

Gibt es eine Möglichkeit innerhalb der Anweisung über die function propChange (siehe oben) ein Element des Arrays zu umgehen? Muss dafür eine Tür in der Funktion programmiert werden, oder gibt es da einen direkten Trick innerhalb einer Anweisung? Also am obigen Beispiel mal nachgezeichnet: Ich würde wollen das diese Funktion in einigen Fällen einzelne btnhover's nicht _alpha=0 setzt, ohne das aber in hundert zeilen schreiben zu müssen.

Da würd ich das ganze gern genauso wie oben schreiben wollen, nur mit der Möglichkeit als vierten Parameter der Funktion ein Element nennen zu dürfen was umgangen wird oder bei der Anweisung direkt sagen zu können {außer mc nummer 3...} oder so...


Lieben Dank und Lieben Gruß
__________________
Grüße aus Berlin.
PS: Wenn ihr Problematiken zu Actionscript mit PHP habt, bitte involviert mich. Da interessiert mich alles.

Geändert von c8n8b1s (26-12-2005 um 02:51 Uhr)
c8n8b1s ist offline   Mit Zitat antworten
Alt 26-12-2005, 04:49   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
natürlich mit einer if-abfrage.

ansonsten (weiss ja nicht, was du genau machen willst): in dem array sind ja nur zeiger auf die mc's und nicht die mc's selbst. somit ist der speicherbedarf gering, wenn man die mc's in mehrere arrays zusammenfasst. z.b.

frames = [bigframe, bigframe2];
hovers = [btnhover1, btnhover2, btnhover3, btnhover4];
//alle=[infotxt,bigframe,bigframe2,btnhover1,btnhover2,btn hover3,btnhover4];
// bzw.
alle = [infotxt].concat(frames, hovers);
nobtns=[infotxt].concat(frames);
// usw.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (26-12-2005 um 04:51 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 26-12-2005, 04:59   #3 (permalink)
Zurückgekehrt
 
Registriert seit: Nov 2005
Ort: Berlin
Beiträge: 84
If abfrage war natürlich auch mein erster Gedanke, aber das finde ich nicht elegant, da jedes der Elemente (oder nenn es Werte, Instanzen, whatever) in dem Array mal bei einem propChange der für alle ausgeführt werden soll ausgelassen wird, nur jedesmal ein Anderes. Deswegen find ich da jedes mal eine if Abfrage sehr aufwendig. Und Verschiedene Arrays um Instanzen temporär auszugrenzen machen da auch kein Sinn, denn dann bräuchte ich genauso viel Arrays wie Instanzen nur das imer eine Instanz fehlt und das macht nicht wirklich Sinn. Es gibt in dem SInn keine Gruppen, weil jedes einzelen Element(Instanz) wird mal die Ausnahme sein...


gibt es nicht sowas wie: ???

PHP-Code:
beispiel = new Array (a,b,c,d,e,f)
beispiel[but"c"]._alpha 20
Das war natürlich nur ne Versinnbildlichung...

Und ich suche jetzt quasi den Trick mit dem but"c"

Oder konstruktive Gegenfrage zu concat, obwohl hier wohl eher pop/push:

PHP-Code:
set = new Array (a,b,c,d,e,f,g);

//im Script Flow dann:

set set.splice(c);
propChange (set_alpha20);
set set.push(c); 
Das würde zur Not auch gehen, obwohl mir beispiel[but"c"]._alpha=20; besser gefällt


... Und da das ja alles immer inerhalb einer this.onRollOver Eventbedingung von einem der besagten Instanzen vorkommt und immer genau die Instanz ausgegrenzt werden muss, könnte man das Element auch jedesmal mit "this" als Definition genau ausgrenzen.... Ich weiß nicht, aber für mich riecht das gewaltig nach einer richtig schlanken genialen "Klasse" ! .... puh aber wie ?????????
__________________
Grüße aus Berlin.
PS: Wenn ihr Problematiken zu Actionscript mit PHP habt, bitte involviert mich. Da interessiert mich alles.

Geändert von c8n8b1s (26-12-2005 um 05:40 Uhr)
c8n8b1s ist offline   Mit Zitat antworten
Alt 26-12-2005, 05:36   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
dein '..but"c"..' ist halt nur ein if-test und den musst du selbst erstellen.
Code:
function only_me(array,eigensch, wert) {
	for (var n in array) {
		if (array[n] != this) {
			array[n][eigensch] = wert;
}	}	}

function propChange(array, ex, eigensch, wert) {
	for (var n in array) {
		if (array[n]._name.indexOf(ex)<0) {
			array[n][eigensch] = wert;
}	}	}
setalpha = new Array(infotxt, bigframe, bigframe2, btnhover1, btnhover2, btnhover3, btnhover4);
propChange(setalpha, "btn", "_alpha", 0);
edit: name => _name
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (26-12-2005 um 05:45 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 26-12-2005, 05:43   #5 (permalink)
Zurückgekehrt
 
Registriert seit: Nov 2005
Ort: Berlin
Beiträge: 84
Zitat:
Zitat von hgseib
Code:
function propChange(array, ex, eigensch, wert) {
	for (var n in array) {
		
if (array[n].name.indexOf(ex)<0) { // jaaaa!!!!!!!!!!

			array[n][eigensch] = wert;
}	}	}
setalpha = new Array(infotxt, bigframe, bigframe2, btnhover1, btnhover2, btnhover3, btnhover4);
propChange(setalpha, "btn", "_alpha", 0);

Du bist genial!!!! Da meinte ich mit dem Zusatz Paramter in der PropCHange FUnktion. Ich uwsste nur nicht wie!!!! 100000000000000 Dank

Ganz Dollen Dank und Grüße
__________________
Grüße aus Berlin.
PS: Wenn ihr Problematiken zu Actionscript mit PHP habt, bitte involviert mich. Da interessiert mich alles.
c8n8b1s ist offline   Mit Zitat antworten
Alt 26-12-2005, 06:23   #6 (permalink)
Zurückgekehrt
 
Registriert seit: Nov 2005
Ort: Berlin
Beiträge: 84
hmmm ... scheint aber net zu funktionieren
__________________
Grüße aus Berlin.
PS: Wenn ihr Problematiken zu Actionscript mit PHP habt, bitte involviert mich. Da interessiert mich alles.
c8n8b1s ist offline   Mit Zitat antworten
Alt 26-12-2005, 06:27   #7 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
siehe edit: name => _name

wollte nur testen, ob du mitdenkst ;-)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 26-12-2005, 06:33   #8 (permalink)
Zurückgekehrt
 
Registriert seit: Nov 2005
Ort: Berlin
Beiträge: 84
:-) nenene spatzerl das hatte ich geändert uind wenn du genau hinsiehst hatte ich in dem Post dass das net klappt auch name und NICHT _name zu stehn , und im übrigen ist das was das script tut völlig klar und wenn du möchtest erläutere ich es auch gern zum Beweis. indexOf kenn ich bereits von Java.

Aber indexOf funktionuckelt hier aus irgend einem Grund nicht. Habs auch in AS noch nie benutzt. Dafür hab ich " != ex "an die Stelle gesetzt und das funzt...

LG
__________________
Grüße aus Berlin.
PS: Wenn ihr Problematiken zu Actionscript mit PHP habt, bitte involviert mich. Da interessiert mich alles.

Geändert von c8n8b1s (26-12-2005 um 06:37 Uhr)
c8n8b1s ist offline   Mit Zitat antworten
Alt 26-12-2005, 06:45   #9 (permalink)
Zurückgekehrt
 
Registriert seit: Nov 2005
Ort: Berlin
Beiträge: 84
Aber trotzdem nochmal lieben Dank für den Denkanstoß, so hab ich wenigstens das Gefühl auch noch was dazu beigetragen zu haben, hehehe


PS: Ich versuch das ganze jetzt mal für die Anwendung von nem prototype anstelle von _alpha umzumodeln. Ich fürchte da kommen wieder ungeahnte probs auf mich zu...

Achso und damit alle was davon haben, Hier für alle anderen wie ich es jetzt nutze und wie es funktioniert (mein dank geht an hgseib):

PHP-Code:
function propChange ( array, eigenschwert ) {
for ( var 
n in array ) array[n][eigensch] = wert;
};

function 
propChangeX(array, exeigenschwert) {
for (var 
n in array) {
if (array[
n] != ex) {
array[
n][eigensch] = wert;
}
}
};

all = new Array (infotxt,bigframe,bigframe2,btnhover1,btnhover2,btnhover3,btnhover4);
propChange all"_alpha"0);

btnhover4.onRollOver = function(){  
this.fadinout(0,40,1,1);
propChangeX(all,this,_alpha,0);

__________________
Grüße aus Berlin.
PS: Wenn ihr Problematiken zu Actionscript mit PHP habt, bitte involviert mich. Da interessiert mich alles.

Geändert von c8n8b1s (26-12-2005 um 06:46 Uhr)
c8n8b1s ist offline   Mit Zitat antworten
Alt 26-12-2005, 07:04   #10 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
'..das net klappt auch name und NICHT _name zu stehn..'
eben das ist ja falsch (und wurde von mir nachträglich korrigiert). die eigenschaft heisst: _name

'..Dafür hab ich " != ex "an die Stelle gesetzt und das funzt..'
ich hatte einen teil des namens übergeben (womit ganze gruppen ausgeschlossen werden können), du den zeiger auf ein objekt. das erfordert natürlich einen anderen test.

solange du keine class'e oder prototype machst, dann gehts auch so, damit in der funktion this auch this ist (anstelle von ex):
propChangeX.call(das_mc ,all,_alpha,0);

function propChangeX(array, eigensch, wert) {
for (var n in array) {
if (array[n] != this) {
array[n][eigensch] = wert;
} } };

aber da kann man sich noch 10.000 andere varianten einfallen lassen.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (26-12-2005 um 07:07 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 26-12-2005, 07:21   #11 (permalink)
Zurückgekehrt
 
Registriert seit: Nov 2005
Ort: Berlin
Beiträge: 84
hehehe ok --- jetzt fühl ich mich nass gemacht

hm dass mit dem _name hab ich nicht gerafft. Aber eigentlich wollt ich damit nur sagen dass ich nicht am copy&pasten bin, sondern versuche die sachen auf mein project anzupassen und zu verstehn, denn sonst komm ich da nich weit. Denn meine Fragen sind schon sehr allgemein gehalten, weil ich es verstehn muss um es anzuwenden, und kommen immer dann wenn ich den Wald vor lauter Bäumen nicht sehe. Zum Beispiel in diesem Fall kämpf ich jetzt seid unserem letzten Post an dem Problem dass der Prototype fürs Faden den ich benutze offensichtlich nicht mit Array funktioniert. Somit steh ich wieder bei null und starre den Prototype an um mir einfallen zu lassen was ich ändern muss. Vieles aus PHP was ich als Sonnags-PHPler kenne kann ich hier nicht nutzen.

habs jetzt so gelöst obwohl ich das auch nicht elegant finde:
PHP-Code:

// hab die bereiche jetzt in verschiedene navi arrays mit ner numerierung gepackt, 
//bin aber damit nicht glücklich... weil dann sieht es bei jedem button so aus...

btnhover4.onRollOver = function(){  
    
this.fadinout(0,40,1,1);
    for (var 
n in nav[1]) {
    
nav[1][n].fadinout(1,0,1,1); //fadinout is ein prototype zum faden hier aus dem board
    
}
    for (var 
n in nav[2]) {
    
nav[2][n].fadinout(1,0,1,1);
    }
    for (var 
n in nav[3]) {
    
nav[3][n].fadinout(1,0,1,1);
    }

__________________
Grüße aus Berlin.
PS: Wenn ihr Problematiken zu Actionscript mit PHP habt, bitte involviert mich. Da interessiert mich alles.

Geändert von c8n8b1s (26-12-2005 um 07:36 Uhr)
c8n8b1s ist offline   Mit Zitat antworten
Alt 26-12-2005, 07:49   #12 (permalink)
Zurückgekehrt
 
Registriert seit: Nov 2005
Ort: Berlin
Beiträge: 84
hab jetzt nocheinmal die _name.indexOf Variante versucht zu verstehn und anzuwenden auf den Fade Protoype und einem 2-dimensionalen Array: nav(1,2,3,4); nav[1] =...2=... , und so weiter und dann propChange (nav, nav[1], pt) (pt anstelle von eigensch und wert, auch in der funktion propChange geändert)aber da blendet die gesamte stage aus. So wie auch schon vorher, als ich sagte dass es nicht funzt. Also hatte das mit dem _name oder name wohl nichts zu tun, sondern ich habe woanders noch einen Fehler...
__________________
Grüße aus Berlin.
PS: Wenn ihr Problematiken zu Actionscript mit PHP habt, bitte involviert mich. Da interessiert mich alles.
c8n8b1s ist offline   Mit Zitat antworten
Alt 26-12-2005, 16:26   #13 (permalink)
Zurückgekehrt
 
Registriert seit: Nov 2005
Ort: Berlin
Beiträge: 84
so wird die ganze bühne ausgeblendet:

PHP-Code:
function propChangeXpt(array, expt) {
    for (var 
n in array) {
        if (array[
n]._name.indexOf(ex)!= true) {
            array[
n][pt];
}    }    } 
PHP-Code:
btnhover4.onRollOver = function(){  
    
this.fadinout(0,40,1,1);
    
propChangeXpt(nav,"4",fadinout(1,0,1,1));

kann mir bitte jemand helfen, ich hab auch versucht den string array[n][pt] umzustellen aber egal wie ich versuche es zusammenzufügen will es nicht klappen und die bühne fadet komplett aus als würde AS nur den fadinout prototype erkennen...

Lieben Dank und Lieben Gruß
__________________
Grüße aus Berlin.
PS: Wenn ihr Problematiken zu Actionscript mit PHP habt, bitte involviert mich. Da interessiert mich alles.
c8n8b1s ist offline   Mit Zitat antworten
Alt 26-12-2005, 16:50   #14 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
"..indexOf(ex)!= true.."
bitte die befehle und deren parameter im handbuch/flash hilfe nachlesen

ansonsten hilft es ein paar trace's ein zu bauen
und der debugger
---------

anhang: 3 muster
Angehängte Dateien
Dateityp: zip div.zip (7,4 KB, 1x aufgerufen)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (26-12-2005 um 16:53 Uhr)
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 14:47 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele