Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-09-2006, 12:35   #1 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Hilfe bei XML News

Hallo,

derzeit arbeite ich an einem XML News System für meine Homepage, aber leider komme ich mit meinem Latein nicht mehr weiter.
Um mein Problem besser zu erklären bitte ich euch folgendes anzuschauen:

derzeitiger Status

Konzept

Mein Problem ist das Faden der Buttons sowie das einblenden der News. Ich weis nicht wie ich an die Sache herangehen soll.

Hier die fla zum Download

Ich hoffe ihr könnt mir helfen.

MfG Alpha

EDIT:

Das bisherige Script:
PHP-Code:
//
// Textformat bestimmen
//
var txt_format1:TextFormat = new TextFormat();
txt_format1.font "TeachersPet";
txt_format1.color 0xCCCCCC;
txt_format1.size 8;
//
var txt_format2:TextFormat = new TextFormat();
txt_format2.font "TeachersPet";
txt_format2.color 0xEAEAEA;
txt_format2.size 8;
//
// Prototypen
//
//// MC Animation
//
MovieClip.prototype.mc_rewind = function(reversedelay_target) {
    
this.delay delay_target;
    
this.delay_overall 10;
    
this.onEnterFrame = function() {
        if (
reverse == false) {
            
this.nextFrame();
        } else if (
reverse == true) {
            
// Zeitverzögerung
            
if (this.delay>=this.delay_overall) {
                
this.prevFrame();
            } else {
                if (
delay<7) {
                    
this.nextFrame();
                }
                
this.delay++;
                return (
this.delay);
            }
        }
        if (
this._currentframe == || this._currentframe == this._totalframes) {
            
delete this.onEnterFrame;
        }
    };
};
//
//// Buttons animieren
//
MovieClip.prototype.button_animation = function(nrNews) {
    
this.onRollOver = function() {
        
this.mc_rewind(false);
    };
    
this.onRollOut this.onDragOut=function () {
        
this.mc_rewind(true0);
    };
    
this.onRelease = function() {
        
this.news_einfaden(nrNewsanzahl);
    };
};
//
//// Buttons auf die Buhne setzen
//
MovieClip.prototype.attach_button = function(nrTitelDatumNewsanzahl) {
    
//
    
this.attachMovie("button""button"+nrnr);
    
this["button"+nr].button_animation(nrNewsanzahl);
    
this["button"+nr].button_beschriftung(nrTitelDatum);
    
this["button"+nr].button_position(nr*16);
};
//
//// Buttons positionieren
//
MovieClip.prototype.button_position = function(ywert) {
    
this._x 0;
    
this._y ywert;
};
//
//// Buttons beschriften
//
MovieClip.prototype.button_beschriftung = function(nrTitelDatum) {
    
this.createTextField("datum"nr5, -330021);
    
this.datum.setNewTextFormat(txt_format1);
    
this.datum.embedFonts true;
    
this.datum.text Datum;
    
this.datum.autoSize true;
    
//
    
this.createTextField("titel"nr+1Math.round(this.datum._width)+10, -330021);
    
this.titel.setNewTextFormat(txt_format2);
    
this.titel.embedFonts true;
    
this.titel.text Titel;
    
this.titel.autoSize true;
};
//
//// News einfaden
//
MovieClip.prototype.news_einfaden = function(nrNewsanzahl) {
    for (
i=nri<anzahl-1i++) {
        
this._parent["button"+(i+1)].button_position();
        
//
        // hier komme ich nicht weiter :(
        //
    
}
};
//
// Prototypen Ende
//
// Daten aus XML laden
//
var _xml = new XML();
_xml.ignoreWhite true;
_xml.load("XML/news.xml");
_xml.onLoad = function(status) {
    if (
status) {
        
anzahl _xml.firstChild.childNodes.length;
        
news_titel = [];
        
news_datum = [];
        
news_news = [];
        for (var 
0i<anzahli++) {
            
news_titel[i] = _xml.firstChild.childNodes[i].attributes.Titel;
            
news_datum[i] = _xml.firstChild.childNodes[i].attributes.Datum;
            
news_news[i] = _xml.firstChild.childNodes[i].attributes.News;
            
attach_button(inews_titel[i], news_datum[i], news_news[i], anzahl);
        }
    }
}; 
So sieht die XML Datei aus:

Code:
<?xml version="1.0" encoding="utf-8"?>
	
	<inhalt>
		<News
			Titel="Erste News" 
			Datum="04.04.2006" 
			News="Es funktioniert alles wunderbar."
		/>
		<News
			Titel="Sonderzeichen" 
			Datum="04.04.2006" 
			News="Sogar die Sonderzeichen müssten funktionieren."
		/>
		<News
			Titel="Funktionstests" 
			Datum="04.04.2006" 
			News="Das ist nur ein Test. Bitte schnallen Sie sich an, stellen Sie ihre Sitze in eine aufrechte Position und klappen Sie die Tische hoch."
		/>
		<News
			Titel="Tests erfolgreich" 
			Datum="04.04.2006" 
			News="Die Tests sind vorbei. Wenn alles so weiter geht gefällt mir das ganze ganz gut."
		/>
		<News
			Titel="Weitere verbesserungen" 
			Datum="04.04.2006" 
			News="Da nun das Grundgerüst steht, versuche ich weitere Verbesserungen zu realisieren.Beispielsweise sollte diese News ganz oben stehen."
		/>
	</inhalt>
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt

Geändert von Alpha.ONE (15-09-2006 um 12:38 Uhr)
Alpha.ONE ist offline   Mit Zitat antworten
Alt 15-09-2006, 12:39   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Das "Konzept" ist ja geil .

Und du willst also quasi, dass wenn man auf einen Menüpunkt klickt, sich Untermenüs öffnen und die darunterliegenden Punkte nach unten wandern?
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 15-09-2006, 12:40   #3 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Genau das will ich aber wie gesagt weis ich nicht wie ich das anstellen soll.

Zitat:
Das "Konzept" ist ja geil.
Ja is nur ne schnelle Zeichnung.
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt
Alpha.ONE ist offline   Mit Zitat antworten
Alt 15-09-2006, 13:06   #4 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
am leichtesten wärs ja wenn du die mcs die du attachest dann auch direkt nen onRelease effect haben, aber so würd cih es jetz amchen damit ist es glaub einfacher ^^
PHP-Code:
import mx.transitions.Tween;
import mx.transitions.easing.*;

MovieClip.prototype.hover = function(clip)
{
    new 
Tween(clip,"_yscale",Regular.easeOut,clip._yscale,150,2,true);
}
//////////////
onEnterFrame = function()
{
for(
i=0;i<anzahl;i++)
{
    
_root["button"+i].onRelease = function()
    {
        
hover(this);
    }
}

so was in der art halt kann man sicher besser erweitern als einen mc.
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 15-09-2006, 13:08   #5 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Davon abgesehen, dass das Script nicht so ideal ist, würde ich hingehen
und sich die Elemente aneinander orientieren lassen. Also das untere
orientiert sich am oberen (Pos+Höhe) und somit kannst du deine News-
einträge öffnen und die unteren verschieben sich automatisch
sebastian ist offline   Mit Zitat antworten
Alt 15-09-2006, 14:23   #6 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Stimmt schon, dass das Script nicht so optimal ist. Habe mal kurz eingebaut, dass sich die Menüpunkte nach unten verschieben. Allerdings ohne Tween o.Ä.

Das Problem was noch besteht, ist, dass ein Textfeld mit "autoSize" 4 Pixel hoch ist. Deshalb auch der Kram mit _visible.

Ist alles nicht so prickelnd - aber als Beispiel sollte es reichen.

edit -> Ach so, wen's interessiert:
PHP-Code:
//
// Textformat bestimmen
//
var txt_format1:TextFormat = new TextFormat();
txt_format1.font "TeachersPet";
txt_format1.color 0xCCCCCC;
txt_format1.size 8;
//
var txt_format2:TextFormat = new TextFormat();
txt_format2.font "TeachersPet";
txt_format2.color 0xEAEAEA;
txt_format2.size 8;
//
// Prototypen
//
//// MC Animation
//
MovieClip.prototype.mc_rewind = function(reversedelay_target) {
    
this.delay delay_target;
    
this.delay_overall 10;
    
this.onEnterFrame = function() {
        if (
reverse == false) {
            
this.nextFrame();
        } else if (
reverse == true) {
            
// Zeitverzögerung
            
if (this.delay>=this.delay_overall) {
                
this.prevFrame();
            } else {
                if (
delay<7) {
                    
this.nextFrame();
                }
                
this.delay++;
                return (
this.delay);
            }
        }
        if (
this._currentframe == || this._currentframe == this._totalframes) {
            
delete this.onEnterFrame;
        }
    };
};
//
//// Buttons animieren
//
MovieClip.prototype.button_animation = function(nrNews) {
    
this.onRollOver = function() {
        
this.mc_rewind(false);
    };
    
this.onRollOut this.onDragOut=function () {
        
this.mc_rewind(true0);
    };
    
this.onRelease = function() {
        
this.news_einfaden(thisNewsanzahl);
    };
};
//
//// Buttons auf die Buhne setzen
//
MovieClip.prototype.attach_button = function(nrTitelDatumNewsanzahl) {
    
//
    
this.attachMovie("button""button"+nrnr);
    
this["button"+nr].button_animation(nrNewsanzahl);
    
this["button"+nr].button_beschriftung(nrTitelDatum);
    
this["button"+nr].button_position(nr*16);
};
//
//// Buttons positionieren
//
MovieClip.prototype.button_position = function(ywert) {
    
this._x 0;
    
this._y ywert;
};
//
//// Buttons beschriften
//
MovieClip.prototype.button_beschriftung = function(nrTitelDatum) {
    
this.createTextField("datum"1503000);
    
this.datum.setNewTextFormat(txt_format1);
    
this.datum.embedFonts true;
    
this.datum.text Datum;
    
this.datum.autoSize true;
    
//
    
this.createTextField("titel"2Math.round(this.datum._width)+1003000);
    
this.titel.setNewTextFormat(txt_format2);
    
this.titel.embedFonts true;
    
this.titel.text Titel;
    
this.titel.autoSize true;
    
//
    
this.createTextField("news"30this._y+this._height-23500);
    
this.news.multiline true;
    
this.news.autoSize true;
    
this.news.wordWrap true;
    
this.news.background true;
    
this.news.backgroundColor 0x000000;
    
this.news.setNewTextFormat(txt_format1);
    
this.news.embedFonts true;
    
this.news._visible false
};
//
//// News einfaden
//
MovieClip.prototype.news_einfaden = function(nrNewsanzahl) {
    for (var 
0i<anzahli++) {
        
this._parent["button"+i].news.text ""
        
this._parent["button"+i].news._visible false
    
}
    if (
_root.temp != nr) {
        
nr.news.text News;
        
nr.news._visible true;
    }
    for (var 
0j<anzahlj++) {
        
this._parent["button"+j].button_position(this._parent["button"+(j-1)]._y+this._parent["button"+(j-1)]._height-1);
    }
    
_root.temp nr;
};
//
// Prototypen Ende
//
// Daten aus XML laden
//
var _xml = new XML();
_xml.ignoreWhite true;
_xml.load("news.xml");
_xml.onLoad = function(status) {
    if (
status) {
        
anzahl _xml.firstChild.childNodes.length;
        
news_titel = [];
        
news_datum = [];
        
news_news = [];
        for (var 
0i<anzahli++) {
            
news_titel[i] = _xml.firstChild.childNodes[i].attributes.Titel;
            
news_datum[i] = _xml.firstChild.childNodes[i].attributes.Datum;
            
news_news[i] = _xml.firstChild.childNodes[i].attributes.News;
            
attach_button(inews_titel[i], news_datum[i], news_news[i], anzahl);
        }
    }
}; 
Angehängte Dateien
Dateityp: rar news.rar (5,8 KB, 11x aufgerufen)
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++

Geändert von Der Frager (15-09-2006 um 14:25 Uhr)
Der Frager ist offline   Mit Zitat antworten
Alt 15-09-2006, 15:20   #7 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Danke für die schnelle Antwort.
Leider macht das Script weiterhin Probleme:

siehe hier

Das passiert wenn man auf einen Button klickt.
Was mich stört ist die deplazierte Schrift sowie das sich alle Menupunkte nach unten bewegen auch die die eigentlich über dem angeklickten button liegen aber daran kann ich arbeiten.

Zitat:
Stimmt schon, dass das Script nicht so optimal ist.
Ich bitte um eine Erklärung, ich verstehe nicht warum.

MfG Alpha
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt
Alpha.ONE ist offline   Mit Zitat antworten
Alt 15-09-2006, 15:37   #8 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Bei mir sieht's eh anders aus (siehe Anhang).

Außerdem ist mir aufgefallen, wenn man einen Menüpunkt schließt und direkt danach wieder öffnen will, dann geht's nicht... Pfusch am Bau meinerseits .

Wenn mir Cheffe nicht auf den Keks geht, dann baue ich gleich mal kurz ein Beispiel, das zeigt, wie ich's ungefähr machen würde...
Angehängte Grafiken
Dateityp: jpg test.jpg (28,6 KB, 17x aufgerufen)
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 15-09-2006, 15:45   #9 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Kann das daran liegen, dass ich die news.swf per loadMovie in einen Container lade?

Das mein Code nicht ideal ist höre ich öfter aber niemand erklärt mir warum, deshalb meine Frage.

MfG und Danke für die Mühe.
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt
Alpha.ONE ist offline   Mit Zitat antworten
Alt 15-09-2006, 17:10   #10 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Mann... da denke ich, mal schnell zusammenschreiben (ging auch fix) - und dann machen mich die Textfeldhöhen total fertig. Deshalb auch dieser etwas seltsame Teil mit der Abfrage auf > 20.

Mann könnte das vielleicht auch noch etwas verkürzen (wie auch immer) aber jedenfalls klappt's soweit ich das getestet habe ganz gut...
PHP-Code:
var tl this;
//
import mx.transitions.Tween;
//
var _xml = new XML();
_xml.ignoreWhite true;
_xml.onLoad = function(status) {
    if (
status) {
        
makeMenu();
    } else {
        
trace("Fehler");
    }
};
//
_xml.load("news.xml");
//
function makeMenu() {
    
anzahl _xml.firstChild.childNodes.length;
    
news_titel = [];
    
news_datum = [];
    
news_news = [];
    for (var 
0i<anzahli++) {
        var 
btn tl.attachMovie("button""button"+ii, {_y:i*16});
        
btn.farb_mc._alpha 0;
        
btn.news_txt.autoSize true;
        
btn.titel.text _xml.firstChild.childNodes[i].attributes.Titel;
        
btn.datum.text _xml.firstChild.childNodes[i].attributes.Datum;
        
btn.news _xml.firstChild.childNodes[i].attributes.News;
        
//
        
btn.onRollOver = function() {
            new 
Tween(this.farb_mc"_alpha"0010010);
        };
        
btn.onRollOut btn.onDragOut=function () {
            new 
Tween(this.farb_mc"_alpha"0this.farb_mc._alpha010);
        };
        
btn.onRelease = function() {
            if (
_root.last_mc == this) {
                if (
this.news_txt.text == "") {
                    
this.news_txt.text this.news;
                } else {
                    
this.news_txt.text "";
                }
            } else {
                
_root.last_mc.news_txt.text "";
                
this.news_txt.text this.news;
            }
            
this.news_txt._alpha 0;
            
_root.last_mc this;
            
showNews();
        };
    }
}
//
function showNews() {
    var 
ziel 0;
    for (var 
0i<anzahli++) {
        
ziel += Math.ceil(tl["button"+(i-1)]._height)-|| 0;
        if (
tl["button"+(i-1)].news_txt._height>20) {
            
ziel += 3;
        }
        var 
= new Tween(tl["button"+i], "_y"0tl["button"+i]._yziel10);
        
t.onMotionFinished = function() {
            new 
Tween(_root.last_mc.news_txt"_alpha"0010010);
        };
    }

Angehängte Dateien
Dateityp: rar news1.rar (5,3 KB, 22x aufgerufen)
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager 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 15:23 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele