Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-08-2003, 20:47   #1 (permalink)
Achim olé
 
Benutzerbild von olien
 
Registriert seit: Jul 2002
Ort: Feldafing
Beiträge: 595
dynamisch buttons (MC) erstellen

hallo zusammen,

ich versuche gerade ein kleines menue komplett zu scripten
(lacht nur nicht über den zusammengesuchten code :-)))

über ein beispiel für eine einfachere schreibweise würde ich
mich natürlich sehr freuen.

so. die textfelder in dem mc werden angezeigt aber natürlich
verdeckt wenn der mc seine farbe ändert. die links
funktionieren dann auch irgendwie nicht.

wenn ich von einer "buttoneinfärbung" absehe funktioniert alles. alle textfelder
(es sind mehr ... das script ist eine abgespeckte version hier fürs forum (der lesbarkeit halber :-)))
zeigen die richtigen texte und verweisen auch auf die
gewünschten links. allerdings fehlt mir dann ein schöner
button effekt :-((


das ganze soll nachher in einem mc (unter eine maske)
scrollbar sein.....aber das kommt später.

und jetzt der code (schähm):

ActionScript:
  1. lv = new LoadVars();
  2. lv.onLoad = function() {
  3.     this.titel  = this.name.split(",");
  4.  
  5. for (var i = 0; i<this.titel.length; i++) {
  6.  
  7. _root.createEmptyMovieClip(["ButtonMC"+i],i-1);
  8. _root["ButtonMC"+i]._x=50;
  9. _root["ButtonMC"+i]._y=i*25;
  10.  
  11. _root["ButtonMC"+i].farbe=new Color(["ButtonMC"+i]);
  12.  
  13. _root["ButtonMC"+i].onRollOver=function(){
  14.         this.farbe.setRGB(0x0000ff);
  15. }
  16.  
  17. _root["ButtonMC"+i].onRollOut=function(){
  18.         this.farbe.setRGB(0xff00ff);
  19. }
  20.  
  21. _root["ButtonMC"+i].onPress=function(){
  22.      getURL([url]www.flashforum.de[/url]);
  23. // hier soll natürlich (dynamisch) ein link zu den angegebenen titel rein.
  24. }
  25.  
  26.     _root["ButtonMC"+i].createTextField(["ueberschrift"+i], a++, 35, ["ButtonMC"+i]._y, 350, 20);
  27.     _root["ButtonMC"+i]["ueberschrift"+i].border=true;
  28.     _root["ButtonMC"+i]["ueberschrift"+i].backgroundColor=0xc9c9c9;
  29.     _root["ButtonMC"+i]["ueberschrift"+i].background=true;
  30.     _root["ButtonMC"+i]["ueberschrift"+i].text = this.titel[i];
  31.  
  32. };
  33. };
  34. lv.load("daten.txt");

in der textdatei "daten.txt" steht folgendes:

name=1. menuepunkt,2. menuepunkt,3. menuepunkt,4. menuepunkt,5. menuepunkt,6. menuepunkt

vielleicht bin ich auch einfach inzwischen zu blind um die lösung
zu finden :-)) (oder noch einfacher zu unwissend :-(()

gruß
oliver

p.s. gesucht habe ich selbstverständlich schon im forum...
olien ist offline   Mit Zitat antworten
Alt 20-08-2003, 20:54   #2 (permalink)
Flash-Wüstling
 
Benutzerbild von pheidrias
 
Registriert seit: Dec 2001
Ort: Halle/Saale
Beiträge: 4.300
Hi olien !

Viel kann man da nicht mehr machen.
Grundsätzlich würde ich wegen der Schreibarbeit nach dem "createn" die Zeile
mc=_root["ButtonMC"+i];
einfügen und dann immer nur mc._x schreiben.
Auf width würde ich verzichten --> da gibt's immer wieder Probleme mit der Eindeutigkeit .

Ansonsten wäre es vielleicht noch von Vorteil (wegen Speicher zum Beispiel) die Funktionen (da bei allen gleich) auszulagen.
Also z.B. in dem Framecode noch _root.oRo=function() {
//code
}
und dann nur noch
mc.onRollOver=_root.oRo;
zuweisen.

Mit dem Textfeld dann genau wie mit dem MC über Variable verkürzen.

tanti saluti,
pheidrias
__________________
Ehrlich währt am LÄNGSTEN !
pheidrias ist offline   Mit Zitat antworten
Alt 20-08-2003, 21:31   #3 (permalink)
Achim olé
 
Benutzerbild von olien
 
Registriert seit: Jul 2002
Ort: Feldafing
Beiträge: 595
hey pheidrias,

danke ersteinmal!

soviel zum subereren scripten....

aber mein problem das die textfelder "in" den buttons sichtbar
(eigentlich ja MCs) liegen sollen ist damit noch nicht gelöst...

muß ich wirklich einen button erstellen und verlinken?

nö. muß doch nicht - oder....

hast du vielleicht (oder irgendjemand) noch ein beispiel über ein
komplett gescripteten button oder mc mit dynamischen textinhalt
und dynamischer aktion beim anklicken?

(hab mich schon bei den üblichen quellen im netz umgesehen
aber so nix umsetzbares für mich gefunden...)

gruss
oliver
olien ist offline   Mit Zitat antworten
Alt 20-08-2003, 22:00   #4 (permalink)
dummschnack
 
Benutzerbild von Chino
 
Registriert seit: Mar 2002
Ort: Essen
Beiträge: 1.778
Hi Olien!

So, hab mal ein wenig aufgeräumt...

ActionScript:
  1. lv = new LoadVars ();
  2. lv.onLoad = function () {
  3.     this.titel = this.name.split (",");
  4.     for (var i = 0; i < this.titel.length; i++) {
  5.         var mc = _root.createEmptyMovieClip ("ButtonMC" + i, i - 1);
  6.         mc._x = 50;
  7.         mc._y = i * 25;
  8.         mc.farbe = new Color ("ButtonMC" + i);
  9.         mc.onRollOver = function () {
  10.             this.farbe.setRGB (0x0000ff);
  11.         };
  12.         mc.onRollOut = function () {
  13.             this.farbe.setRGB (0xff00ff);
  14.         };
  15.         mc.onPress = function () {
  16.             getURL ("http://www.flashforum.de", "_blank");
  17.         };
  18.         mc.createTextField ("ueberschrift" + i, a++, 35, "ButtonMC" + i._y, 350, 20);
  19.         mc["ueberschrift" + i].border = true;
  20.         mc["ueberschrift" + i].backgroundColor = 0xc9c9c9;
  21.         mc["ueberschrift" + i].background = true;
  22.         mc["ueberschrift" + i].text = this.titel[i];
  23.     }
  24. };
  25. lv.load ("daten.txt");

Was du allerdings mit den Buttons im MC meinst hab ich noch nicht ganz verstanden!? Funzt doch...

Gruss, Chino

Geändert von Chino (20-08-2003 um 22:02 Uhr)
Chino ist offline   Mit Zitat antworten
Alt 20-08-2003, 22:26   #5 (permalink)
Achim olé
 
Benutzerbild von olien
 
Registriert seit: Jul 2002
Ort: Feldafing
Beiträge: 595
hi Chino,

danke fürs aufräumen .-))

ja. ersteinmal funktioniert es. nur beim mousover
werden die MCs komplett rot und der text ist nicht mehr lesbar.
beim mouseout ist der MC dann komplett blau.

wenn ich wüsst wo würd ich den alpha runtersetzen....
aber wo?

auf jeden fall sollte der text bei einem mouseover lesbar bleiben
und die farbe sich dennoch irgendwie erkennbar ändern.

beim mouseout soll alles wieder so sein wie vorher....

gruss
oliver
olien ist offline   Mit Zitat antworten
Alt 20-08-2003, 22:28   #6 (permalink)
Flash-Wüstling
 
Benutzerbild von pheidrias
 
Registriert seit: Dec 2001
Ort: Halle/Saale
Beiträge: 4.300
? Ich habe leider auch noch nicht verstanden, worauf du hinauswillst ?
Eine Button-Komponente ?

Hier auf jeden Fall mal noch die speicherschonendere Variante basierend auf Chinos Vorschlag :

ActionScript:
  1. _root.oRoU=function () {
  2.                         this.farbe.setRGB (0x0000ff);
  3.                 };
  4. _root.oRoU=function () {
  5.                         this.farbe.setRGB (0xff00ff);
  6.                 };
  7. _root.oP=function () {
  8.                         getURL ("http://www.flashforum.de", "_blank");
  9.                 };
  10.  
  11. lv = new LoadVars ();
  12. lv.onLoad = function () {
  13.         this.titel = this.name.split (",");
  14.         for (var i = 0; i < this.titel.length; i++) {
  15.                 var mc = _root.createEmptyMovieClip ("ButtonMC" + i, i - 1);
  16.                 mc._x = 50;
  17.                 mc._y = i * 25;
  18.                 mc.farbe = new Color ("ButtonMC" + i);
  19.                 mc.onRollOver = _root.oRoO;
  20.                 mc.onRollOut = _root.oRoU;
  21.                 mc.onPress = _root.oP;
  22.                 mc.createTextField ("ueberschrift" + i, a++, 35, "ButtonMC" + i._y, 350, 20);
  23.                 mc["ueberschrift" + i].border = true;
  24.                 mc["ueberschrift" + i].backgroundColor = 0xc9c9c9;
  25.                 mc["ueberschrift" + i].background = true;
  26.                 mc["ueberschrift" + i].text = this.titel[i];
  27.         }
  28. };
  29. lv.load ("daten.txt");

tanti saluti,
pheidrias
__________________
Ehrlich währt am LÄNGSTEN !
pheidrias ist offline   Mit Zitat antworten
Alt 20-08-2003, 22:30   #7 (permalink)
Flash-Wüstling
 
Benutzerbild von pheidrias
 
Registriert seit: Dec 2001
Ort: Halle/Saale
Beiträge: 4.300
Hello again !

Für dieses Problem mußt du dir halt einen MC in deinen MC packen.
So daß du also einen leeren MC erzeugst, darin einen weiteren MC packst - der ändert dann die Farbe und dann in den ersten MC noch das Textfeld.

tanti saluti,
pheidrias
__________________
Ehrlich währt am LÄNGSTEN !
pheidrias ist offline   Mit Zitat antworten
Alt 20-08-2003, 22:32   #8 (permalink)
Achim olé
 
Benutzerbild von olien
 
Registriert seit: Jul 2002
Ort: Feldafing
Beiträge: 595
jupp.
das war es.
ich mach mich gleich mal ran.....

danke euch beiden!!!!!!!

oliver
olien ist offline   Mit Zitat antworten
Alt 20-08-2003, 22:42   #9 (permalink)
Achim olé
 
Benutzerbild von olien
 
Registriert seit: Jul 2002
Ort: Feldafing
Beiträge: 595
verwirrt bin :-((

gebt mir bitte noch einen tipp / beispiel....

oliver
(danke)

Geändert von olien (20-08-2003 um 23:17 Uhr)
olien ist offline   Mit Zitat antworten
Alt 20-08-2003, 23:28   #10 (permalink)
dummschnack
 
Benutzerbild von Chino
 
Registriert seit: Mar 2002
Ort: Essen
Beiträge: 1.778
Na gut, dann mach ich die Verwirrung mal komplett:

ActionScript:
  1. lv = new LoadVars ();
  2. lv.onLoad = function () {
  3.     this.titel = this.name.split (",");
  4.     for (var i = 0; i < this.titel.length; i++) {
  5.         var mc = _root.createEmptyMovieClip ("ButtonMC" + i, i - 1);
  6.         mc._x = 50;
  7.         mc._y = i * 25;
  8.         mc.createTextField ("ueberschrift", a++, 0, 0, 350, 20);
  9.         mc.onRollOver = function () {
  10.             this.ueberschrift.backgroundColor = 0x0000FF;
  11.         };
  12.         mc.onRollOut = function () {
  13.             this.ueberschrift.backgroundColor = 0xFF00FF;
  14.         };
  15.         mc.onPress = function () {
  16.             getURL ("http://www.flashforum.de", "_blank");
  17.         };
  18.         mc.ueberschrift.border = true;
  19.         mc.ueberschrift.backgroundColor = 0xc9c9c9;
  20.         mc.ueberschrift.background = true;
  21.         mc.ueberschrift.text = this.titel[i];
  22.     }
  23. };
  24. lv.load ("daten.txt");

Durch die Mouse Events wird jetzt lediglich die Hintergrundfarbe der Textfelder geändert. Das ist einfacher!

Die onPress etc. zuweisungen kann man in diesem Falle allerdings nicht so anlegen, wie pheidrias das vorgeschlagen hatte. Da jeder Button einen anderen Link aufrufen soll, und man auch sonst den aufrufenden Clip noch referenzieren müsste, machen wir hier die Aufrufe zu einer Methode des jeweiligen Buttons.

Hoffe du bist jetzt nicht völlig verwirrt!

Gruss, Chino
Chino ist offline   Mit Zitat antworten
Alt 21-08-2003, 09:32   #11 (permalink)
Achim olé
 
Benutzerbild von olien
 
Registriert seit: Jul 2002
Ort: Feldafing
Beiträge: 595
danke!

jetzt bin ich völlig entwirrt!


gruss
oliver
olien ist offline   Mit Zitat antworten
Alt 21-08-2003, 10:29   #12 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
ActionScript:
  1. var a0 = "http://www.flashforum.de";
  2. var a1 = "http://www.actionscript.org";
  3. var a2 = "http://www.macromedia.com";
  4. for (var i = 0; i<3; i++) {
  5.     var mc = _root.createEmptyMovieClip("ButtonMC"+i, i-1);
  6.     mc.id = i;
  7.     mc._x = 50;
  8.     mc._y = i*25;
  9.     mc.createTextField("ueberschrift", a++, 0, 0, 350, 20);
  10.     mc.onRollOver = function() {
  11.         this.ueberschrift.backgroundColor = 0x0000FF;
  12.     };
  13.     mc.onRollOut = function() {
  14.         this.ueberschrift.backgroundColor = 0xFF00FF;
  15.     };
  16.     mc.onPress = function() {
  17.         getURL(_root["a"+this.id], "_blank");
  18.     };
  19.     mc.ueberschrift.border = true;
  20.     mc.ueberschrift.backgroundColor = 0xc9c9c9;
  21.     mc.ueberschrift.background = true;
  22.     mc.ueberschrift.text = "titel"+i;
  23. }


grz
warrantmaster ist offline   Mit Zitat antworten
Alt 21-08-2003, 14:48   #13 (permalink)
Achim olé
 
Benutzerbild von olien
 
Registriert seit: Jul 2002
Ort: Feldafing
Beiträge: 595
ihr seid einfach klasse.

danke euch allen
oliver
olien ist offline   Mit Zitat antworten
Alt 22-08-2003, 00:54   #14 (permalink)
Achim olé
 
Benutzerbild von olien
 
Registriert seit: Jul 2002
Ort: Feldafing
Beiträge: 595
noch einmal???

jetzt hab ich nur noch das problem dass die url immer
"undefined" ist.

ist es ein array oder ein pfad problem?

ActionScript:
  1. lv = new LoadVars();
  2. lv.onLoad = function() {
  3.     this.titel  = this.name.split(",");
  4.     this.adr    = this.adresse.split(",");
  5.     this.beschr = this.beschreibung.split(",");
  6.  
  7. for (var i = 0; i<this.titel.length; i++) {
  8.  
  9.         var mc = _root.createEmptyMovieClip("ButtonMC"+i, i-1);
  10.         mc.id = i;
  11.         mc._x = 50;
  12.         mc._y = i*60;
  13.  
  14.         mc.createTextField("ueberschrift", a++, 35, 0, 350, 20);
  15.         mc.ueberschrift.border = true;
  16.         mc.ueberschrift.backgroundColor = 0x9CBDD6;
  17.         mc.ueberschrift.background = true;
  18.         mc.ueberschrift.text = this.titel[i];
  19.  
  20.         mc.createTextField(["beschreibung"+i], a++, 0, 22, 385, 35);
  21.         mc["beschreibung"+i].border=true;
  22.         mc["beschreibung"+i].backgroundColor=0xfffffff;
  23.         mc["beschreibung"+i].background=true;
  24.         mc["beschreibung"+i].text = this.beschr[i];
  25.  
  26.         mc.createTextField(["nr"+i], a++, 0, 0, 32, 20);
  27.         mc["nr"+i].border=true;
  28.         mc["nr"+i].backgroundColor=0xFFCC00;
  29.         mc["nr"+i].background=true;
  30.         mc["nr"+i].text = [i];
  31.  
  32.         mc.onRollOver = function() {
  33.                 this.ueberschrift.backgroundColor = 0xffbDD9;
  34.         };
  35.        
  36.         mc.onRollOut = function() {
  37.                 this.ueberschrift.backgroundColor = 0x9CBDD6;
  38.         };
  39.        
  40.  
  41.         mc.onPress = function() {
  42.             getURL(this.adr[i], "_blank")// funktioniert nicht :-((
  43.         };
  44. };
  45. };
  46. lv.load("daten.txt");

in der textdatei "daten.txt" stehen die urls natürlich
unter "adresse" (inkl. http://) drin.


gruss
oliver
olien ist offline   Mit Zitat antworten
Alt 22-08-2003, 08:25   #15 (permalink)
dummschnack
 
Benutzerbild von Chino
 
Registriert seit: Mar 2002
Ort: Essen
Beiträge: 1.778
Moin olien!

Innerhalb einer onPress Prozedur referenzierst du mit this den Button, der diese Methode aufruft.

ersetz mal this durch lv:

ActionScript:
  1. mc.onPress = function() {
  2.                         getURL(lv.adr[i], "_blank");
  3.                 };

Gruss, Chino
Chino 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 08:02 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele