Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-04-2006, 16:35   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 17
Grafik platzieren

Wie platziere ich eine Grafik? Muss ich diese als MovieClip speichern, oder funktioniert das auch als Grafik?

Danke für die hoffentlich schnelle Hilfe!

Grüssle,
Mapfei
mapfei ist offline   Mit Zitat antworten
Alt 03-04-2006, 16:45   #2 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
Per As oder statisch?

Für AS musst du sie in einen MovieClip (oder Button= packen.
Du kannst sie aber auch aus der Bibliothek attachen und eine Referenz auf die Grafik speichern und mit Hilfe dieser dann die Grafik platzieren..
pape ist offline   Mit Zitat antworten
Alt 03-04-2006, 17:56   #3 (permalink)
vorbei-flasher
 
Benutzerbild von jonny ta B
 
Registriert seit: Jan 2003
Ort: schweiz
Beiträge: 704
Zitat:
Zitat von mapfei
Wie platziere ich eine Grafik?
...aus der library mit dem raffinierten und viel bewährten drag+drop verfahren.
jonny ta B ist offline   Mit Zitat antworten
Alt 03-04-2006, 21:40   #4 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 17
Zitat:
...aus der library mit dem raffinierten und viel bewährten drag+drop verfahren.
Danke für den supi Tipp! Aber ich bin davon ausgegangen, dass man mich hier im Action Script Forum so wie pape versteht...

Danke!

Grüssle,
Mapfei
mapfei ist offline   Mit Zitat antworten
Alt 04-04-2006, 07:02   #5 (permalink)
vorbei-flasher
 
Benutzerbild von jonny ta B
 
Registriert seit: Jan 2003
Ort: schweiz
Beiträge: 704
jajaa... ich entschuldige mich für meinen sparwitz...
jonny ta B ist offline   Mit Zitat antworten
Alt 04-04-2006, 15:50   #6 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 17
Also irgendwie bekomm ich's net wirklich hin. Ich versuche den MC MenuBack in unterschiedlichen Breiten hintereinander zu platzieren. Die TextFields werden kreiert und auch angezeigt - nur die MovieClips nicht. Woran könnte es liegen?

Und was genau hat es eigentlich mit der Tiefe aufsich?


Code:
...
cat_array = catname.split(";");

for (i=0; i<cat_array.length; i++) {
	_root.attachMovie("MenuBack", "menubg"+i, i+1);
	createTextField("menu"+i, (cat_array.length)+i+1, 1, 20, 1, 16);
	this["menu"+i].selectable = false;
	this["menu"+i].autoSize = true;
	this["menu"+i].text = cat_array[i];
	this["menu"+i].setTextFormat(menuFormat);
	totalwidth += this["menu"+i]._width;
}
delta = (780-(totalwidth+cat_array.length))/(2*cat_array.length);

currentx = delta;
for (i=0; i<cat_array.length; i++) {
	this["menubg"+i]._x=currentx;
	this["menubg"+i]._y="0";
	this["menubg"+i]._width=2*delta+(this["menu"+i]._width);
	this["menu"+i]._x = currentx;
	currentx += delta+(this["menu"+i]._width);
}
...
Grüssle,
Mapfei
mapfei ist offline   Mit Zitat antworten
Alt 04-04-2006, 18:35   #7 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
Die Tiefe bezieht sich auf die Ebene. Das mit den Ebenen kannst du dir Vorstellen, wie wenn du viele Folien übereinander Legen würdest... dabei kannst du logischer weise nicht zwei Folien in in eine Ebene legen... deshalb musst du die verschiedenen Textfelder/MenuBacks auf unterschiedliche Ebenen legen.
Am einfachsten ist es die Tiefe immer um 1 höher zu wählen (i in der for-schleife wird ja bei jedem Durchlauf inkrementiert)
Die MenuBacks werden also von 1 bis array.length Tiefen belegen, wenn du i+1 mit 0<=i<array.length als tiefe angibst.
Dann kannst du ab array.length+1 die Tiefen für die Textfelder benutzen (array.length+1+i mit 0<=i<array.length).

totalwidth solltest du initialisieren ehe du totalwidth += ... rechnest: totalwidth = 0; am anfang vor den For-Schleifen.

Zudem solltest du den Textfeldern auch ein Mutter-Objekt zuweisen (z.b. _root)

Durch die Refernzen auf Objekte, sparst du dir viel Schreibarbeit und bei späteren Abänderungen kann man es um einiges schneller machen

ActionScript:
  1. cat_array = catname.split(";");
  2. totalwidth = 0;
  3. for (i=0; i<cat_array.length; i++) {
  4.     //Textfeld erstellen und eine Referenz in txt speichern
  5.     var txt = _root.createTextField("menu"+i, (cat_array.length)+i+1, 1, 20, 1, 16);
  6.     //Textfeld Eigenschaften
  7.     txt.selectable = false;
  8.     txt.autoSize = true;
  9.     txt.text = cat_array[i];
  10.     txt.setTextFormat(menuFormat);
  11.     //Zur gesamten Breite der Textfelder addieren
  12.     totalwidth += txt._width;
  13. }
  14. //Abstand berechnen
  15. delta = (780-(totalwidth+cat_array.length))/(2*cat_array.length);
  16. //Erste Position = 1*Abstand:
  17. currentx = delta;
  18. for (i=0; i<cat_array.length; i++) {
  19.     //MenuBack attachen und eine Referenz in mc speichern
  20.     var mc = _root.attachMovie("MenuBack", "menubg"+i, i+1);
  21.     //auf entsprechendes Textfeld eine Referenz legen
  22.     var txt = _root["menu"+i];
  23.     //Mc Platzieren
  24.     mc._x = currentx;
  25.     mc._y = "0";
  26.     mc._width = 2*delta+(txt._width);
  27.     mc._x = currentx;
  28.     //entsprechendes Textfeld mit platzieren
  29.     txt._x = currentx;
  30.     //nächste Position berechnen (= aktuelle + breite + abstand)
  31.     currentx += delta+(txt._width);
  32. }

Zum eigentlichen Problem:
Hast du MenuBg in der Bibiliothek mit AS verknüpft (Export for AS)?
sonst kann es nicht attacht werden, da es dem Film unbekannt ist.

Wenn es nicht funktiniert, auch am besten mal die Fla mit ranhängen.

grz
pape

Geändert von pape (04-04-2006 um 18:38 Uhr)
pape ist offline   Mit Zitat antworten
Alt 05-04-2006, 16:00   #8 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 17
Dank' dir vielmals!!! Soweit so gut! Hab das mit der Grafik anders gelöst. Hab nen Verlauf erzeugt. Aber nun das nächste Problem:

ActionScript:
  1. //Hintergrund für die einzelnen Textfelder erzeugen
  2.     _root.createEmptyMovieClip("verlauf"+i, i+1);
  3.     with (this["verlauf"+i]) {
  4.         colors = [ 0x545554, 0x000000 ];
  5.       alphas = [ 100, 100 ];
  6.       ratios = [ 0, 0xFF ];
  7.       matrix = { matrixType:"box", x:bgx, y:0, w:bgwidth, h:30, r:(90/180)*Math.PI };
  8.        beginGradientFill( "linear", colors, alphas, ratios, matrix );
  9.         moveTo(bgx,0);
  10.         lineTo(bgx+bgwidth,0);
  11.         lineTo(bgx+bgwidth,39);
  12.         lineTo(0,39);
  13.         lineTo(0,0);
  14.         endFill();
  15.     }
  16.  
  17.     //Hover-Effekt festlegen
  18.     _root["verlauf"+i].onRollOver = function(){
  19.         with (_root["verlauf"+i]) {
  20.             beginFill (0x0000FF, 100);
  21.             moveTo(bgx,0);
  22.             lineTo(bgx+bgwidth,40);
  23.             lineTo(bgx+bgwidth,80);
  24.             lineTo(0,80);
  25.             lineTo(0,40);
  26.             endFill();
  27.         }
  28.     }

Das RollOver wird irgendwie nicht erzeugt bzw. dargestellt.

Grüssle,
Mapfei
mapfei ist offline   Mit Zitat antworten
Alt 06-04-2006, 22:30   #9 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
i ist in dem RollOver Ereignis nicht bekannt, sondern nur in der Schleife.

Du müsstest jedem Verlauf eine id mitgeben, in welcher du das i speicherst:

ActionScript:
  1. _root["verlauf"+i].id = i;
  2. _root["verlauf"+i].onRollOver = function() {
  3.     with (_root["verlauf"+this.id]) {
  4.         //...
  5.     }
  6. };

allerdings kannst du es auch einfach so machen, da this auf das Objekt, in welchem es aufgerufen wird, verweist:
ActionScript:
  1. _root["verlauf"+i].onRollOver = function() {
  2.     with (this) {
  3.         //...
  4.     }
  5. };

grz
pape

Geändert von pape (06-04-2006 um 22:32 Uhr)
pape ist offline   Mit Zitat antworten
Alt 07-04-2006, 14:40   #10 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 17
Hallo!

Mal wieder ein herzliches Danke. Leider gehts mit den Problemen direkt weiter.

Nun wird beim RollOver tatsächlich (wie von mir geplant) die Hintergrundfarbe eines Buttons geändert, allerdings immer nur die des letzten. Scheinbar klappt das nicht, der RollOver-function das "i" zu übergeben.

ActionScript:
  1. // Wir befinden uns in einer for-Schleife über i
  2. ...
  3.     //Hover-Effekt festlegen
  4.     _root["verlauf"+i].id = i;
  5.     _root["verlauf"+i].bgx = bgx;
  6.     _root["verlauf"+i].bgwidth = bgwidth;
  7.     _root["verlauf"+i].onRollOver = function(){
  8.         with (_root["verlauf"+this.id]) {
  9.             beginFill (0x0000FF, 100);
  10.             moveTo(bgx,0);
  11.             lineTo(bgx+bgwidth,0);
  12.             lineTo(bgx+bgwidth,39);
  13.             lineTo(bgx,39);
  14.             lineTo(bgx,0);
  15.             endFill();
  16.         }
  17.     }
  18. ...

Das this.id innerhalb der with-Anweisung wird scheinbar nicht richtig ausgewertet. Der Hintergrund als solches stimmt, aber wie gesagt, es wird, egal über welchen Button ich mich bewege, immer nur der Hintergrund des letzten Buttons eingefärbt.

Viele Grüße,
Mapfei
mapfei ist offline   Mit Zitat antworten
Alt 11-04-2006, 19:26   #11 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
hmm... müsste eigentlich aber stimmen.. probier mal die zweite Variante, die ich oben gepostet habe (mit with(this) ohne id-Übergabe).

Wenn auch das nicht geht, wäre die Fla hilfreich

grz
pape
pape ist offline   Mit Zitat antworten
Alt 12-04-2006, 07:58   #12 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 17
Die zweite Variante hab ich auch getestet. Funktioniert aber leider auch nicht.
Das FLA gibts hier.

Grüssle,
Mapfei
mapfei ist offline   Mit Zitat antworten
Alt 13-04-2006, 10:55   #13 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
was wird von der flash.inc.php übergeben?

BTW: loadVariablesNum ist veraltet (LoadVars Object benutzen!)
eq ist auch veraltet (if( var1 == var2) statt if(var1 eq var2) )
pape ist offline   Mit Zitat antworten
Alt 13-04-2006, 11:12   #14 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 17
Hallo!

die flash.inc.php gibt die beiden Variablen catname und catid zurück. In beiden Variablen sind die Menupunkte aus Datenbank getrennt von Semikolons enthalten (catname) bzw. die IDs zum Verlinken (catid)

z.B. catname = "Startseite;Aktuelles;Produkte;Kontakt"

Grüssle,
Mapfei
mapfei ist offline   Mit Zitat antworten
Alt 13-04-2006, 16:43   #15 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
Du hast vergessen die Farbverläude richtig zu positionieren.
Das Problem besteht darin, dass der letzte Farbverlauf alle anderen Überdeckt und somit auch nur sein RollOver verarbeitet wird.

wenn du dir mal den _x Wert des letzten Verlaufes traced, siehst du, dass er bei 0 liegt.

DU solltest nicht die Mc's auf 0 liegen lassen und die Farbverläuf auf die richtige position bringen, sondern du musst die Farbverläufe nur in der richtigen größe auf den MC packen und dann den MC neu positionieren.

Sprich: _root["verlauf"+i]._x = bgx; und ...matrixType:"box", x:0 und sont überall wo bgx steht eigentlich auch nur 0 einsetzen... so ungefähr.. musste aber nochmal genauer nachgucken

Geändert von pape (13-04-2006 um 16:48 Uhr)
pape 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 17:18 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele