PDA

Просмотр полной версии : Сравнение булеан переменной с хмл атрибутом


lovik
17.02.2012, 00:20
Доброго дня суток !
Столкнулся с такой проблемой.
Есть хмл файл в нем лежит свойство булеан.
Не могу сделать сравнение из хмл файла с условием, пытаюсь вот так
public function xmlLodet(e:Event):void
{
activPageXML= new XML(urlLoder.data);
xmlList = activPageXML.page;
for (var i:Number =0; i < xmlList.length() ; i++)
{
//trace(xmlList[i].@active);
//trace(xmlList.@id);
if ( xmlList.(@active == true))
{
trace("рабоатаю нашол");
}
}

}
хмл строка для сравнения <page id="1" active="false"></page>
проблема в том что проверку проходить все равно тру или фолс
Надо прочесть хмл или проверить на каком элементе стоит тру

Inet_PC
17.02.2012, 00:24
if (xmlList.@active.toLowerCase() == 'true')

iNils
17.02.2012, 00:34
Забыли индекс в xmlList указать
var activPageXML:XML = <data>
<page id="1" active="false"></page>
<page id="2" active="true"></page>
</data>;
var xmlList:XMLList = activPageXML.page;
for (var i:Number = 0; i < xmlList.length(); i++) {
if (xmlList[i].@active == true) {
trace (xmlList[i].@id);
}
}

Хотя правильнее писать
if (xmlList[i].@active == 'true') {
Так как все значения в xml строки.

lovik
17.02.2012, 01:08
спс огромное блнин я в as Дуб Дубом
теперь как бы устроить проверку, если тру, тогда эта кнопка на которой тру должна перейти на второй кадр

Wolsh
17.02.2012, 01:10
var activPageXML:XML =
<data>
<page id="1" active="false"></page>
<page id="2" active="true"></page>
<page id="3" active="false"></page>
<page id="4" active="true"></page>
<page id="5" active="false"></page>
<page id="6" active="true"></page>
</data>;
var xmlList:XMLList = activPageXML.page.(@active=="true");
for each (var i:XML in xmlList)
{
trace (i.@id);
}

Добавлено через 4 минуты
Ну если кнопки создавали по этой ХMLке, надо было их в массив например сложить по айдишникам. Определили id той что тру, получили ссылку из массива по индексу-айдишнику и перевели ее на второй кадр.

lovik
17.02.2012, 01:18
что то у меня не получается с кейсом
пример хмл <page id="btn_6" active="false"></page>
public function xmlLodet(e:Event):void
{
activPageXML= new XML(urlLoder.data);
xmlList = activPageXML.page;
for (var i:Number =0; i < xmlList.length() ; i++)
{

if ( xmlList[i].@active == true)
{

switch(xmlList[i].@id)
{
case "btn_1" :
menu_bar.btn_mc1.gotoAndStop("out");
trace(xmlList[i].@id);
break;
case "btn_2" :
menu_bar.btn_mc2.gotoAndStop("out");
trace(xmlList[i].@id);
break;
case "btn_3" :
menu_bar.btn_mc3.gotoAndStop("out");
trace(xmlList[i].@id);
break;
case "btn_4" :
menu_bar.btn_mc4.gotoAndStop("out");
trace(xmlList[i].@id);
break;
case "btn_5" :
menu_bar.btn_mc5.gotoAndStop("out");
trace(xmlList[i].@id);
break;
case "btn_6" :
menu_bar.btn_mc6.gotoAndStop("out");
trace(xmlList[i].@id);
break;
}

}
}
почему он получает ид но не сверяет его с кейсами ?
что то кода много и что то он бестолковый (
Может я и запихнул бы их в массив но на них куча ручной анимации, если честно больше половины инфы которую выкладывают в посте не понимаю, но общими усилиями у меня идет некий прогресс в знаниях ас и навыках программирование.
Всем за это огромное спасибо!

ChuwY
17.02.2012, 14:19
Ну как бы :

public class Test extends Sprite {
public var activPageXML:XML =
<data>
<page id="btn_1" active="false"></page>
<page id="btn_2" active="true"></page>
<page id="btn_3" active="false"></page>
<page id="btn_4" active="true"></page>
<page id="btn_5" active="false"></page>
<page id="btn_6" active="true"></page>
</data>;
public var xmlList:XMLList = activPageXML.page;//.(@active=="true");
public function Test() {
xmlLodet();
}

public function xmlLodet():void{
for (var i:Number =0; i < xmlList.length() ; i++){
if (xmlList[i].@active == "true"){
trace("xmlList[i].@id = " + xmlList[i].@id);
menu_bar[xmlList[i].@id].gotoAndStop("out")
}
}
}
}
}

Работает.
И я чуть-чуть подрезал ваш кейс.

wvxvw
18.02.2012, 02:13
Нет никакого смысла заводить переменные "true" и "false" - в AS3 в смысле Boolean не бывает неопределенности, а вы попытались ее искусственно создать, и, естественно, поплатитесь за это когда-нибудь :)
Лучше думайте об этом так: любое не пустое значение - это true, и писанины вам поубавит, и логично. А то, что вы придумали сломается при первой же опечатке, по забывчивости, напутаете с регистром и т.д.