Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Сравнение булеан переменной с хмл атрибутом (http://www.flasher.ru/forum/showthread.php?t=175441)

lovik 17.02.2012 00:20

Сравнение булеан переменной с хмл атрибутом
 
Доброго дня суток !
Столкнулся с такой проблемой.
Есть хмл файл в нем лежит свойство булеан.
Не могу сделать сравнение из хмл файла с условием, пытаюсь вот так
Код AS3:

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

Код AS3:

if (xmlList.@active.toLowerCase() == 'true')


iNils 17.02.2012 00:34

Забыли индекс в xmlList указать
Код AS3:

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);
        }
}

Хотя правильнее писать
Код AS3:

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

Так как все значения в xml строки.

lovik 17.02.2012 01:08

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

Wolsh 17.02.2012 01:10

Код AS3:

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>
Код AS3:

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

Ну как бы :

Код AS3:

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, и писанины вам поубавит, и логично. А то, что вы придумали сломается при первой же опечатке, по забывчивости, напутаете с регистром и т.д.


Часовой пояс GMT +4, время: 05:07.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.