Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   оптимизация 2 (http://www.flasher.ru/forum/showthread.php?t=71390)

tandem 03.11.2005 21:27

оптимизация 2
 
а как вот такую штуку оптимизировать:
Код:

pdata = new XML();
pdata.load("list.xml");
list = new Array;
function myOnLoad (){
        list = pdata.firstChild.nextSibling.childNodes;
        p1=list [1].firstChild.nodeValue;
        p2=list [3].firstChild.nodeValue;
        p3=list [5].firstChild.nodeValue;
        p4=list [7].firstChild.nodeValue;
        p5=list [9].firstChild.nodeValue;
        p6=list [11].firstChild.nodeValue;
        p7=list [13].firstChild.nodeValue;
        p8=list [15].firstChild.nodeValue;
        p9=list [17].firstChild.nodeValue;
        p10=list [19].firstChild.nodeValue;
}
playdata.onLoad = myOnLoad;

пробовал в цикл загнать - не работает. :-(

user356 03.11.2005 21:43

А это специально, что в одном месте написано pdata, а в другом - playdata?

kpa.person 03.11.2005 21:47

Если надо удобно и красиво используй библиотеку XPath. Очень рульная штука. (http://www.xfactorstudio.com/ActionScript/AS2/XPath/)
А если просто в конкретном примере сделать побыстрее, то цикл.
И если я правильно понял тебе нужны переменные в области xml object;
Код:

pdata = new XML();
scope = this;
pdata.load("list.xml");
list = new Array;
function myOnLoad (){
        list = pdata.firstChild.nextSibling.childNodes;
            max = list.length;// или max = 20; (первые 19 значений)
        for(var i=1; i<max; ++i){
                scope["p"+i] = list[i].firstChild.nodeValue;
            }

Не очень хорошо, что не используются указатели на область видимости переменных типа "var" или scope.
И такая жесткая техника не всегда приемлема, вдруг придется немного изменить xml и нужно будет переписывать парсер.
Складывать на мой взгляд лучше в массив, чем в нумерованые переменные: arr[i] = ...

7thsky™ 03.11.2005 22:50

Код:

var xml:XML = new XML ();
xml.ignoreWhite = true;
xml.load ('test.xml');
xml.onLoad = onLoaded;

function onLoaded (flag:Boolean):Void {
        if (flag) {
                for (var o:XMLNode = xml.firstChild, i:Number = 0; o != null; o = o.nextSibling, i++) {
                        this ['p' + i] = o.firstChild.nodeValue;
                } // end for
        } // end if
}


tandem 04.11.2005 01:39

Цитата:

Сообщение от kpa.person
Если надо удобно и красиво используй библиотеку XPath. Очень рульная штука. (http://www.xfactorstudio.com/ActionScript/AS2/XPath/)
А если просто в конкретном примере сделать побыстрее, то цикл.
И если я правильно понял тебе нужны переменные в области xml object;
Код:

pdata = new XML();
scope = this;
pdata.load("list.xml");
list = new Array;
function myOnLoad (){
        list = pdata.firstChild.nextSibling.childNodes;
            max = list.length;// или max = 20; (первые 19 значений)
        for(var i=1; i<max; ++i){
                scope["p"+i] = list[i].firstChild.nodeValue;
            }

Не очень хорошо, что не используются указатели на область видимости переменных типа "var" или scope.
И такая жесткая техника не всегда приемлема, вдруг придется немного изменить xml и нужно будет переписывать парсер.
Складывать на мой взгляд лучше в массив, чем в нумерованые переменные: arr[i] = ...

догда другой вопрос:
flash берёт переменные из ХМЛ, но как сделать так чтобы, если я в данный момент заменил этот ХМЛ, то и у пользователя смотревшего в данный момент flashку он тоже "перезагрузился".
Пытался сделать перезагрузку в определённое время, но он похоже грузит из кэша - как-то это мона сделать чтобы грузил заного?


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

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