У меня есть кусок кода, который анализирует xml на переменные. По одной из переменных не будет больше 12, но может быть меньше. Я пытаюсь определить каждую из этих переменных несколько раз в секунду. Однако мне нужны только их определения, если они имеют переменную, потому что прямо сейчас, если имеется менее 12 переменных, программа вылетает из строя. Сейчас этот код ниже работает, но только в том случае, если в моем документе xml присутствует 12 значений. Как я могу повторить этот код, поэтому у меня нет списка операторов «if! = Null»?Haxe Итерация определяющих переменных
var _vol1 = (ipts[0].volume);
var _vol2 = (ipts[1].volume);
....
....
var _vol12 = (ipts[11].volume);
Этот код работает при 12 значений в моем XML-документ, но падает, если есть меньше, чем 12, который иногда может быть.
Как структурировать код для определения/переопределения переменной только в том случае, если есть значение и не равно null? Это то, что нужно повторить?
If ((ipts[0].volume) != null){
var _vol1 = (ipts[0].volume);
}
Я исследовал сайт Haxe, но не был уверен, где это применимо. Мой синтаксис и программирование не самые большие. Спасибо за помощь. Извините, если это плохой вопрос.
UPDATE: Вот мой полный код на данный момент. Он не откажет, но его не определяет переменный объем больше теперь, когда я добавил, если заявления
var xml = Xml.parse(_vMixData);
// wrap the xml for fast access
var data = new haxe.xml.Fast(xml.firstElement());
//Getting the data from inputs (here we are getting the xml node 'inputs', which contain two 'input' nodes, as per your sample xml file.
var inputs = data.node.inputs;
var ipts = new Array<VInput>();
for (input in inputs.nodes.input) {
var ipt = new VInput();
if (input.has.state) {
ipt.state = input.att.state;
ipt.value = input.innerHTML;
}
if (input.has.volume) {
ipt.volume = Std.parseInt(input.att.volume);
}
if (input.has.muted) {
ipt.muted = Std.string(input.att.muted);
}
ipt.value = input.innerHTML;
ipts.push(ipt);
}
var overlays = data.node.overlays;
var ovlys = new Array<VOverlay>();
for (overlay in overlays.nodes.overlay) {
var ovly = new VOverlay();
if (overlay.has.number) {
ovly.number = Std.parseInt(overlay.att.number);
}
ovly.value = overlay.innerHTML;
ovlys.push(ovly);
}
//Defines variables based on returned information from vMix
var _fadeToBlack:Bool = data.node.fadeToBlack.innerHTML == "True" ? true : false;
var _version = data.node.version.innerHTML;
var _record:Bool = data.node.recording.innerHTML == "True" ? true : false;
var _external:Bool = data.node.external.innerHTML == "True" ? true : false;
var _stream:Bool = data.node.streaming.innerHTML == "True" ? true : false;
var _active:Int = Std.parseInt(data.node.active.innerHTML);
var _preview:Int = Std.parseInt(data.node.preview.innerHTML);
var _overlay1 = (ovlys[0].value);
var _overlay2 = (ovlys[1].value);
var _overlay3 = (ovlys[2].value);
var _overlay4 = (ovlys[3].value);
var _input1state = (ipts[0].state);
if (ipts[0].volume != null){
var _vol1 = (ipts[0].volume);
}
if (ipts[1].volume != null){
var _vol2 = (ipts[1].volume);
}
if (ipts[2].volume != null){
var _vol3 = (ipts[2].volume);
}
if (ipts[3].volume != null){
var _vol4 = (ipts[3].volume);
}
if (ipts[4].volume != null){
var _vol5 = (ipts[4].volume);
}
if (ipts[5].volume != null){
var _vol6 = (ipts[5].volume);
}
if (ipts[6].volume != null){
var _vol7 = (ipts[6].volume);
}
if (ipts[7].volume != null){
var _vol8 = (ipts[7].volume);
}
if (ipts[8].volume != null){
var _vol9 = (ipts[8].volume);
}
if (ipts[9].volume != null){
var _vol10 = (ipts[9].volume);
}
if (ipts[10].volume != null){
var _vol11 = (ipts[10].volume);
}
if (ipts[11].volume != null){
var _vol12 = (ipts[11].volume);
}
//var _1mute = (ipts[0].muted);
//var _2mute = (ipts[1].muted);
//var _3mute = (ipts[2].muted);
//var _4mute = (ipts[3].muted);
//var _5mute = (ipts[4].muted);
//var _6mute = (ipts[5].muted);
//var _7mute = (ipts[6].muted);
//var _8mute = (ipts[7].muted);
//var _9mute = (ipts[8].muted);
//var _10mute = (ipts[9].muted);
//var _11mute = (ipts[10].muted);
//var _12mute = (ipts[11].muted);
if (ipts[2] != null){
var _ovly3 = 1;
}
//trace(ovlys[2].value);
//trace(ovlys[0].value);
//trace(ipts[0].state);
//trace(_active);
//trace(_preview);
//trace(_fadeToBlack);
Вот полный код, который у меня есть сейчас. Я определил их в этой нормальной структуре, но я связываю их с другой глобальной переменной, поэтому мне нужно переопределить их как переменную, которая попадает в другую программу. –
Не совсем уверен, что вы имеете в виду, но вы не можете вставить их все в массив и передать массив другой программе? – MSGhero
Я компилирую этот код в программе под названием Stencyl. У него есть блоки для кода Haxe, встроенного в его интерфейс. –