Hallo,
Ich arbeite derzeit in der GUI von babylon.js und versuche ein Menüelement dynamisch zu befüllen. Der Code zu diesem GUI-Objekt sieht zunächst folgendermaßen aus.
Das funktioniert auch soweit. Nun will ich allerdings die Werte aus einen Array rausholen und mir die Einträge ins Menü schreiben lassen. (Arraygröße ändert sich!)
Hier bekomme ich nur den ersten und den letzten Menüpunkt.
Ich dachte nun daran, einen string in ein Objekt zu konvertieren, da ich den String einfacher befüllt bekomme. Allerdings will auch das nicht klappen. Hier der erste Testaufbau:
Hat jemand einen Tip für mich?
Ich arbeite derzeit in der GUI von babylon.js und versuche ein Menüelement dynamisch zu befüllen. Der Code zu diesem GUI-Objekt sieht zunächst folgendermaßen aus.
PHP-Code:
var createMenu = [{
text: 'Sponsor A',
value: 1,
selected: false
}, {
text: 'Sponsor B',
value: 2,
selected: false
}, {
text: 'none',
value: 0,
selected: true
}, ];
var select = BABYLON.GUI.CreateSelect(
createMenu, {
label: 'Select :',
labelWidth: 70,
itemWidth: 140,
itemHeight: 32,
fontSize: 16,
thickness: 1,
colors: {
background: '#222',
text: 'white',
border: '#448D00',
highlight: '#444'
},
buttonText: '...',
onChange: [ () => {
//alert( select.value )
setSponsor = select.value;
body_placeAd_AirDuct( setSponsor )
} ]
}
);
select.verticalAlignment = BABYLON.GUI.Control.VERTICAL_ALIGNMENT_TOP;
select.isVertical = false;
select.horizontalAlignment = BABYLON.GUI.Control.HORIZONTAL_ALIGNMENT_LEFT;
//alert(decalPathH640[setSponsor][1])
ui.addControl( select );
PHP-Code:
var decalPathH640 = [];
decalPathH640[ 0 ] = [ "none", "../../images/game/advertising/ads_free_spot.gif" ];
decalPathH640[ 1 ] = [ "Marlboro", "../../images/game/advertising/marlboro.gif" ];
decalPathH640[ 2 ] = [ "Samsung", "../../images/game/advertising/samsung.gif" ];
//Create Dropdownmenu to choose Sponsors.
var createMenu;
var entry = "";
var createMenuEntries = [];
var arrayLength = decalPathH640.length;
for (var i=0; i<arrayLength; i++) {
createMenuEntries[ i ] = {
text: decalPathH640[ i ][ 0 ],
value: i,
selected: false
}
if(entry == ""){
entry = createMenuEntries[ i ];
}else if(entry != "" && i != arrayLength-1){
entry = entry, createMenuEntries[ i ], + " ";
//alert("wird aufgerufen");
}
if(i == arrayLength-1){
createMenu = [entry, createMenuEntries[ i ]];
}
}
//Babylon GUI.
var select = BABYLON.GUI.CreateSelect(
createMenu, {
label: 'Select :',
labelWidth: 70,
itemWidth: 140,
.................
.................
Ich dachte nun daran, einen string in ein Objekt zu konvertieren, da ich den String einfacher befüllt bekomme. Allerdings will auch das nicht klappen. Hier der erste Testaufbau:
PHP-Code:
var createMenu = "[{text: 'Sponsor A', value: 1, selected: false}, {text: 'Sponsor B', value: 2, selected: falsetext: 'none' ,value: 0, selected: true}, ]";
//var createMenu = "[{text: 'Sponsor A', value: 1, selected: false}]";
var createMenuObj = JSON.parse(createMenu);
//Babylon GUI.
var select = BABYLON.GUI.CreateSelect(
createMenuObj, {
label: 'Select :',
labelWidth: 70,
itemWidth: 140,
.................
.................
Kommentar