Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash CS3 Professional

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-01-2009, 16:15   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2007
Beiträge: 8
Talking Newspage

Hallo,

Zunächst erkläre ich erstmal was ich vor habe:

Ich möchte eine art newspage erstellen, auf der aktuelle sowie ältere news zu lesen sind. Die news sollten der Verwaltung halber extern erstellt bzw. editiert werden können.
Folgendermaßen --> die einzelnen news sollten z.b. jeweils abwechselnd farblich hinterlegt sein.

Mein Problem ist jetzt, wie kann ich das bewerkställigen ?

Da ja immer wieder news hinzukommen kann ich ja nicht im voraus mehrere dynamische textfelder im flashfilm positionieren, sondern die news müssten in einer art container erstellt werden der sich immer um die länge der neu erstellten news verlängert. Das ganze sollte natürlich scrollbar sein.
Hat jemand viel. einen lösungsvorschlag oder schoneinmal etwas ähnliches erstellt ?
Wenn ja würde ich mich über eure Antworten freuen. Wenn meine beschreibung zu ungenau ist, löchert mich. Weiss nämlich nicht genau wie man sowas macht. Einfach nur ein dynamisches textfeld erstellen wäre natürlich eine möglichkeit und die news untereinander in den externen text ballern, aber dann habe ich ja keine abgrenzung zwischen den news (abwechselnd andersfarbiger hintergrund.)
Zur verdeutlichung habe ich mal ein bild angefertigt wie das ganze aussehen könnte.
ccryder86 ist offline   Mit Zitat antworten
Alt 25-01-2009, 23:49   #2 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 230
die Newspunkte sind ja sicherlich immer gleich aufgebaut (also Header, Unterüberschrift, Fließtext usw...)
Du könntest also die ganzen Textblöcke in einer XML abspeichern, das ganze dann mit AS dynamisch zusammensetzten.
Also beispielsweise mit einer rekursiven Funktion jeden News-Punkt mit all seinen Text und Grafikelementen erstellen.

Erster Schritt (wenn du so an die Sache gehen willst) wäre, dass du erst einmal per AS einen einzigen Newpunkt versuchst zu coden. Also ein leeres Textfeld erstellen, darin dann den Header setzten, dann eine Unterüberschrift usw... und zum Schluss eine farbige Fläche als Hintergrund.

Wenn du das hast, kannst du das ganze dynamisch in eine for-Schleife oder eine rekursive Ftk. packen, die sich ihren Inhalt aus einer Xml holt...
tenada ist offline   Mit Zitat antworten
Alt 26-01-2009, 20:40   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2007
Beiträge: 8
Question newspage. antwort von tenada

Deine idee klingt interessant und machbar ;o). nur, weiss ich nicht wie man das mit der for schleife oder der rekursiven Funktion macht. kannst du mir das viel. mal erklären ?
ccryder86 ist offline   Mit Zitat antworten
Alt 27-01-2009, 22:22   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 230
na mit einer Schleife liest du die Xml aus, genauer: du startest in der Schleife mit einem Anfangswert (meistens "0") und nimmst die Variable, um den Eintrag "0" in deiner XML auszulesen. Mit den Daten baust du dann deine Textfelder usw. und wenn das ganze einen Durchlauf gemacht hat, geht es von vorne los, diesmal mit einem Wert mehr - also den Eintrag an der Stelle "1" aus der XML lesen, dann Textfelder erstellen und mit dem Text aus der XML füllen, das ganze noch unter dem vorherigen NewsBlock ausrichten und so weiter...

hier mal ein Beispiel mit einer rekursiven Lösung ...hier werden kleine Bilder nacheinander geladen und nebeneinander ausgerichtet (nur vom Prinzip, der Code ist nicht ganz vollständig, weil ich ihn einfach mal so rauskopiert habe):

PHP-Code:
// Bild laden
function projektThumbsLaden() {
    
trace(prThumbsIndex);
    var 
thumbCon:Sprite = new Sprite();
    
inhaltArray[2].fotos.addChild(thumbCon);
    
prThumbsCon.push(thumbCon);
    
thumbCon.name "pic"+prThumbsIndex;
    
thumbCon.buttonMode true;
    
thumbCon.addEventListener(MouseEvent.MOUSE_UPthumbPicGross);
    
thumbCon.addEventListener(MouseEvent.MOUSE_OVERmausOver);
    
thumbCon.addEventListener(MouseEvent.MOUSE_OUTmausOut);
    
    var 
thumbLoader:Loader = new Loader();
    var 
thumbReq:URLRequest = new URLRequest("inhalt/filmprojekte/"+filmprElement+"/thumbs/pic"+prThumbsIndex+".jpg");
    
thumbLoader.load(thumbReq);
    
thumbCon.addChild(thumbLoader);
    
prThumbs.push(thumbLoader);
    
thumbLoader.contentLoaderInfo.addEventListener(Event.COMPLETEprojektThumbsGeladen);
}

// nach dem Laden: Bild ausrichten
function projektThumbsGeladen(e:Event) {
    
//Bild ausrichten
    
if(prThumbs.length == ) {
        
prThumbs[0].0;
    } else {
        
prThumbs[prThumbsIndex].prThumbs[prThumbsIndex-1].prThumbs[prThumbsIndex-1].width 10;
    }
    
//noch ein Bild laden oder Schleife beenden?
    
if(prThumbsIndex projektXML.child(filmprElement).thumbs -1) {
        
prThumbsIndex++;
        
projektThumbsLaden();
    } else {
        
trace("alles fertig geladen");
    }

tenada ist offline   Mit Zitat antworten
Alt 28-01-2009, 17:50   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2007
Beiträge: 8
aso, ja habe ich glaube ich schonmal mit gearbeitet. Muss ich mich nur mal genau schlau machen. Na dann erstmal danke. werd mich wohl mal etwas damit beschäftigen ;o) wieder mal ein projekt das etwas zeit benötigt ^^

Ok CIAO
ccryder86 ist offline   Mit Zitat antworten
Alt 30-01-2009, 23:40   #6 (permalink)
Neuer User
 
Registriert seit: Sep 2007
Beiträge: 8
und das fragen geht weiter ;o)

sooooo.
habe mal angefangen. aber direkt eine frage

habe eine xmlfile.xml mit folgendem inhalt erstellt:

PHP-Code:
<?xml version='1.0' encoding='utf-8'?>
  <news>
    <newsknoten thema="erstes thema" datum="tt.mm.jjjj" text="erster newstext/>
    <newsknoten thema="zweites thema" datum="tt.mm.jjjj" text="zweiter newstext/>
    <newsknoten thema="drittes thema" datum="tt.mm.jjjj" text="dritter newstext/>
  </news>>
danach habe ich in das erste frame vom film folgenden code gepackt:

PHP-Code:
stop();
var 
XMLdaten = new XML();
XMLdaten.ignoreWhite=true
XMLdaten.load("xmlfile.xml");
XMLdaten.onLoad = function(success) {
    
XMLdaten_thema = [];
                        
    
XMLdaten_datum = [];
                        
    
XMLdaten_text = [];
    
    if (
success) { 
        for (var 
i=0i<XMLdaten.firstChild.childNodes.lengthi++) {
                                    
            
XMLdaten_thema[i] = XMLdaten.firstChild.childNodes[i].attributes.thema;
                                        
            
XMLdaten_datum[i] = XMLdaten.firstChild.childNodes[i].attributes.datum;
                                        
            
XMLdaten_text[i] = XMLdaten.firstChild.childNodes[i].attributes.text;
        }

        
gotoAndStop(2);
    }


Jetzt zu meiner frage:

Die Daten der xml habe ich ja jetzt in flash drinn, wenn ich mich da nicht irre ^^. Ich habe einen moviclip erstellt mit jeweils einem textfeld für thema, datum und text. wie kann ich es jetzt realisieren, dass ich jedem newsknoten, einen eigenen moviclip zuordne mit den textfelden für die verschwiedenen arrays. ?? Oder ist das so nicht möglich ?

Hoffe ihr könnt mir weiterhelfen ;o) wenns so nicht klappt könnt ihr mir ja vielleicht vorschläge oder tips geben wie ich das machen könnte.
ccryder86 ist offline   Mit Zitat antworten
Alt 31-01-2009, 00:04   #7 (permalink)
Zero to Hero
 
Registriert seit: Apr 2007
Beiträge: 871
es ginge zwar auch so, aber ich möcht dir hier mal noch einen anderen aber meiner meinung nach eleganteren ansatz zeigen:

was du schon hast, sind 3 array's mit unverknüpften daten, um da durch zu iterieren und passende daten zu bekommen muss in jeder schleife jedes array durchgegangen werden.

einfacher zu referenzieren wäre es mit einem array das aus objekten besteht:

PHP-Code:
stop();


var 
XMLdaten=new XML  ;
XMLdaten.ignoreWhite=true;
XMLdaten.load("xmlfile.xml");
var 
contentArray:Array=new Array  ;
XMLdaten.onLoad=function(success) {    
    if (
success) { 
        for (var 
i=0i<XMLdaten.firstChild.childNodes.lengthi++) {
            
//erstellt in jedem durchlauf ein neues objekt und befüllt es mit den strings aus deinem xml
            
var contentObject:Object = new Object();                        
            
contentObject.Thema XMLdaten.firstChild.childNodes[i].attributes.thema;                             
            
contentObject.Datum  XMLdaten.firstChild.childNodes[i].attributes.datum;                            
            
contentObject.Text XMLdaten.firstChild.childNodes[i].attributes.text;
            
contentObject.ID i// der sicherheit halber :-)
            //jedes der objekte wird der reihe nach in das array geschoben
            
contentArray.push(contentObject);
        }

        
gotoAndStop(2);
    }
};

// in frame 2 kannst du dann (sofern die scriptebene an dieser stelle kein leeres schlüsselbild hat bequem auf das array zugreifen:
var numOfItems:Number contentArray.length;
var 
home this // referenz auf die aktuelle Zeitleiste
for (var 0;i<numOfItemsi++) {
    var 
mc:MovieClip home.attachMovie("deinNewsMCinderBibliothek""news_"+ithis.getNextHighestDepth());
    
mc.themaText.text contentArray[i].Thema;//themaText ist ein Textfeld in diesem Movieclip
    
mc.datumText.text contentArray[i].Datum;// "                       "                    "
    
mc.textText.text contentArray[i].Text;// "               "                  "
    
mc._y i*100// ungefähre verschiebung nach unten pro durchgang, bedarf etwas feintuning :-)

__________________
Ein Tag an dem du nicht gelacht hast ist ein verschwendeter Tag.
Never Stop!

Mike
ingrimm ist offline   Mit Zitat antworten
Alt 31-01-2009, 00:34   #8 (permalink)
Neuer User
 
Registriert seit: Sep 2007
Beiträge: 8
dankeschön ingrimm für die schnelle antwort. das liebe ich ja an dem forum ;o). nur funzt es leider noch nicht. hier mal kurz was ich gemacht habe.

mein movieclip mit den textfeldern heisst newsmc. die textfelder habe ich mit thema, datum und ttext benannt.

deinen code des zweien frames habe ich folgendermaßen verändert:

PHP-Code:
// in frame 2 kannst du dann (sofern die scriptebene an dieser stelle kein leeres schlüsselbild hat bequem auf das array zugreifen:
var numOfItems:Number contentArray.length;
var 
home this // referenz auf die aktuelle Zeitleiste
for (var 0;i<numOfItemsi++) {
    var 
mc:MovieClip home.attachMovie("newsmc""news_"+ithis.getNextHighestDepth());
    
mc.thema.text contentArray[i].Thema;//themaText ist ein Textfeld in diesem Movieclip
    
mc.datum.text contentArray[i].Datum;// "                       "                    "
    
mc.ttext.text contentArray[i].Text;// "               "                  "
    
mc._y i*100// ungefähre verschiebung nach unten pro durchgang, bedarf etwas feintuning :-)

wofür steht denn das "news_" bei der attachMovie Methode ???

kannst du mir auf die sprünge helfen wie ich es zum funktionieren bekomme, denn flash zeig mir keine scriptfehler an ????

danke Ingrimm !!!!!!!!!!!
ccryder86 ist offline   Mit Zitat antworten
Alt 31-01-2009, 08:00   #9 (permalink)
Zero to Hero
 
Registriert seit: Apr 2007
Beiträge: 871
das "news_"+i ist der zukünfitge instanzname jeder news

in jedem durchlauf wird "i" um eins erhöht, d.h. news_0, news_1, news_2 usw.

denn sobald der schleifendurchlauf beendet ist, ist "mc" nicht mehr gültig.

ich tippe eher mal drauf, dass "numOfItems" = 0 ist.

setz mal hinter:
PHP-Code:
var numOfItems:Number contentArray.length
noch
PHP-Code:
trace("Arraylänge: " numOfItems); 
Und sicherheitshalber in zeile 1:

PHP-Code:
import mx.utils.Delegate
Da war ich mir heute nacht nicht sicher ob die Klasse zur referenzierung von Variablen als Methoden benötigt wird.
Falls das auch nichts bringt, zip mal dein projekt und lad es hier hoch, ferndiagnose ist immer schwer...

grüße
__________________
Ein Tag an dem du nicht gelacht hast ist ein verschwendeter Tag.
Never Stop!

Mike
ingrimm ist offline   Mit Zitat antworten
Alt 31-01-2009, 12:12   #10 (permalink)
Neuer User
 
Registriert seit: Sep 2007
Beiträge: 8
Juhuuu

Altes Schlitzohr ;o) Wunderbar funzt einwandfrei. Vielen Dank für deine Hilfe, ingrimm.

Nicht nur das ich das jetzt alles klappt wie es soll, sonder ich habe endlich diese childnodes verstanden, wo ich mich echt schwer mit getan habe.

Also in dem Sinne. CIAO
ccryder86 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
actionscript, dynamisch, extern, news

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 21:10 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele