Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-04-2011, 17:01   #1 (permalink)
random
 
Registriert seit: Jun 2001
Beiträge: 834
Verschiedene Anbieter-CSS handeln ...

Gegeben:
Basisanwendung, die aus mehreren Modulen und Komponenten besteht. Für diese wird eine eigene CSSStyleDeclaration (CSS.swf) geladen.


Innerhalb eine Konfigurators können sich Benutzer eigene Artikel konfektionieren. Die Konfiguratortemplates müssen mit Stylesheets der einzelnen Hersteller 'gebrandet' werden, mittels eigener CSS-Files (... können auch als *.swf vorkompiliert werden).


Wie muss ich das anlegen bzw. wie kann ich innerhalb der Anwendung zwischen den einzelnen Stylesheets 'toggeln'?
__________________
-------------------


ciao, blue
blue ist offline   Mit Zitat antworten
Alt 11-04-2011, 17:08   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Mach doch ein CSS Template, das die einzelnen Hersteller dann implementieren (eine Art Protokoll). So musst du dann nie was im Code ändern.
Omega Psi ist offline   Mit Zitat antworten
Alt 11-04-2011, 17:29   #3 (permalink)
random
 
Registriert seit: Jun 2001
Beiträge: 834
Hi Omega,

anbei etwas Code zum Veranschaulichen:

Code:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
	
	<s:layout>
		<s:VerticalLayout gap="40"/>
	</s:layout>
	
	<fx:Script>
		<![CDATA[
			import mx.events.StyleEvent;
			
			protected function b0_clickHandler(n:String):void
			{
				var style:CSSStyleDeclaration;
				
				style = new CSSStyleDeclaration( 
					configurator.styleManager.loadStyleDeclarations2( 
						'hersteller' + n + 'CSS.swf' ) );
				style.addEventListener(StyleEvent.COMPLETE, onComplete);
				
			}
			
			protected function onComplete(event:StyleEvent):void
			{
				trace( 'bing' );
			}
			
			
		]]>
	</fx:Script>

	<fx:Declarations>
		<!-- Platzieren Sie nichtvisuelle Elemente (z.*B. Dienste, Wertobjekte) hier -->
	</fx:Declarations>
	
	<s:HGroup>
		<s:Button id="b0" label="Hersteller 1" click="b0_clickHandler('1')"/>
		<s:Button id="b1" label="Hersteller 2" click="b0_clickHandler('2')"/>
		<s:Button id="b2" label="Hersteller 3" click="b0_clickHandler('3')"/>
	</s:HGroup>
	
	<s:Panel>
		<s:HGroup id="configurator">
			<s:Button id="h0" label="Farbe" click="{trace( 'Farbe' )}"/>
			<s:Button id="h1" label="Grösse" click="{trace( 'Grösse' )}"/>
			<s:Button id="h2" label="Material" click="{trace( 'Material' )}"/>
		</s:HGroup>
	</s:Panel>
	
</s:Application>
Code:
/* CSS file hersteller1CSS.css */
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";

s|Button {
	
	color: #990000;
	corner-radius: 2;
	
}
Code:
/* CSS file hersteller2CSS.css */
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";

s|Button {
	
	color: #FF0088;
	corner-radius: 6;
	
}
Code:
/* CSS file hersteller3CSS.css */
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";

s|Button {
	
	color: #9900FF;
	corner-radius: 10;
	
}
Die Buttons 'Hersteller1' , 'Hersteller2' und 'Hersteller3' sollen ihre Optik aber nicht verändern, wenn die CSS geladen wurden
__________________
-------------------


ciao, blue
blue ist offline   Mit Zitat antworten
Alt 11-04-2011, 17:43   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Mal anders herum: was ist gleich und was ist unterschiedlich?

Im einfachsten Fall hast du ja eine fixe Menge von Herstellern und Controls. Da müsstest du nur styleNames fixieren. Bei n Herstellern und m Controls wird das ganze schon interessanter.
Omega Psi ist offline   Mit Zitat antworten
Alt 11-04-2011, 17:54   #5 (permalink)
random
 
Registriert seit: Jun 2001
Beiträge: 834
Die Basisanwendung und das Modul bleiben gleich. Nur das Stylesheet innerhalb der
Code:
<s:HGroup id="configurator">
ändert sich, je nach Hersteller. Beispiel Button-Form und -Farbe usw.

Anzahl der Hersteller unbekannt.
__________________
-------------------


ciao, blue

Geändert von blue (11-04-2011 um 17:56 Uhr)
blue ist offline   Mit Zitat antworten
Alt 11-04-2011, 18:15   #6 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Es sollen nur die Buttons gestyled werden? Verstehe ich das Richtig?
Omega Psi ist offline   Mit Zitat antworten
Alt 11-04-2011, 18:22   #7 (permalink)
random
 
Registriert seit: Jun 2001
Beiträge: 834
Buttons, Textfelder, weitere Panels und und und - also das volle Komponentenprogramm

aber nur innerhalb
Zitat:
<s:HGroup id="configurator">
__________________
-------------------


ciao, blue

Geändert von blue (11-04-2011 um 18:24 Uhr)
blue ist offline   Mit Zitat antworten
Alt 11-04-2011, 18:25   #8 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Und das ist alles in miteinander vermengt? Oder gibt es dann eine Gruppe/Hierarchie pro Hersteller?
Omega Psi ist offline   Mit Zitat antworten
Alt 11-04-2011, 18:48   #9 (permalink)
random
 
Registriert seit: Jun 2001
Beiträge: 834
Erweitert ...

Code:
/<?xml version="1.0" encoding="utf-8"?>
<!-- Konfigurator.mxml -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:local="*">
	
	<s:layout>
		<s:VerticalLayout gap="40"/>
	</s:layout>
	
	<fx:Script>
		<![CDATA[
			import mx.events.StyleEvent;
			
			private var _currentStylesheet:CSSStyleDeclaration;
			
			[Bindable('currentStylesheetChanged')]
			public function get currentStylesheet():CSSStyleDeclaration
			{
				return _currentStylesheet;
			}
			public function set currentStylesheet( value:CSSStyleDeclaration ):void
			{
				if ( _currentStylesheet == value )
					return;
				
				_currentStylesheet = value;
				dispatchEvent( new Event('currentStylesheet') );
			}
			
			protected function b0_clickHandler(n:String):void
			{
				currentStylesheet = new CSSStyleDeclaration( 
					styleManager.loadStyleDeclarations2( 'hersteller' + n + 'CSS.swf' ) );
				currentStylesheet.addEventListener(StyleEvent.COMPLETE, onComplete);
				
			}
			
			protected function onComplete(event:StyleEvent):void
			{
				trace( 'bing' );
			}
			
		]]>
	</fx:Script>

	<fx:Declarations>
		<!-- Platzieren Sie nichtvisuelle Elemente (z.*B. Dienste, Wertobjekte) hier -->
	</fx:Declarations>
	
	<s:HGroup>
		<s:Button id="b0" label="Hersteller 1" click="b0_clickHandler('1')"/>
		<s:Button id="b1" label="Hersteller 2" click="b0_clickHandler('2')"/>
		<s:Button id="b2" label="Hersteller 3" click="b0_clickHandler('3')"/>
	</s:HGroup>
	
	<local:ConfTemplate id="configurator" stylesheet="{currentStylesheet}"/>
	
</s:Application>
Code:
<?xml version="1.0" encoding="utf-8"?>
<!-- ConfTemplate.mxml * -->
<s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009" 
		 xmlns:s="library://ns.adobe.com/flex/spark" 
		 xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"
		 title="KONFIGURATOR PANEL">
	
	<fx:Script>
		<![CDATA[
			
			public var stylesheet:CSSStyleDeclaration;
			
		]]>
	</fx:Script>
	
	<s:VGroup>
		
		<s:HGroup>
			<s:Button id="h0" label="Farbe" click="{trace( 'Farbe' )}"/>
			<s:Button id="h1" label="Grösse" click="{trace( 'Grösse' )}"/>
			<s:Button id="h2" label="Material" click="{trace( 'Material' )}"/>
		</s:HGroup>
		
		<mx:Image id="Artikelabbildung" width="379" height="128" x="9" y="129"/>
		
		<s:RichText id="Artikelbeschreibung" width="377" height="120" x="11"/>
	
	</s:VGroup>
	
</s:Panel>
Code:
/* CSS file hersteller1.css */
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";

s|Button {
	color: #990000;
	corner-radius: 2;
}

s|RichText {
	color: #0066AA;
}
Code:
/* CSS file hersteller2.css */
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";

s|Button {
	color: #FF0088;
	corner-radius: 6;
}

s|RichText {
	color: #AA0088;
}
Code:
/* CSS file hersteller3.css */
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";

s|Button {
	color: #9900FF;
	corner-radius: 10;
}

s|RichText {
	color: #99FF66;
}
__________________
-------------------


ciao, blue
blue ist offline   Mit Zitat antworten
Alt 11-04-2011, 18:53   #10 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Es existeren dann pro Hersteller jeweils ein Panel?
Omega Psi ist offline   Mit Zitat antworten
Alt 11-04-2011, 18:58   #11 (permalink)
random
 
Registriert seit: Jun 2001
Beiträge: 834
Stell dir vor, das Panel ist ein Schuhkonfigurator. Schuh bleibt Schuh. Aber Hersteller Püppistraum will alles in einem rosalalapink-Style und BuffaloBillBoots wollen das Ganze in edler Wildwestromantik-Optik haben ...


das Template als solches ändert sich ja nicht ...
__________________
-------------------


ciao, blue
blue ist offline   Mit Zitat antworten
Alt 11-04-2011, 19:03   #12 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Ja, das war die Frage, wenn jeder sein eigenes Panel bekommt, kann man das via StyleSheets ändern.

Code:
@namespace local "*"; /* You want to stuff the components it in a namespace. */

/* Style the child with the id h0 */
local|ConfTemplate #h0 {

}
So als Anhaltspunkt. Einfach mal hier stöbern: CSS Advanced Selectors - Flex SDK - Adobe Open Source
Omega Psi ist offline   Mit Zitat antworten
Alt 11-04-2011, 19:06   #13 (permalink)
random
 
Registriert seit: Jun 2001
Beiträge: 834
Danke vorab, du hast mich gerade auf eine Idee gebracht. Werd's morgen mal testen und reporten

schönen Feierabend
__________________
-------------------


ciao, blue
blue ist offline   Mit Zitat antworten
Alt 11-04-2011, 19:21   #14 (permalink)
random
 
Registriert seit: Jun 2001
Beiträge: 834
Code:
/* CSS file hersteller1.css */
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";

.hersteller1 {
	
}

.hersteller1 s|Button {
	color: #990000;
	corner-radius: 2;
}

.hersteller1 s|RichText {
	color: #0066AA;
}
ich setze per Button die styleName Eigenschaft des Panels auf 'hersteller1' - und dann geht's mit der neuen CSS
__________________
-------------------


ciao, blue
blue 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
XML; Verschiedene Bilder in verschiedene Container laden? zheddo Flash CS3 Professional 2 27-01-2010 13:38
Um welchen Font könnte es sich handeln? seth1976 Am Rande 15 01-05-2006 22:09
Click auf menuBarItem handeln ohne menuItems Gerhard Laib Flash MX 2004 0 14-10-2004 17:39
Listbox-verschiedene Zeilen-verschiedene Farben Wayld Komponenten und SmartClips 4 02-04-2004 08:11
Komplexe Sounds in Flash handeln!? Flashkoef Flash 4 und Flash 5 5 12-04-2002 17:56


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:29 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele