Просмотр полной версии : Реализация огромного текста во flash
Всем здравствуйте! :)
Такая проблема: в общем, у меня огромный текст. 14 страниц. Надо впихнуть на одну страницу. Причем во флэш страницу.
Полазила по форуму, почитала...
Делала и так, и эдак, и пришла к выводам:
1. Бессмысленно во флеш его пытаться впихнуть.
2. Можно как-то подгрузить html, но как я не поняла. Писала это:
on (release) {
getURL("1f/001.htm","c", "POST");
}
3. Можно как-то подгрузить из txt, но мне не подходит, т.к. много разнообразного выделения.
4. Можно как-то с помощью LoadVars, но что писать и где осталось загадкой.
Буду рада любым идеям.
P.S. Превратить текст в "картинку" я не могу. Текст нужно иногда менять.
Я не уверен, существует ли у 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>
wvxvw, мне не понятно куда это писать. В пространство помещаемого текста или action?
Вот здесь (http://transmatika.ru/sub/soc.rar) исходник. Каким образом можно сделать, чтобы в половине где сейчас описание социального тела был при нажатии текст?
Теоретически.
Или так нельзя реализовать?
alexcon314
15.12.2007, 09:56
>>ХМЛ для примера
так должен выглядеть подгружаемый файл. имя файла д.б. text.xml, лежать он должен в той же папке, что и ваш свф. чтобы приведенный код его подгружал. путь к файлу можно настроить. кодировка текста в файле должна быть UTF-8.
между <![CDATA[ ... ]]> нужно вписать ваш текст с хтмл-форматированием. учтите, что хтмл-теги поддерживаются не все, например не поддерживается тег <table>.
ваш минимально переделанный исходник приложен. такой стиль программирования
как ваш, может сильно усложнить работу над проектом.
...
еще. многостраничный текст можно, как вариант, подгружать по-странично, оформив каждую страницу в отдельный файл.
alexcon314,wvxvw, ура! Спасибо большое! Я просто счастлива. :yahoo:
Правда, почему-то возникла проблема. Во флеше все работает. Я и текст нужный поставила и проч., но стоит попытаться открыть из хтмл файла, то ничего не выходит. Не открывается.
многостраничный текст можно, как вариант, подгружать по-странично, оформив каждую страницу в отдельный файл.
Мне кажется, это слегка накладно..?
Beta-tester
16.12.2007, 18:34
alexcon314
Будь добр, сохрани пожалуйста под 7-ку
Тоже пригодиться.
Всем, всем, всем, кто с этим мучился и искал ответ.
Я нашла его!
Если данные находятся в том же домене, где расположен Flash-ролик, то имя домена можно заменить на символ /.
Пример
Если ролик расположен в домене www.anydomain.com, то абсолютную адресацию
my_xml.load("http://www.anydomain.com/xmlfiles/data.xml")
можно заменить на
my_xml.load("/xmlfiles/data.xml")
P.S. Да, я чайник. :yahoo:
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.