Форум 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)
-   -   bold и italic самопроизвольно задаются в true (http://www.flasher.ru/forum/showthread.php?t=112697)

Toros Kae 05.06.2008 15:18

bold и italic самопроизвольно задаются в true
 
У меня программа организорванна следующим образом.
Информация о формате текста находиться в xml узле (там все сделанно по главам, для каждой главы может быть свое форматирование)
Код:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><doc><chapters><chapter name="Глава 1" id="1"><text profile="" leading="2" color2="16513770" color="15686748" italic="false" bold="false" size="20" font="Corbel"> ляляля</text></chapter></doc></chapters>
Далее идет специальная процедура при загрузке этих глав ,считывается инфа по форматированию и применяется к текстовому окну.
Код:

function profile_check():Void {
//задание формата
function make_format(format_source:XMLNode) {
my_fmt = chapter_text.getTextFormat();
my_fmt.font = format_source.attributes["font"];
my_fmt.size = format_source.attributes["size"];
my_fmt.bold = format_source.attributes["bold"];
my_fmt.italic = format_source.attributes["italic"];
my_fmt.color = format_source.attributes["color"];
my_fmt.leading = format_source.attributes["leading"];
chapter_text.setNewTextFormat(my_fmt);
chapter_text.setTextFormat(my_fmt);
chapter_text.backgroundColor=format_source.attributes["color2"];
}
//если текст не использует профиль
if(xml_book.firstChild.firstChild.childNodes[_global.chapter_num].firstChild.attributes["profile"] ==""){
var ch_node:XMLNode=xml_book.firstChild.firstChild.childNodes[_global.chapter_num].firstChild;
make_format(ch_node);
//тект использует профиль
} else iа (xml_book.firstChild.firstChild.childNodes[_global.chapter_num].firstChild.attributes["profile"] != "") {
profile_name = xml_book.firstChild.firstChild.childNodes[_global.chapter_num].firstChild.attributes["profile"];
//По имени профиля собираются его параметры из списка
var ch_nodes:Array = xml_book.firstChild.childNodes[1].childNodes;
for (var current_id:Number = 0; current_id<ch_nodes.length; current_id++) {
if (profile_name == ch_nodes[current_id].attributes["name"]) {
make_format(ch_nodes[current_id]);
break;
}
}
}
}

Проверяю. Bold и Italic неизменно становяться в true и не важно, что указанно в узле. переменная в узле точно false, делал и через перемнные boolean. жирный и италик становяться false только если прямо указать. и никак иначе.
Причем если сделать так
Код:

var var_bold =! format_source.attributes["bold"];
становится false.
пробовал через условия
Код:

var var_bold = format_source.attributes["bold"];
if (var_bold == false) {
my_fmt.bold = false;
} else if (var_bold == true) {
my_fmt.bold = true;
}

В этом случае, не проходит условие почему-то.
Я ничего не понимаю.Бьюсь который день, и не понимаю логику. остальной код проверял многократно, нигде не указано, что bold=true и все в этом роде.

silin 05.06.2008 15:32

в атрибуте приходит строка и сравнивать надо не с false, а с "false"

Toros Kae 05.06.2008 16:05

Да-да. Точно. Как раз проверил ,работает. Но вообще ситуация странная..с условиями только и получается. А почему не хочет принимать значение узла.непонятно.
А есть какая нить функция преобразования в boolean строки?

silin 05.06.2008 16:22

родной нет, я такую в этих случаях пользую
Код:

function strToBool(str:String):Boolean
{
        return str.toLowerCase() == "true";
}

т.е. true будет только если атрибут задан как "true" или "TRUE"
во все остальных случаях, в том числе и если атрибута нет, будет false - для bold и т.п. в самый раз


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

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