Форум 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)
-   -   область видимости в функции onLoad (http://www.flasher.ru/forum/showthread.php?t=95201)

romulko 30.04.2007 00:36

область видимости в функции onLoad
 
Добрый вечер, друзья.
Пожалуйста, помогите советом, что не так.
Суть - создаю календарь событий. Там будут 31 мувик (в зависимости от месяца – это будут мувики с текстом в середине, который обозначает номер дня) и 4 текстовых поля. Выгрузка текста из xml-дерева в текстовые поля при нажатии кнопки, обозначающая день месяца уже сделал.

Теперь надо сделать так, чтобы кнопка изменяла цвет номера дня в текстовом поле, если в атрибуте дескриптора xml будет соответственное значение – none, medium, hight.

То есть, логика такая – например, если 21 числа намечается важное событие, пользователем заносится в атрибут значение hight, и, во флешке автоматически на копке, обозначающая 21 число текст меняет цвет на красный. Если событие средней важности, заносится значение medium, и кнопка принимает тускло-красный цвет. Если ничего нема, то просто ставится none, и текст имеет стандартную окраску.

Проблема вот в чем – на мувике кнопки пишу инструкцию switch

Код:

onClipEvent (load) {
        switch (_parent.rootNodes[1].attributes.importance) {
        case "none" :
                trace("lol");
        case "medium" :
                trace("lol");
        case "hight" :
                trace("lol");
        }
}


Не работает потому, что не видит переменной rootNodes, которая, в свою очередь объявляется при загрузке xml –

Код:

var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = function() {
        rootNodes = this.firstChild.childNodes;
};
xml.load("calendar.xml");


Пожалуйста, скажите, в чем ошибка?
Спасибо, что дочитали до конца….:)
Никак не получается написать краткое изложение проблемы… :quiet:

Kikasso 30.04.2007 00:43

а слабо на xml.onLoad switch поставить?

romulko 30.04.2007 00:49

Не понимаю логику реализации этой инструкции к каждой из 31 кнопок...

Kikasso, пожалуйста, напишите пару строк кода, чтобы я понял, что вы имеете в виду.

Kikasso 30.04.2007 00:54

кто у вас раньше появляется - копки или xml? Я, похоже, недопонял.
Похоже что rootNodes объявляется внутри xml.
Если _parent это то что нужно, попробуйте так:
Код:

var rootNodes:Array;
var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = function() {
        rootNodes = this.firstChild.childNodes;
};
xml.load("calendar.xml");

И не сажайте код на мувик кнопки, это тоже источник глюка.

romulko 30.04.2007 01:01

Что значит свежий взгляд понимающего человека!

Спасибо, Kikasso, все заработало. :drinks:
Модернизировал код и все летает -

Код:

xml.onLoad = function(succes:Boolean) {
        if (succes) {
                _root.rootNodes = this.firstChild.childNodes;
                gotoAndStop(2);
        } else {
                trace("fuck load xml");
        }
};


Kikasso 30.04.2007 01:05

только лучше
Код:

if ( succes && this.status == 0 ) { ... }
Проверка на валидность не помешает. И success, а то засмеют ))

etc 30.04.2007 01:13

Только не «succes», а «success». Учите английский.

this.create 30.04.2007 01:22

Цитата:

Сообщение от Kikasso
только лучше
Код:

if ( succes && this.status == 0 ) { ... }
Проверка на валидность не помешает. И success, а то засмеют ))

Код:

if (success && !this.status) {...}
Преобразование в булев тип:
number - false если 0 или NaN, true во всех остальных случаях. Status только при корректном разборе 0, в остальных случаях не ноль( все ошибки отрицательные числа).

romulko 30.04.2007 01:39

Цитата:

Проверка на валидность не помешает. И success, а то засмеют ))
Уже засмеяли....

Цитата:

Только не «succes», а «success». Учите английский.
Слушаю и повинуюсь, мой учитель :umnik2: .

У меня сейчас 2 часа ночи. Мне только надо было, чтобы код работал.
Хотел вообще вставить имя переменной, похожую на текст в инструкции else....

Всем спокойной ночи :bye:

:boredom:

Kikasso 30.04.2007 03:18

Цитата:

Сообщение от this.create
Преобразование в булев тип

Это не преобразование. Преобразование - вот:
Код:

if ( (Boolean( this.status ).toString().length == 5 ) ? true : false  ) trace ( "status ok" );
Проверять стоит, потому что некоторые серваки выдают кастомный error404 - success покажет true.


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

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