Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-12-2005, 19:01   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 34
Farbe der Buttons bei XML News Menue

Hallo zusammen,
also ich hab jetzt viel gelesen, aber die richtige Lösung für mein Problem finde ich nicht.

Ich bin dabei mir ein XML News Sytem zu bauen. Habe dazu das hier im Board veröffentlichete Tutorial zu rate gezogen. Soweit ganz gut, die News werden aus dem XML File gelesen und dargestellt.

Jetzt bin ich dran, den Überschriften bei RollOver und Rollout und Releas eine Farbe zuzuordnen. Das geht auch, nur auf mein Release folgt ja immer gleich das Rollout und somit verschwindet die Farbe des gedrückten Buttons gleich wieder.
Wie stelle ich es an, dass der Button gedrückt bleibt.

Ich weiss dass sich beim drücken eine variable mitgeben könnte, verzweifle aber im moment an der Umsetzung.

Hier mein AS:

Im attachten Movie News befindet sich ein MC namens "linkage". Dieses mc wwill ich farblich verändern.


Code:
stop();

//
MovieClip.prototype.setRGB = function(col){
(new Color(this)).setRGB(col);
};
//

for (var i =0;i<anzahl; i++) {
	
 	this.head.attachMovie("newsheader", "news" + i, 11 + i, { _x: 14, _y: 30+(i*25) } ); 
	this.head["news"+i].date.text = XMLdaten_date[i];
	this.head["news"+i].date.embedFonts = true;
	this.head["news"+i].date1.text = XMLdaten_date[i];//Schatten
	this.head["news"+i].date1.embedFonts = true;
	this.head["news"+i].header.text = XMLdaten_header[i];
	this.head["news"+i].header.embedFonts = true;
	this.head["news"+i].header1.text = XMLdaten_header[i];//schatten
	this.head["news"+i].header1.embedFonts = true;
	
	
	
	this.head["news"+i].linkage.onRollOver = function(){
	this.setRGB(0x777777);
	}
	
	this.head["news"+i].linkage.onRollOut = function(){
	this.setRGB(0x666666);
	}
		
	this.head["news"+i].linkage.onRelease = function(){
	 this.setRGB(0x222222);
	}
	
	
}
Vielleicht ne NEWBIE Frage, aber dafür bin ich ja auch ein NEWBIE...))
Hoffe auf Hilfe... Danke bullys

Geändert von bullys2003 (05-12-2005 um 19:17 Uhr)
bullys2003 ist offline   Mit Zitat antworten
Alt 05-12-2005, 19:47   #2 (permalink)
squirlish
 
Benutzerbild von ChriZi
 
Registriert seit: Mar 2004
Ort: CH
Beiträge: 492
Code:
this.head["news"+i].linkage.onRollOver = function(){
this.setRGB(0x777777);
}
	
this.head["news"+i].linkage.onRollOut = function(){
if(thist.state != "released") { //abfrage ob der button schon gedrückt wurde
this.setRGB(0x666666);
}
}
		
this.head["news"+i].linkage.onRelease = function(){
this.setRGB(0x222222);
this.state = "released";//der button wird gedrückt und der wert für die variabel gesetzt
}
__________________
SQUIRLART|PHOTOGRAPHY
ChriZi ist offline   Mit Zitat antworten
Alt 05-12-2005, 20:00   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 34
danke für die Hilfe, aber leider gehts das so auch nicht, das war das, was ich auch schon probiert hatte..
ich hänge mal die fla an...
hab ein trace nach dem buttonpress angehängt... es zeigt "state undefined" an.

Das ist genau der Punkt, an dem ich verzweifle...
Danke für die weitere Hilfe
Angehängte Dateien
Dateityp: rar news.rar (12,1 KB, 0x aufgerufen)
bullys2003 ist offline   Mit Zitat antworten
Alt 05-12-2005, 21:29   #4 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 34
auch das geht nicht.. ich bin am ende.. so schwer kann das doch nicht sein.. bitte heft ...)
Code:
stop();

//
MovieClip.prototype.setRGB = function(col){
(new Color(this)).setRGB(col);
};
//

for (var i =0;i<anzahl; i++) {
	
 	this.head.attachMovie("newsheader", "news" + i, 11 + i, { _x: 14, _y: 30+(i*25) } ); 
	this.head["news"+i].date.text = XMLdaten_date[i];
	this.head["news"+i].date.embedFonts = true;
	this.head["news"+i].date1.text = XMLdaten_date[i];//Schatten
	this.head["news"+i].date1.embedFonts = true;
	this.head["news"+i].header.text = XMLdaten_header[i];
	this.head["news"+i].header.embedFonts = true;
	this.head["news"+i].header1.text = XMLdaten_header[i];//schatten
	this.head["news"+i].header1.embedFonts = true;
	
//this.head["news"+i].linkage.onEnterFrame = function (){
		//delete this.onEnterFrame;
this.head["news"+i].linkage.onRollOver = function(){
this.state = "rollover";
trace(this.state);
}
	
this.head["news"+i].linkage.onRollOut = function(){
this.state = "rollout";
trace(this.state);
}
this.head["news"+i].linkage.onPress = function(){
	this.state = "reset";//der button wird gedrückt und der wert für die variabel gesetzt
	trace(this.state);
}
		
this.head["news"+i].linkage.onRelease = function(){
this.state = "released";//der button wird gedrückt und der wert für die variabel gesetzt
trace(this.state);
}

if(this.state = "rollover") { //abfrage ob der button schon gedrückt wurde
			this.head["news"+i].linkage.setRGB(0x777777);
		}
		if(this.state = "rollout") { //abfrage ob der button schon gedrückt wurde
			this.head["news"+i].linkage.setRGB(0x666666);
		}
		if(this.state = "released") { //abfrage ob der button schon gedrückt wurde
			this.head["news"+i].linkage.setRGB(0x222222);
		}
		if(this.state = "reset") { //abfrage ob der button schon gedrückt wurde
			this.head["news"+i].linkage.setRGB(0x666666);
		}

	//}
	
	
}
bullys2003 ist offline   Mit Zitat antworten
Alt 05-12-2005, 22:09   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 34
so.. die letzte Version für heute... ich habe das .fla nochmal angehängt..
bitte um hilfe.. ist bestimmt nur ein kleiner fehler

danke und n8
gruss bullys
Angehängte Dateien
Dateityp: rar news.rar (12,2 KB, 3x aufgerufen)
bullys2003 ist offline   Mit Zitat antworten
Alt 05-12-2005, 23:14   #6 (permalink)
.
 
Registriert seit: May 2003
Ort: bayern
Beiträge: 1.117
try this:
PHP-Code:
stop();

//
MovieClip.prototype.setRGB = function(col){
(new 
Color(this)).setRGB(col);
};
//

for (var =0;i<anzahli++) {
    
     
=this.head.attachMovie("newsheader""news_" i11 i, { _x14_y30+(i*25) } ); 
    
n.date.text XMLdaten_date[i];
    
n.date.embedFonts true;
    
n.date1.text XMLdaten_date[i];//Schatten
    
n.date1.embedFonts true;
    
n.header.text XMLdaten_header[i];
    
n.header.embedFonts true;
    
n.header1.text XMLdaten_header[i];//schatten
    
n.header1.embedFonts true;
        
n.onRollOver = function(){
this.state "rollover";
this.linkage.setRGB(0x777777);
trace(this._name+': '+this.state);
}
    
n.onRollOut = function(){
this.state "rollout";
this.linkage.setRGB(0x666666);
trace(this._name+': '+this.state);
}
n.onPress = function(){
this.state "reset";
this.linkage.setRGB(0x666666);    
trace(this._name+': '+this.state);
}
        
n.onRelease = function(){
this.state "released";
this.linkage.setRGB(0x222222);
trace(this._name+': '+this.state);
}
    

__________________
[mooseMash]
mooseMash ist offline   Mit Zitat antworten
Alt 06-12-2005, 07:52   #7 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 34
Hi mooseMash,
danke für die Hilfestellung... das ist ein schöner sauberer Ansatz und die traces sind jetzt sehr übersichtlich.

Leider bleibt der gedrückte Button immer noch nicht gefärbt, da ja auf das release gleich wieder das rollout folgt...

ist denn das so schwer ? ich hätte gedacht, dass es soeine funktion schon in 1000 scripten gibt und dass meine newb frage mit 1-2 post erledigt gewesen wäre )

gruss bullys

achja: bitte um weitere vorschläge...
bullys2003 ist offline   Mit Zitat antworten
Alt 06-12-2005, 08:40   #8 (permalink)
.
 
Registriert seit: May 2003
Ort: bayern
Beiträge: 1.117
schon ne blöde sache, das diese dinge auch immer genau das tun was man ihnen sagt, so wie du es angelegt hast kann auch nichts anderes passieren, wenn ich dich richtig verstehe möchtest du das nach release die farbänderung erhalten bleibt, auch bei rollout und wenn ich jetzt auf einen anderen button clicke bekommt der die "active" farbe und der alte button erhält die "passive" farbe?

okay, davon ausgehend das dem so ist:

1) du brauchst einen status, der markiert ob ein button activ ist oder nicht,
im folgenden script this.clicked, der ist entweder wahr oder falsch, die anderen events, onRollOver, onRollOut, onPress machst du davon abhängig ob der status wahr oder falsch ist, nur wenn der status falsch ist werden sie ausgeführt.

2)du brauchst eine function die dir die einstellung des alten buttonws wiedre herstellt, im folgenden activateClickStatus, ich durchlaufe hier einfach sämtliche buttons und versetze sie in die ausgangslage, nur den gedrückten button mache ich activ..

hope it works

PHP-Code:
stop();

//
MovieClip.prototype.setRGB = function(col){
(new 
Color(this)).setRGB(col);
};
//

for (var =0;i<anzahli++) {
    
     
=this.head.attachMovie("newsheader""news_" i11 i, { _x14_y30+(i*25) } ); 
    
n.date.text XMLdaten_date[i];
    
n.date.embedFonts true;
    
n.date1.text XMLdaten_date[i];//Schatten
    
n.date1.embedFonts true;
    
n.header.text XMLdaten_header[i];
    
n.header.embedFonts true;
    
n.header1.text XMLdaten_header[i];//schatten
    
n.header1.embedFonts true;
        
n.onRollOver = function(){
    if(
this.clicked)return;
this.state "rollover";
this.linkage.setRGB(0x777777);
trace(this._name+': '+this.state);
}
    
n.onRollOut = function(){
    if(
this.clicked)return;
this.state "rollout";
this.linkage.setRGB(0x666666);
trace(this._name+': '+this.state);
}
n.onPress = function(){
    if(
this.clicked)return;
this.state "reset";
this.linkage.setRGB(0x666666);    
trace(this._name+': '+this.state);
}
        
n.onRelease = function(){
activateClickStatus(this);
trace(this._name+': '+this.state);
}
    
}
    
function 
activateClickStatus(mc){
    var 
actMenue Number(mc._name.split("_")[1]);
    for(var 
i=0;i<anzahl;i++){
        if(
i!=actMenue){
        
this.head["news_"+i].clicked false;
        
this.head["news_"+i].state "rollout";
        
this.head["news_"+i].linkage.setRGB(0x666666);
        }else{
        
this.head["news_"+i].clicked true;
        
this.head["news_"+i].state "released";
        
this.head["news_"+i].linkage.setRGB(0x222222);
        }
    }

__________________
[mooseMash]
mooseMash ist offline   Mit Zitat antworten
Alt 06-12-2005, 08:40   #9 (permalink)
not-A-pro :D
 
Registriert seit: Sep 2005
Ort: Würzburg/Bayern
Beiträge: 109
rollover farbwert = rollout farbwert?
oder etwa (pseudocode

rollover änder farbwert nach xxx
i=0
i++
wenn i >0 setze farbwert gleich 000
sonst >rollout... änder farbwert nach yyy

000 ist hier dein gewünschter farbwert, ein rollout findet nicht statt wenn ein rollover da war
__________________
Von allen Dingen die mir verloren gegangen, bin ich am meisten an meinem Verstand gehangen!

Mit dem ersten Blackout fängt es erst richtig an!
http://www.reich-durchs-web.de
Coreyl ist offline   Mit Zitat antworten
Alt 06-12-2005, 14:15   #10 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 34
erstmal vielen Dank für die Hilfe nochmal.
ich bin momentan auf der arbeit, werde aber heute Abend gleich weitere Tests starten und Bericht geben...
gruss bullys
bullys2003 ist offline   Mit Zitat antworten
Alt 06-12-2005, 19:48   #11 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 34
Hi mooseMash...
das funzt perfekt... genauso hab ich mir das vorgestellt...
Vielen Dank für die tatkräftige Unterstüzung

lg bullys2003
bullys2003 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 09:37 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele