Просмотр полной версии : XML. тег CDATA, загрузка изображений в текстовое поле
Возможно ли сделать подгрузку изображений в динамическое текстовое поле, с помощью XML, через тег CDATA, но в оболочку, в клип mcFoto_mc?
Например XML:
<m>
<k name="BLA"><![CDATA[<b>Пример текста и фотка загруженная обычным способом</b><img src='Обычная фотка'><b> А
теперь фотка, которая грузится в динамическое текстовое поле с помощью мувика, который имеет Linkage в библиотеке mcFoto_mc</b><img src='mcFoto_mc'>]]</k>
</m>
Суть вопроса, как передать "имя фотки" мувику mcFoto_mc, который с помощью вышеприведенного XML добавляется в текстовое
поле.
Пример вида:
<m>
<k name="BLA"><![CDATA[<b>Пример текста и фотка загруженная обычным способом</b><img src='Обычная фотка'><b> А
теперь фотка, которая грузится в динамическое текстовое поле с помощью мувика, который имеет Linkage в библиотеке
mcFoto_mc</b><img src='mcFoto_mc&Foto1.jpg'>]]</k>
</m>
Ессесно не срабатывает.
Можно конечно при загрузке XML сканировать текст на определнный тег, например <FT>, и замещать его тегом <img src='Значение в теге <FT>', но это во первых будет тормозить Флеху, а во вторых очень не удобно...и очень большая куча в третьих...
Мож, через setStyle, как нить можно?... Но вряд ли...
не проще так?
<m>
<item>
<text>blablabla</text>
<img>bla.jpg</img>
</item>
</m>
вообще ты помоему конкретно запутался сам, почитай про то как грузить картинки в HMTL.
такой вот выверт, может и сгодится:
в img прописываем alt с нужным параметром <img src='mcFoto_mc' alt='Foto1.jpg'>
флеш его игнорирует, но в htmlText сохраняет, а мы его читаем из самого mcFoto_mc:
var s=this._parent.htmlText;
var b=s.indexOf("ALT=\"")+5;
var e=s.indexOf("\"",b);
var pic=s.substring(b,e);
trace(pic)
не проще так?
<m>
<item>
<text>blablabla</text>
<img>bla.jpg</img>
</item>
</m>
вообще ты помоему конкретно запутался сам, почитай про то как грузить картинки в HMTL.
Ага , а потом ещё парсер писать во флеше, а с CDATA просто натолкал вместе с тегами и париться не надо, так что ничего не проще ...
парсер в 3 строчки блин... но составлять документы для обработки раза в 3 проще становиться и читать тоже. + экономия мегобайтов, сантиметров и деревьев.
парсер в 3 строчки блин... но составлять документы для обработки раза в 3 проще становиться и читать тоже. + экономия мегобайтов, сантиметров и деревьев.
А если тегов тьма и структура гораздо сложнее, то во первых парсер задолбенишся писать, во вторых нагрузка на проц, а в третьих о каких мегобайтах идёт речь ))) несчастные килобайты, которы в наше время уж никто не считает )))
а о чем собственно спор? CDATA все-равно flash'ем не поддерживается. Да даже если и поддреживал, все-равно нужно было бы писать парсер, чтоб эти данные выципить, записать в BitmapData, скажем, а потом нарисовать его на мувиклип.
Так что можно написать рекурентный обход XML-ника, и на каждый тип тега вызывать соответсвующий обработчик.
В любом случае нагрузка на проц будет, даже если б эта самая CDATA поддерживалась флешем, и был бы встроенный механизм, "понимающий" как это все в TextField вставлять - в любом случае XML будет парситься. Разница только в том, кто писал парсер - вы или разработчики флеша :)
2silin, спасибо за ценный совет.
2Usnul, тебе KUZEN уже объяснил, чем полезен и удобен тег CDATA. И это неоспоримо.
2silin, спасибо за ценный совет.
2Usnul, тебе KUZEN уже объяснил, чем полезен и удобен тег CDATA. И это неоспоримо.
Силин показал тебе пример парсера.
Кузен и я говорили о разных вещах.
"наздоровье, всегда рад помочь, сразу хочется бежать и отвечать на еще десяток вопросов когда слышишь такие приятные слова как 'спасибо'"
ЗЫ
топик превратился во флейм.
Nox Noctis
27.05.2006, 04:19
добрый вечер, буду краток. :)
var xml:XML = new XML("<a><![CDATA[<b>Пример текста и фотка загруженная обычным способом</b><img src='Обычная фотка'><b> А теперь фотка, которая грузится в динамическое текстовое поле с помощью мувика, который имеет Linkage в библиотеке mcFoto_mc</b><img id='test_mc' src='mcFoto_mc&Foto1.jpg'>]]></a>");
var html:XML = new XML(xml.firstChild.firstChild.nodeValue);
trace(html);
var imgNode:XMLNode = html["idMap"].test_mc;
trace(imgNode);
var imgData:Array = imgNode.attributes.src.split("&");
trace(imgData);
TF.htmlText = html;
trace(TF.test_mc);
фишка в том, что с одной стороны, если вы поставите в тег <img> атрибут id, то при парсинге этого дела в ХМЛ, вы получите ссылку на эту ноду внутри объекта idMap.
а с другой стороны, если вы присвоите строковое значение этой ноды свойству htmlText текстового поля, вы получите внутри текстового поля клип, который будет назван в соответствии с атрибутом id тега <img>.
дальше, я думаю, вы догадаетесь, что делать.
breez38 какую-то ересь говорит. :)
Usnul вредничает не по теме. :)
2Nox Noctis, спасибо. Я уже разобрался. На самом деле "выверт" подсказанный Silin'ом удобнее тем, что не нужно заботиться о ссылках на имена, мувики и т.п. Через substring, всё делается гораздо проще. Четыре строчки в самом Foto_mc, и всё. Клип Foto_mc, вызванный из библиотеки, сам ищет линк на фотку в тексте, и подгружает в себя же фотку. Всё отлично рулит без дополнительной обработки XML, каких либо других тегов и т.д.
Спасибо всем.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.