Flashhilfe.de - Flash Community

mehrsprachige menuBar komponente [Flash 8]

 


AntwortenRegistrieren Seite1  

springer#1
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

24.10.2006, 21:14

hallo

ich will eine menuBar komponente für ein mehrsprachiges menu verwenden.
die struktur des menus wird anhand von einer xml-datei erstellt.

für die sprachauswahl hab ich die comboBox komponente verwendet, die beim wechseln
meine funktion writeMenu() aufruft.

Die texte für die menus erstelle ich in der stringtabelle.
in der xml datei, die die struktur des menus darstellt, sind die IDS_blablas der stringtabelle enthalten.

soweit sogut...

mein problem ist wenn ich die englische sprache auswähle, die menupunkte zwar in englisch sind, nicht aber die untermenupunkte.

hier mal meine funktion writeMenu(): innerhalb der funktion kommt die funktion returnLabel() vor, die anhand der IDS_blabla den entsprechenden sprach-String ausgibt. diese funktion funktioniert richtig, denn im trace werden die englischen untermenupunkte ausgegeben. nur leider schreibt er die nicht ins menu, da stehen immer noch die deutschen...

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function writeMenu(xml:XML) {
   adminMenu.removeAll();
   var topLevel:Array = xml.firstChild.childNodes;
   trace("Hauptmenupunkte: " +topLevel.length)
   for(i=0;i<topLevel.length;i++){
      trace("------------------------------------Menu"+i)
      var txt = this._parent.returnLabel("IDS_NAV"+i);
      trace("Label: "+txt)
      var subLevel:Array = topLevel[i].childNodes;
      var myMenu:mx.controls.Menu = adminMenu.addMenu(txt);
      delete txt;
      for(j=0;j<subLevel.length;j++){
         var txt = this._parent.returnLabel("IDS_NAV"+i+"-"+j);
         trace("subLabel: "+txt)
         myMenu.addMenuItem({label:txt, instanceName:"IDS_NAV"+i+"-"+j});
         delete txt;
         }
   
      }
}


jemand ne idee warum die untermenus nicht englisch sind??

gruss springer
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
Geändert von springer am 24.10.06 um 21:22 Uhr
badskill#2
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

24.10.2006, 21:27

Was kommt bei dem trace raus
ActionScript:
1trace("IDS_NAV"+i+"-"+j);

Und wenn du die Variablen txt spezieller benennst? txt1 und txt2 oder so?
Geändert von badskill am 24.10.06 um 21:29 Uhr
H@ilo#3
Benutzerbild von H@ilo
Beiträge: 15261
Wohnort: Bremen
Registriert: Jan 2002

24.10.2006, 21:30

Ein Minus-Operator in einem Bezeichner?

Ich glaube fast, Flash findet das garnicht lustig.

H@ilo
Freizeitflasher
H@ilo
Freizeitflasher
springer#4
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

Themenautor/in

24.10.2006, 21:41

hab jetzt mal txt1 und txt2 draus gemacht...
hab aus "-" "R" gemacht und geht troztdem nicht:

die hauptpunkte werden englisch
die unterpunkte bleiben deutsch

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function writeMenu(xml:XML) {
   adminMenu.removeAll();
   var topLevel:Array = xml.firstChild.childNodes;
   trace("Hauptmenupunkte: " +topLevel.length)
   for(i=0;i<topLevel.length;i++){
      trace("------------------------------------Menu"+i)
      var txt1 = this._parent.returnLabel("IDS_NAV"+i);
      trace("Label: "+txt1)
      var subLevel:Array = topLevel[i].childNodes;
      var myMenu:mx.controls.Menu = adminMenu.addMenu(txt1);
      delete txt1;
      for(j=0;j<subLevel.length;j++){
         var txt2 = this._parent.returnLabel("IDS_NAV"+i+"R"+j);
         trace("subLabel: "+txt2)
         myMenu.addMenuItem({label:txt2, instanceName:"IDS_NAV"+i+"R"+j});
         delete txt2;
         }
   
      }
}


die menus lösch ich bei jedem aufruf mit
ActionScript:
1adminMenu.removeAll();


sind die untermenus irgendwo gecached?

hmmm.. ??
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
Geändert von springer am 24.10.06 um 21:49 Uhr
badskill#5
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

24.10.2006, 22:02

Irgendwie fehlt mir diese Zeile
ActionScript:
1var adminMenu:mx.controls.MenuBar;

Kannst du die Dateien bereitstellen?

springer#6
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

Themenautor/in

24.10.2006, 22:50

hat etwas gedauert, wurde noch aufgehalten.....


kann nur 70kb hochladen darum dieser weg:

code im frame 1:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import mx.controls.MenuBar;
import mx.lang.Locale;
System.useCodepage = true;
Locale.setFlaName("<index>");
Locale.setLoadCallback(localeListener);
langChoice.dataProvider = Locale.languageCodeArray.sort();
langChoice.addEventListener("change", langListener);
Locale.loadLanguageXML(langChoice.value);
function langListener(eventObj:Object):Void {
   Locale.loadLanguageXML(eventObj.target.value);
   admin_xml.trigger();
}
function localeListener(success:Boolean):Void {
   if (success) {
      trace("localeListener succes")

   } else {
      trace("localeListener no success")
   }
}
function returnLabel(ID:String){
   var newLabel = Locale.loadString(ID);
   //trace("IDS_"+ID+" : "+newLabel)
   return newLabel;
   }
var res = function (ev) {
   writeMenu(ev.target.results);
};
this.admin_xml.addEventListener("result", res);
this.admin_xml.URL = "menu.xml";
this.admin_xml.direction = "receive";

function writeMenu(xml:XML) {
   adminMenu.removeAll();
   var topLevel:Array = xml.firstChild.childNodes;
   trace("Hauptmenupunkte: " +topLevel.length)
   for(i=0;i<topLevel.length;i++){
      trace("------------------------------------Menu"+i)
      this._parent.greeting_txt.text = this.returnLabel("IDS_GREETING");
      var txt1 = this.returnLabel("IDS_NAV"+i);
      trace("Label: "+txt1)
      var subLevel:Array = topLevel[i].childNodes;
      var myMenu:mx.controls.Menu = adminMenu.addMenu(txt1);
      delete txt1;
      for(j=0;j<subLevel.length;j++){
         var txt2 = this.returnLabel("IDS_NAV"+i+"R"+j);
         trace("subLabel: "+txt2)
         myMenu.addMenuItem({label:txt2});
         delete txt2;
         }
   
      }
}
admin_xml.trigger();


neues fla machen:
menuBar auf bühne ziehen und instanznamen "adminMenu" geben
xmlConnector mit instanznamen "admin_xml"
comboBox mit instanznamen "langChoice"

in der stringtabelle die xml daten im anhang importieren für de und en...

im anhang die xmlfiles für die string-tabelle und das menu.....

dann alles in einen ordner packen

danke fürs testen.
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...

Angehängte Dateien:
Komprimierte Datei fh_menu.zip1.31 KB
Geändert von springer am 24.10.06 um 23:04 Uhr
badskill#7
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

24.10.2006, 23:02

Ich habe mir jetzt nur mal die xml-Dateien angeschaut. Mir ist aufgefallen, das in der de-xml das drin steht
PHP:
1
2
3
4
<?
source
-language="EN"
?>
Soll das so sein?

Ok, habs grad nachgelesen, ist richtig so.
Geändert von badskill am 24.10.06 um 23:14 Uhr
springer#8
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

Themenautor/in

24.10.2006, 23:14

hab ich auch gesehen, nur überschreibt flash die datei bei jedem test wieder und es steht immer "EN" drin.

glaub aber nicht dass es daran liegt, weil
PHP:
1
2
3
4
<?
xml
:lang="de"
?>
die sprache für das file definiert...

und die hauptpunkte stellts ja richtig dar....

grübel grübel...... :-(

lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
badskill#9
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

24.10.2006, 23:16

Bei mir passiert auch folgendes, wenn ich von en auf de zurück wechsle, steht überall undefined da. Ist das bei dir auch so?


Edit: Für mich ist heute erstmal Schluss, mache dann morgen weiter.
Geändert von badskill am 24.10.06 um 23:26 Uhr
springer#10
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

Themenautor/in

24.10.2006, 23:25

bei mir gehts... ???

bei "de" alles in deutsch

bei "en" hauptpunkte in englisch, unterpunkte in deutsch

lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
springer#11
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

Themenautor/in

25.10.2006, 00:01

wenn ich das

ActionScript:
1adminMenu.removeAll();


entferne, erstellt er die englische navigation korrekt, leider einfach erst hinter der deutschen....
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
Geändert von springer am 25.10.06 um 00:02 Uhr
springer#12
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

Themenautor/in

25.10.2006, 00:26

habs jetzt rausgefunden wies geht. warum weiss ich aber auch nicht.

mit dem removeAll() drin, anstelle von
ActionScript:
1adminMenu.addMenu(txt);
das hier und dann funnzzt es:

ActionScript:
1adminMenu.addMenuAt(i,txt);




danke für die hilfe...

gruss springer

es ist egal wenn du doof bist, du brauchst dir nur zu helfen wissen...
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
Geändert von springer am 25.10.06 um 07:52 Uhr

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2021 Sebastian Wichmann - Flashhilfe.de