Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-01-2006, 01:06   #1 (permalink)
Neuer User
 
Benutzerbild von sonnenstrahlen
 
Registriert seit: Jan 2006
Ort: Linz
Beiträge: 21
PHP geladene Variablen in duplizierten Movieclips ausgeben

Ich hab ein ganz großes Probelm, ich haben eine SQL Datenbank in der ich news (text, headline, cr_date und images einlese). In einer php Datei gebe ich die Variabeln text, headline, anzahl (Anzahl der news) und images (kein Bild, nur varchar(), da darin nur der Pfadname des Bildes gespeichert ist) Action Script konform aus.

Nun zu meinem Problem: Ich habe einen Movieclip mc_news angelegt, in diesem sind vier weitere Movieclips (Movieclip date, headline, image, text) erstellt. Mit der Variable anzeige weiß ich wie oft ich das array durchlaufen muss um alle Variabeln aus php einzulesen. Jetzt möchte ich diesen mc_news duplizieren, dass alle Einträge untereinander stehen und jeder Variable dem richtigen Movieclip/Textfeld zugeordnet wird. Aber es funktioniert einfach nicht, hab schon tausend Varianten ausprobiert und bin total am verzweifeln, meine letzte Variante:

var lader=new LoadVars();
lader.load("news6.php");

lader.onLoad = function(geladen) {
if (geladen) {
this._parent.mc_news.anzahl = lader.anzahl;
this._parent.mc_news.cr_date = lader.cr_date;
this._parent.mc_news.text = lader.text;
this._parent.mc_news.headline = lader.headline;
this._parent.mc_news.image = lader.image;


for(i = 0; i < 20; i++) {
createEmptyMovieClip(_root.mc_news, "mc_news"+i, i);
mc_news+i.duplicateMovieClip(this.date, "date"+i, i);
mc_news+i.duplicateMovieClip(this.headline, "headline"+i, i);
mc_news+i.duplicateMovieClip(this.text, "text"+i, i);
mc_news+i.duplicateMovieClip(this.image, "images"+i, i);

this.date+i.createTextfield("txt_date");
this.headline+i.createTextfield("txt_headline");
this.text+i.createTextfield("txt_text");


this.txt_date.text = this['cr_date'+i];
this.txt_headline.text = this['headline'+i];
this.txt_text.text = this['text'+i];
images+i.loadMovie(this['news_image'+i]);

}
} else {
trace (" Error loading variables ");
}
}
sonnenstrahlen ist offline   Mit Zitat antworten
Alt 11-01-2006, 07:12   #2 (permalink)
The Man Who Wasn't There
 
Benutzerbild von fraggle two
 
Registriert seit: Jul 2003
Ort: BÄRLIN
Beiträge: 1.156
hi,

versuchs mal so:

PHP-Code:
var lader = new LoadVars();
lader.load("news6.php");
lader.onLoad = function(geladen) {
    if (
geladen) {
        var 
anz this.anzahl;
        for (
i=0i<anzi++) {
            var 
clip _root.attachMovie("mc_news""mc_news_"+i_root.getNextHighestDepth());
            
clip.date.text this.txt_date_+i;
            
clip.headline.text this.txt_headline_+i;
            
clip.textFeld.text this.txt_text_+i;
            
clip.images.loadMovie(this.news_image_+i);
        }
    } else {
        
trace(" Error loading variables ");
    }
}; 
bei dieser variante muß in der bibliothek ein mc liegen der mit dem verknüpfungsbezeichner "mc_news" versehen ist und in sich die mc's date, headline, textFeld und images enthält.

ausserdem mußt du noch nen offset in x oder y einbauen damit die nicht alle übereinander liegen.

wichtig dabei ist, das die variablen in folgendem format von php kommen:

anzahl=10&txt_date_0=10.10.05&txt_headline_0=Hallo &txt_text_0=balaböa&news_image_0=html://www.bla.com/img/bla.jpg

gruß
mike
__________________
Dot-Realities
Mike Broders
Berlin

ICQ:105925103

Dot-Realities v4.0 under construction!

Geändert von fraggle two (11-01-2006 um 08:11 Uhr)
fraggle two ist offline   Mit Zitat antworten
Alt 11-01-2006, 07:25   #3 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Hallo & welcome on bord

du bist der lösung schon sehr nah, daher poste ich fix eine von vielen möglichkeite, wie es funktionieren könnte ...
Problem in deinem script, ist wie du schon richtig erkanntest, das zuweisen des richtigen zielpfades & setzen der korekten eigenschaften von instanzen (textfelder, movieclip & Co.)

Damit es nicht in einen AS marathon ausartet, habe ich anstat jede textfeld instance neu zu kreieren ein template bebaut, welches aus der bibliothek attacht wird, und dort hinein die werte des php callBack arrays geschrieben werden.

ActionScript
PHP-Code:
//  #  : 2
function fncBuild(a:Array):Void {
    
//  # anhand dieser variable bestimen wir innerhalb 
    //  der schleife die positionierung der einzelnen 
    //  movieclips ...
    
var posY:Number 0;
    
//  # dann wir erstellen einen leeren movieclip in der 
    //  _root, welcher als so genannter container dient ...
    
_root.createEmptyMovieClip('mcContainer'0);
    for (var 
0a.lengthi++) {
        
//  # in diesen leeren container attachen wir aus der 
        //  bibliothek unseren template movieclip ...
        
_root.mcContainer.attachMovie('mcTmpl''mcTmpl' ii);
        
//  # und füllen ihn mit den werten des arrays
        
_root.mcContainer['mcTmpl' i].txtDate.text a[i][0];
        
_root.mcContainer['mcTmpl' i].txtHeadline.text a[i][1];
        
_root.mcContainer['mcTmpl' i].txtContent.text a[i][2];
        
_root.mcContainer['mcTmpl' i].mcPicture.loadMovie(a[i][3]);
        
//  # damit sich die attachten movieclips nicht überlagern,
        //  setzen wir deren position anhand unserer variable posY
        
_root.mcContainer['mcTmpl' i]._y posY;
        
//  # und erhöhen diese um die höhe des attachten movie's ...
        
posY += _root.mcContainer['mcTmpl' i]._height 2;
        
//  # fertig ...
    
}
}
//  #  : 1
var lader = new LoadVars();
lader.onLoad = function(geladen) {
    if (
geladen) {
        
//  # angenommen, dass callBack array sieht so aus ...
        
var content:Array = new Array();
        
content[0] = ['11.01.2006''hello world!''the content text''pics/dog.jpg'];
        
content[1] = ['01.01.2006''the headline''foo foo foo foo.''pics/cat.jpg'];
        
content[2] = ['24.12.2005''xyz-mas time''satan claus, back''pics/sat.jpg'];
        
//  # dann könnte man, um es wiederverwertbar zu machen, eine function aufrufen,
        //  und ihr einfach das array als parameter übergeben ...
        
fncBuild(content);
    } else {
        
trace("Error loading variables");
    }
};
lader.load("news6.php"); 
*damit das template aus der bibliothek attacht (copiert) werden kann, benötigt es einen eindeutigen bezeichner, diesen stellst du direkt in den bibliothek her: rechtsklick auf den movieclip -> verknüpfungen -> checkbox: "export für ActionScript" -> und dann im feld Bezeichner den namen eingeben (in unserem beispiel "mcTmpl")

viel spass,
shorty

{btw} immer schön die flash version im title angeben, der anhang ist im Flash8 format

{edit} to slow ...
Angehängte Dateien
Dateityp: zip example.zip (11,7 KB, 11x aufgerufen)
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.
shorty ist offline   Mit Zitat antworten
Alt 11-01-2006, 18:28   #4 (permalink)
Neuer User
 
Benutzerbild von sonnenstrahlen
 
Registriert seit: Jan 2006
Ort: Linz
Beiträge: 21
thx

Ma voi super, danke danke... ihr seid meine Rettung!!
sonnenstrahlen ist offline   Mit Zitat antworten
Alt 14-01-2006, 12:02   #5 (permalink)
Neuer User
 
Benutzerbild von sonnenstrahlen
 
Registriert seit: Jan 2006
Ort: Linz
Beiträge: 21
php Variablen werden nicht ausgelesen

So ich muss leider nochmals lästig sein, weil es geht leider immer noch nicht so ganz. Ich habe die Mehtoden jetzt so übernommen und lasse, wenn ich meine Bilder und Text so einlese funktioniert alles, jedoch wenn ich meine PHP Variablen hernehme geht es nicht mehr:

Augabe in php:

&uid_0=1&cr_date_0=2005-12-20+15%3A10%3A58&user_id_0=1&headline_0=News+1&text _0=News+1+TXT+bla+dasfdasfd+adsf+adsfadsf+dsaf&ima ges_0=0&news_img00=..%2F..%2Fpics%2Fnewsimages%2FT reppenhaus.jpg

user_id und uid sind nicht relevant für mich, und news_img00 heißt nur das nur ein Bild verfügbar ist, bei mir werden diese als news_img01 und news_img02 usw. nummeriert

in Flash das Template das mir immer den Text mit Bild aufruft

function fncBuild(a:Array):Void {
var posY:Number = 0;
_root.createEmptyMovieClip('mcContainer', 0);

for (var i = 0; i < anzahl; i++) {
_root.mcContainer.attachMovie('mcTmpl', 'mcTmpl' + i, i);
_root.mcContainer['mcTmpl' + i].txtDate.text = this.date[i][0];
_root.mcContainer['mcTmpl' + i].txtHeadline.text = this.headline[i][1];
_root.mcContainer['mcTmpl' + i].txtContent.text = this.text[i][2];
_root.mcContainer['mcTmpl' + i].mcPicture.loadMovie(this.news_img[i][3]);

_root.mcContainer['mcTmpl' + i]._y = posY;
posY += _root.mcContainer['mcTmpl' + i]._height + 2;
}
}

var lader = new LoadVars();
lader.load("news_connector.php");

lader.onLoad = function(geladen) {
if (geladen) {
var anz = this.anzahl;
var content:Array = new Array(anz.length);

for (i=0; i<content.length; i++){
content[i][0] = this.cr_date_+i;
content[i][1] = this.headline_+i;
content[i][2] = this.text_+i;
content[i][3] = this.news_img_+i;
}
fncBuild(content);
} else {
trace("Error loading variables");
}
};
sonnenstrahlen ist offline   Mit Zitat antworten
Alt 14-01-2006, 14:31   #6 (permalink)
The Man Who Wasn't There
 
Benutzerbild von fraggle two
 
Registriert seit: Jul 2003
Ort: BÄRLIN
Beiträge: 1.156
hi,

warum so kompliziert?

versuchs mal so... (anhang)

und schau nochmal ins textfile...

die angabe wieviele datensätze(anzahl=1) in deinem variablenstring enthalten sind brauchst du auf jeden fall...

gruß
mike
Angehängte Dateien
Dateityp: zip loader.zip (7,0 KB, 11x aufgerufen)
__________________
Dot-Realities
Mike Broders
Berlin

ICQ:105925103

Dot-Realities v4.0 under construction!
fraggle two ist offline   Mit Zitat antworten
Alt 14-01-2006, 15:33   #7 (permalink)
Neuer User
 
Benutzerbild von sonnenstrahlen
 
Registriert seit: Jan 2006
Ort: Linz
Beiträge: 21
voi super, danke

hey cool danke funktioniert einwandfrei. Eine Frage hab ich noch, ist das möglich, das beim Text nur einen Link mache und in diesem Link werden mir dann alle zu diesem Text dazugehörenden Fotos angezeigt?
sonnenstrahlen ist offline   Mit Zitat antworten
Alt 14-01-2006, 15:50   #8 (permalink)
The Man Who Wasn't There
 
Benutzerbild von fraggle two
 
Registriert seit: Jul 2003
Ort: BÄRLIN
Beiträge: 1.156
hi,

meinst du, das du einen link haben willst wo z.B steht "alle bilder sehen..."
und wenn man auf diesen link drückt geht irgend etwas auf wo die ganzen zugehörigen bilder zu sehen sind?

gruß
mike
__________________
Dot-Realities
Mike Broders
Berlin

ICQ:105925103

Dot-Realities v4.0 under construction!
fraggle two ist offline   Mit Zitat antworten
Alt 14-01-2006, 16:17   #9 (permalink)
Neuer User
 
Benutzerbild von sonnenstrahlen
 
Registriert seit: Jan 2006
Ort: Linz
Beiträge: 21
ja genau sowas hab i gmant
sonnenstrahlen ist offline   Mit Zitat antworten
Alt 14-01-2006, 17:06   #10 (permalink)
The Man Who Wasn't There
 
Benutzerbild von fraggle two
 
Registriert seit: Jul 2003
Ort: BÄRLIN
Beiträge: 1.156
ja, das ist möglich...

1. methode:

ein textfeld als html-textfeld erstellen

dann einen html-formatierten string diesem textfeld zuordnen:

ActionScript:
  1. var textfield_txt = _root.createTextField("textfeld", 1, 0, 0, 0, 0);
  2. with (textfield_txt) {
  3.     html = true;
  4.     autoSize = "left";
  5.     selectable = false;
  6. }
  7. var newsCount = 1;
  8. var textfield = new TextFormat();
  9. with (textfield) {
  10.     underline = true;
  11.     font = "Verdana";
  12.     size = 10;
  13.     color = 0xff0000;
  14. }
  15. textfield_txt.htmlText = "<a href='http://www.deineDomain.de/bildergallery.php?newsCount="+newsCount+"' target='_blank'>alle Bilder zeigen</a>";
  16. textfield_txt.setTextFormat(textfield);

2. methode:

in einem vorher erstellten movieclip ein textfeld als normales textfeld erstellen und dem movieclip maus-events zuordnen:

ActionScript:
  1. var newsCount = 1;
  2. var clip_mc = _root.createEmptyMovieClip("container", 1);
  3. clip_mc.createTextField("textfeld", 1, 0, 0, 0, 0);
  4. with (clip_mc.textfeld) {
  5.     html = false;
  6.     autoSize = "left";
  7.     selectable = false;
  8. }
  9. var textfield = new TextFormat();
  10. with (textfield) {
  11.     underline = true;
  12.     font = "Verdana";
  13.     size = 10;
  14.     color = 0xff0000;
  15. }
  16. clip_mc.textfeld.text = "alle Bilder zeigen";
  17. clip_mc.textfeld.setTextFormat(textfield);
  18. clip_mc.onRelease = function() {
  19.     getURL("http://www.deineDomain.de/bildergallery.php?newsCount="+newsCount, "_blank");
  20. };

zum testen einfach die scripte ins erste frame eines leeren films hauen und gucken...

gruß
mike
__________________
Dot-Realities
Mike Broders
Berlin

ICQ:105925103

Dot-Realities v4.0 under construction!
fraggle two ist offline   Mit Zitat antworten
Alt 14-01-2006, 20:07   #11 (permalink)
Neuer User
 
Benutzerbild von sonnenstrahlen
 
Registriert seit: Jan 2006
Ort: Linz
Beiträge: 21
Wäre es nicht viel einfacher, wenn ich den Pfad bis zum Überordner angebe und bei klick auf "alleBilder" springt er einfach auf ein neues Frame wo dann alle Bilder, die zu diesem Thema gehören geöffnet werden? Dann muss ich das nicht über html machen!
sonnenstrahlen ist offline   Mit Zitat antworten
Alt 14-01-2006, 21:39   #12 (permalink)
Neuer User
 
Benutzerbild von sonnenstrahlen
 
Registriert seit: Jan 2006
Ort: Linz
Beiträge: 21
Danke, werd des dann so in html machen. Ich weiß ich bin voi lästig. aber eine Frage hätte ich dann noch:
meine images werden kommen so aus php:

&news_img00=path&news_img01=path&news_img10=path&n ews_img11=path....

mit der Variable picscount wird jedes Bild mitgezählt, das zu dem betreffenden text (zB: text0) gehört, also ausgabe in php:

&picscount0=2....&picscount1=2

Jetzt muss ich aba noch in meinem Code die durchlaufen lassen, aber so geht das nicht:

var pics:Array = new Array();

for(j=0; j<anz ; j++){
pics[i] = this["picscount"+i];
}

und in der forschleife für die Ausgabe dann nach text, headline usw:

for(j=0; j<pics[i].length; j++){
_root.mcContainer['myTmpl'+i].mcPicture.laodMovie(this["news_img"+i+j]);
}

und dann halt noch die positionierung, aba mog mi net *schnief*
sonnenstrahlen ist offline   Mit Zitat antworten
Alt 15-01-2006, 12:04   #13 (permalink)
The Man Who Wasn't There
 
Benutzerbild von fraggle two
 
Registriert seit: Jul 2003
Ort: BÄRLIN
Beiträge: 1.156
hi,

also grundsätzlich hast du jetzt schon alles was du zum verarbeiten deiner php-daten brauchst...

wie du das jetzt umsetzt kann ich dir nicht sagen...

aber ich sehe, das du noch nicht so in der script-materie zu hause bist, denn z.B.
PHP-Code:
for(j=0j<anz j++){
pics[i] = this["picscount"+i];

kann nichts ergeben, da du mit j zählst und i als wertevariable nimmst...
innerhalb der for-schleifen mußt du schon mit der zählvariable arbeiten.

vielleicht versuchst du deine anforderungen erstmal auf deine kenntnisse runter zu schrauben.

also viel spaß noch beim probieren und lernen...
mike
__________________
Dot-Realities
Mike Broders
Berlin

ICQ:105925103

Dot-Realities v4.0 under construction!

Geändert von fraggle two (15-01-2006 um 12:05 Uhr)
fraggle two ist offline   Mit Zitat antworten
Alt 15-01-2006, 12:36   #14 (permalink)
Neuer User
 
Benutzerbild von sonnenstrahlen
 
Registriert seit: Jan 2006
Ort: Linz
Beiträge: 21
Danke, aba i habs jetzt eh schon hinbekommen, i lass das Array einfach in dem anderen mitrennen und leg dann in meinem Array wo ich i habe mein Array mit der j Zählervariable rein. Leider kann ich da nicht mehr viel aus, dass ich was andres mach, weil das is a Projekt von da schui
sonnenstrahlen 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 00:48 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele