Форум 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)
-   -   Реализация огромного текста во flash (http://www.flasher.ru/forum/showthread.php?t=105413)

Opinio 15.12.2007 02:46

Реализация огромного текста во flash
 
Всем здравствуйте! :)
Такая проблема: в общем, у меня огромный текст. 14 страниц. Надо впихнуть на одну страницу. Причем во флэш страницу.
Полазила по форуму, почитала...
Делала и так, и эдак, и пришла к выводам:
1. Бессмысленно во флеш его пытаться впихнуть.
2. Можно как-то подгрузить html, но как я не поняла. Писала это:
Код:

on (release) {
        getURL("1f/001.htm","c", "POST");
}

3. Можно как-то подгрузить из txt, но мне не подходит, т.к. много разнообразного выделения.
4. Можно как-то с помощью LoadVars, но что писать и где осталось загадкой.
Буду рада любым идеям.
P.S. Превратить текст в "картинку" я не могу. Текст нужно иногда менять.

wvxvw 15.12.2007 03:44

Я не уверен, существует ли у LoadVars ограничение на длину передаваемой строки, но, чтобы не эксперементировать - грузил бы как XML с использованием CData.
Код:

var _xml:XML = new XML();
_xml.ignoreWhite = true;
var url_str:String = "text.xml";
var _txt:TextField = _root.createTextField("_txt", 0, 0, 0, Stage.width, Stage.height);
_txt.condenseWhite = true;
_txt.html = true;
_txt.wordWrap = true;
_txt.multiline = true;
_xml.onLoad = function(ok:Boolean):Boolean  {
        if (ok) {
                if (this.status != 0) {
                        var errorMessage:String = "";
                        switch (this.status) {
                                case 0 :
                                        errorMessage = "No error; parse was completed successfully.";
                                        break;
                                case -2 :
                                        errorMessage = "A CDATA section was not properly terminated.";
                                        break;
                                case -3 :
                                        errorMessage = "The XML declaration was not properly terminated.";
                                        break;
                                case -4 :
                                        errorMessage = "The DOCTYPE declaration was not properly terminated.";
                                        break;
                                case -5 :
                                        errorMessage = "A comment was not properly terminated.";
                                        break;
                                case -6 :
                                        errorMessage = "An XML element was malformed.";
                                        break;
                                case -7 :
                                        errorMessage = "Out of memory.";
                                        break;
                                case -8 :
                                        errorMessage = "An attribute value was not properly terminated.";
                                        break;
                                case -9 :
                                        errorMessage = "A start-tag was not matched with an end-tag.";
                                        break;
                                case -10 :
                                        errorMessage = "An end-tag was encountered without a matching start-tag.";
                                        break;
                                default :
                                        errorMessage = "An unknown error has occurred.";
                                        break;
                        }
                        throw new Error("Error parsing XML, status: "+this.status+" ("+errorMessage+")");
                }
                afterOnLoad(this);
                return true;
        } else {
                throw new Error("There was the problem loading XML from: "+url_str);
                return false;
        }
};
function afterOnLoad(xml:XML):Void {
        _txt.htmlText = xml.childNodes[0].childNodes[0].nodeValue;
}
_xml.load(url_str);

ХМЛ для примера:
Код:

<MyLongText>
        <![CDATA[
        <p><font size='20' face='_sans'>Here goes my preformated <font color='#008888'><b>HTML</b></font> text</font></p>
        ]]>
</MyLongText>


Opinio 15.12.2007 08:52

wvxvw, мне не понятно куда это писать. В пространство помещаемого текста или action?
Вот здесь (http://transmatika.ru/sub/soc.rar) исходник. Каким образом можно сделать, чтобы в половине где сейчас описание социального тела был при нажатии текст?
Теоретически.
Или так нельзя реализовать?

alexcon314 15.12.2007 09:56

Вложений: 1
>>ХМЛ для примера
так должен выглядеть подгружаемый файл. имя файла д.б. text.xml, лежать он должен в той же папке, что и ваш свф. чтобы приведенный код его подгружал. путь к файлу можно настроить. кодировка текста в файле должна быть UTF-8.
между <![CDATA[ ... ]]> нужно вписать ваш текст с хтмл-форматированием. учтите, что хтмл-теги поддерживаются не все, например не поддерживается тег <table>.
ваш минимально переделанный исходник приложен. такой стиль программирования
как ваш, может сильно усложнить работу над проектом.
...
еще. многостраничный текст можно, как вариант, подгружать по-странично, оформив каждую страницу в отдельный файл.

Opinio 16.12.2007 02:49

alexcon314,wvxvw, ура! Спасибо большое! Я просто счастлива. :yahoo:
Правда, почему-то возникла проблема. Во флеше все работает. Я и текст нужный поставила и проч., но стоит попытаться открыть из хтмл файла, то ничего не выходит. Не открывается.

Цитата:

многостраничный текст можно, как вариант, подгружать по-странично, оформив каждую страницу в отдельный файл.
Мне кажется, это слегка накладно..?

Beta-tester 16.12.2007 18:34

alexcon314
Будь добр, сохрани пожалуйста под 7-ку
Тоже пригодиться.

Opinio 17.12.2007 12:27

Всем, всем, всем, кто с этим мучился и искал ответ.
Я нашла его!
Цитата:

Если данные находятся в том же домене, где расположен Flash-ролик, то имя домена можно заменить на символ /.
Пример
Если ролик расположен в домене www.anydomain.com, то абсолютную адресацию
my_xml.load("http://www.anydomain.com/xmlfiles/data.xml")
можно заменить на
my_xml.load("/xmlfiles/data.xml")
P.S. Да, я чайник. :yahoo:


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

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