 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
05.12.2005, 22:32
|
#1
|
|
TP-Veteran
Registriert seit: Nov 2001
Ort: Friedrichshafen am Bodensee
|
[MX2004]Dynamisch erzeugte MC mit Aktion belegen
Hi, ich mal wieder!
Ich habe folgendes Skript, mit dem mehrere MCs mit verschiedenen Bildern erzeugt werden. Die Dateinamen kommen aus einer Datenbank und stehen dann im Array 'bilder'.
PHP-Code:
// für jedes Bild einen MC erzeugen
for (i in bilder) // bilder: Array mit Dateiname, Bildbreite
{
bildname="pic"+i+"_mc";
_root.filmstrip_mc.createEmptyMovieClip(bildname,i);
_root.filmstrip_mc[bildname].loadMovie(bilder[i][0]);
breite=bilder[i][1];
_root.filmstrip_mc[bildname]._x=i*breite+10;
} // Ende des Array-Durchlaufs
Ich muss jetzt den erzeugten MCs eine Aktion zuweisen, sprich: beim Click auf einen der MC soll eine getURL()-Aktion ausgeführt werden (die Zielseiten stehen ebenfalls in der Datenbank).
Gibt es eine Möglichkeit, diese Aktionen während der erzeugung festzulegen?
Oder kann ich mit Hilfe von PHP eine .as-Datei erzeugen, die zur Laufzeit importiert wird? Mit #include wird das ja nicht gehen, oder?
Denn die Anzahl der Bilder wird sich öfter ändern.
Gruß
Wolfgang
|
|
|
06.12.2005, 01:11
|
#2
|
|
TP-Moderator
Registriert seit: Mar 2002
|
Hallo Guitar
du mußt für die Links auch ein Array erzeugen und zwar so, dass die Bilder und die Linkurl in den jeweiligen Array übereinstimmen.
array_bilder = "bild1","bild2" usw.
array_link = "link1","link2" usw.
und dann erweiterst du deinen Code hiermit:
PHP-Code:
// für jedes Bild einen MC erzeugen
for (i in bilder) {
// bilder: Array mit Dateiname, Bildbreite
bildname = "pic"+i+"_mc";
_root.filmstrip_mc.createEmptyMovieClip(bildname, i);
_root.filmstrip_mc[bildname].loadMovie(bilder[i][0]);
breite = bilder[i][1];
_root.filmstrip_mc[bildname]._x = i*breite+10;
//Variable für den MC definieren
_root.filmstrip_mc[bildname].link = array_link[i];
//Buttonanweisung
_root.filmstrip_mc[bildname].onRelease = function() {
getURL(this.link, "_blank");
};
}
Geändert von Wanderratte (06.12.2005 um 02:19 Uhr).
|
|
|
06.12.2005, 14:34
|
#3
|
|
TP-Veteran
Registriert seit: Nov 2001
Ort: Friedrichshafen am Bodensee
|
Äh, klar, da hätte ich eigentlich auch drauf kommen sollen. Danke!
Ich tu' mir immer noch schwer mit dem Umstiegt von Sprachen wie PHP auf AS, aber so ganz langsam verstehe ich die Sache... 
|
|
|
06.12.2005, 14:38
|
#4
|
|
TP-Veteran
Registriert seit: Nov 2001
Ort: Friedrichshafen am Bodensee
|
Hm, irgendwie funktioniert das nicht. Die MCs können nicht angeklickt werden. 
|
|
|
06.12.2005, 18:34
|
#5
|
|
TP-Moderator
Registriert seit: Mar 2002
|
Hallo
das müsste so gehen.
Guck mal hier, da habe ich ja auch sowas in der Art erstellt.
klick
|
|
|
06.12.2005, 21:48
|
#6
|
|
TP-Moderator
Registriert seit: Mar 2002
|
Hallo
Asche über mein Haupt ich habe an eine Sache nicht gedacht gehabt und zwar das in dem Moment wo ein Bild in dem MC geladen ist, der MC für Flash nicht vorhanden ist. Also hier habe ich etwas getrickst in dem ich einen zweiten MC in den von dir erzeugten erstellt habe. Also bei so kleinen Projekten kann man das machen, aber bei größeren sollte man einen Preloader für die einzelnen Bilder nehmen und erst wenn die geladen sind, kann man die Buttonfuntionen anwenden.
PHP-Code:
// Leeren Movieclip erzeugen
this.createEmptyMovieClip("filmstrip_mc", 17000);
// bildnamen aus daten.txt auslesen
this.loadVariables("daten.txt");
this.onData = function() {
bilder = namen.split(",");
breite = breiten.split(",");
url = links.split(",");
// für jedes Bild einen MC erzeugen
for (a in bilder) {
var xpos:Number = 0;
bildname = "pic"+a+"_mc";
filmstrip_mc.createEmptyMovieClip(bildname, a);
filmstrip_mc[bildname].createEmptyMovieClip(bildname, a);
filmstrip_mc[bildname][bildname].loadMovie("thumbs/"+bilder[a]);
//breite=bilder[i][1];
for (i=0; i<=(a-1); i++) {
br = Number(breite[i]);
xpos += br+10;
}
filmstrip_mc[bildname]._x = xpos;
// Movieclip mit getURL-Funktion versehen
//Variable für den MC definieren
filmstrip_mc[bildname].link = url[a];
trace(bildname);
//Buttonanweisung
filmstrip_mc[bildname].onRelease = function() {
getURL(this.link, "_blank");
};
}
// Ende des Array-Durchlaufs
filmstrip_mc._y = 5;
filmstrip_mc._x = 5;
// Ende der MC-Erzeugung
};
// Ende onData
So verbesserungsvorschläge:
_root kannst du rauslassen, da du eh schon auf _level0 bist und _root darauf verweist.
Wenn du bei AS2 und Flash7 bleibst bei der Veröffentlichung solltest du dir den Befehl MovieClip.getNextHighestDepth() einmal anschauen, damit übernimmt Flash die levelverwaltung 
Durch einen Preloader könntest du dir die Angabe der Bildergröße ersparen und mit Flash auslesen und anhand dieser dann Positionieren 
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 00:33 Uhr.
|
 |