Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-06-2007, 17:51   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Beiträge: 96
code extrem verkürzen

Hallo. Ich programmiere gerade an einem Spielchen und bin nun an einer stelle wo ich weiss, es würde ständig das gleiche kommen.. gleich im sinne von fast identisch.

Beispiel:

_root.shallo.onRollOver = function() { _root.thallo._visible = true; }
_root.shuhu.onRollOver = function() { _root.thuhu._visible = true; }
_root.stschuess.onRollOver = function() { _root.ttschuess._visible = true; }
...
...
...
(hab das jetzt der übersicht halber extra in einer zeile gelassen)
so. nehmen wir an ich hätte nun 20 buttons die eben shallo, shuhu, stschuess, .. .. .. usw heissen, und 20 passende MCs die eben thallo, thuhu, ttschuess,.. .. .. usw heissen.
Ich möchte jetzt natürlich nicht 20mal dasselbe schreiben sondern das ganz in ein paar einzelnen zeilchen kompakt reinbringen. dass ich eben vorher alles angebe (hallo, huhu, tschuess,.. .. ..) und er dann eben das alles "abarbeitet" mit allen wörtern die ich ihm vorher gegeben habe. also eben so in der art:
[LISTE DER WÖRTER]
_root.s[WORT].onRollOver = function() { _root.t[WORT]._visible = true; }

ich hoffe, ihr versteht was ich meine udn könnt mir helfen =) ist ja noch ne newbiefrage

vielen dank

florian

Geändert von k-nuddel (20-06-2007 um 17:53 Uhr)
k-nuddel ist offline   Mit Zitat antworten
Alt 20-06-2007, 17:58   #2 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Sowas in die Richtung?
Achtung: ungetestet!
PHP-Code:
meinArray = new Array("wort1""wort2""wort3");

for (
i=0i<meinArray.lengthi++) {
  
_root["s"+meinArray[i]].ID i;
  
_root["s"+meinArray[i]].onRollOver = function() {
      
_root["t"+meinArray[this.ID]]._visible true;
  }

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 20-06-2007, 17:59   #3 (permalink)
Think French...
 
Benutzerbild von matt-murdock
 
Registriert seit: Jan 2006
Beiträge: 1.369
du brauchst ein Array [] und eine for().. schleife

a+
argh zu spät...
__________________
Flash MX und Flash 8 - Mac OS X
matt-murdock ist offline   Mit Zitat antworten
Alt 20-06-2007, 18:00   #4 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Beiträge: 96
ich kann schlecht sagen ob das sowa in der richtung ist, da ich den code nicht unbedingt verstehe, aber es sieht verdammt danach aus dass es sowas in der richtung ist, ja!
kannst du's kurz kommentieren? ich möcht das ja selbst machen und nicht machen lassen. davon lern ich ja nix!

danke schonmal für deine Hilfe!
k-nuddel ist offline   Mit Zitat antworten
Alt 20-06-2007, 18:03   #5 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Beiträge: 96
also diesem sogenannten "Array" gebe ich einen beliebigen namen nehme ich an. nur halt immer nen anderen wenn ich öfters solche fälle wie am anfang beschrieben habe, richtig?

was genau heisst das "i" ist das irgendeine variable die da erst deklariert wird? (d.h. ich könnte generell, auch bei mehreren arrays immer das i verwenden?) oder muss ich da jedesmal nen anderen variablennamen nehmen?
k-nuddel ist offline   Mit Zitat antworten
Alt 20-06-2007, 18:16   #6 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Beiträge: 96
also ich habs jetzt mal versucht.
ich wollte, dass eine ganze menge MCs bei spielstart unsichtbar werden.

hab das so gelöst, was allerdings nicht funktionierte (nichts wurde unsichtbar). Die namen der MCs waren tholz, tbretter, twerkzeuge, usw usw usw. (rest hab ich hier ausm code entfernt):
Code:
hilfstextanfangArray = new Array("holz", "bretter", "werkzeuge");
for (i=0; i<hilfstextanfangArray.length; i++) {
  _root["t"+hilfstextanfangArray[i]].ID = i;
  _root["t"+hilfstextanfangArray[this.ID]]._visible = false;
}
was mache ich denn falsch?

Geändert von k-nuddel (20-06-2007 um 18:17 Uhr)
k-nuddel ist offline   Mit Zitat antworten
Alt 20-06-2007, 18:18   #7 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
PHP-Code:
// Ein Array kann beliebig viele »Dinge« aufnehmen, hier
// sind es Strings (Zeichenketten). Diese sind numerisch
// erreichbar (startend mit 0 für das erste Element, 1 für
// das Zweite usw).
meinArray = new Array("wort1""wort2""wort3");

// Dies ist eine for-Schleife, die so lange durchläuft, bis
// die Bedingung nicht mehr erfüllt ist. »i« ist dabei die
// Laufvariable, »i<meinArray.length« die Bedingung und
// »i++« das, was nach jedem Durchlauf gemacht werden
// soll. Beim ersten Durchlauf ist i=0. Das ist kleiner als
// die Länge des Array (welche 3 ist). Somit wird die
// Schleife durchlaufen und am Ende wird i + 1 gerechnet
// (i++ ist dafür eine Kurzform). Im nächsten Durchlauf
// ist i dann also 1 … die Bedingung gilt immernoch usw.
for (i=0i<meinArray.lengthi++) {

  
// Hier wird der i-Wert gespeichert, da dieser nach dem
  // Durchlaufen der Schleife bei 2 stehen wird. Selbst wenn
  // Du dann den Button anklickst, der im ersten Durchlauf
  // mit einem onRollOver-Handler belegt wurde (wo i noch
  // 0 war), wäre i jetzt da auch 2. Von daher würde sowas
  // wie »_root["t"+meinArray[i]]« im Handler nicht funk-
  // tionieren, da dann jeder Button den String mit der
  // Nummer 2 (in diesem Fall "wort3") ansteuern würde.
  // Von daher wird dieser Wert eben in der ID gespeichert,
  // damit man auch später noch drauf zugreifen kann.
  
_root["s"+meinArray[i]].ID i;
  
// Hier und auch schon in der Zeile vorher wird das Ziel
  // zusammengesetzt. Ist »i« z.B. 1 ensteht
  // "s"+meinArray[1] -> "s"+"wort2" -> "swort2"
  // Da sich "swort2" im _root befindet, kann man über
  // die eckigen Klammern drauf zugreifen.
  
_root["s"+meinArray[i]].onRollOver = function() {
      
_root["t"+meinArray[this.ID]]._visible true;
  }

Ich hoffe nur, ich hatte da jetzt keinen Programmier-
Fehler drin, bei so einer schönen Erklärung.

gruß, gaspode

Geändert von gaspode (20-06-2007 um 22:49 Uhr)
gaspode ist offline   Mit Zitat antworten
Alt 20-06-2007, 18:22   #8 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
PHP-Code:
hilfstextanfangArray = new Array("holz""bretter""werkzeuge");
for (
i=0i<hilfstextanfangArray.lengthi++) {
  
_root["t"+hilfstextanfangArray[i]].ID i;
  
_root["t"+hilfstextanfangArray[this.ID]]._visible false;

Wenn Du keinen Event-Handler (onRollOver u.ä.) benutzt,
brauchst Du das ID-Zeugs nicht. Das geht dann so:
PHP-Code:
hilfstextanfangArray = new Array("holz""bretter""werkzeuge");
for (
i=0i<hilfstextanfangArray.lengthi++) {
  
_root["t"+hilfstextanfangArray[i]]._visible false;

Die Instanzen sind aber "holz", "bretter" usw. benannt, oder?

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 20-06-2007, 18:27   #9 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Beiträge: 96
ja benannt ist alles. und es funktioniert auch. ist nix mehr sichtbar

nun versuch ich das ganze mal selbst. mit den ganzen andern dingern!
vielen dank!! vorallem für die echt hilfreiche erklärung!!
k-nuddel ist offline   Mit Zitat antworten
Alt 20-06-2007, 18:29   #10 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Beiträge: 96
die laufvariable kann ja hoffentlich immer i sein, oder muss das immer ne andere sein?
k-nuddel ist offline   Mit Zitat antworten
Alt 20-06-2007, 18:35   #11 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Beiträge: 96
ok, kann gleich bleiben

also vielen vielen dank für die göttliche hilfe !!!
k-nuddel ist offline   Mit Zitat antworten
Alt 20-06-2007, 18:46   #12 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Zitat:
Zitat von k-nuddel Beitrag anzeigen
also vielen vielen dank für die göttliche hilfe !!!
Kein Problem.

gruß, gaspode
gaspode 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 23:23 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele