PDA

Просмотр полной версии : Из текста - кнопку


l2net
05.12.2008, 20:00
Подскажите пожалуйста как текстовое поле можно обратить в кнопку
с урл заданным в одном из детёенышей этого текста

код:
var newsXML:XML = new XML();
newsXML.ignoreWhite = true;
var output:String = "";

newsXML.onLoad = function(success) {
if (success) {
var news:Array = newsXML.firstChild.childNodes;
for(i=0;i<news.length;i++) {
output += "<b>";
output += news[i].childNodes[0].firstChild.nodeValue;
output += "</b> - <i>";
output += news[i].childNodes[1].firstChild.nodeValue;
output += "</i>\n";
output += news[i].childNodes[2].firstChild.nodeValue;
output += "\n\n";
}
news_txt.htmlText = output;

}
else
{
news_txt.text = "XML file did not load.";
}
}

newsXML.load("news4.xml");

сейчас сама ссылка береться от сюда
news[i].childNodes[2].firstChild.nodeValue;

в итоге должно получится кнопка с текстом состоящим из первых двух переменных и переходм при нажатии по адресу из третей переменной

заранее спасибо

urasfinks
05.12.2008, 21:22
Ты создавай програмно муви клип(createMovieClip) и уже в этом клипе создавай текстовое поле(createTextField). Потом к клипу привязывай свойства onRelease, onPress...и подобные. Не понимаю в чём проблема...Ах да если у тебя много будет кнопок используй Eval() что бы взять ссылку на клип.

Kuruki
05.12.2008, 21:49
news_txt.htmlText = '<a href="'+переменная3+'">'+перем1+перем2+'</a>';

l2net
06.12.2008, 14:27
так как кнопок планирутся около 20-30
то решено было (по совету urasfinks) создавать под каждую отдельное текствое поле со своим содержанием и ссылкой.
но так как во флеше новичок, возникли проблеммы - текстовая часть составляется, но не выводить в новосозданное поле . Помогите советом пожалуйста

var newsXML:XML = new XML();
newsXML.ignoreWhite = true;
var output:String = "";

newsXML.onLoad = function(success) {
if (success) {
var news:Array = newsXML.firstChild.childNodes;
this.createEmptyMovieClip("txt_mc",0);
for(i=0;i<news.length;i++) {

output += "<b>";
output += news[i].childNodes[0].firstChild.nodeValue;
output += "</b> - <i>";
output += news[i].childNodes[1].firstChild.nodeValue;
output += "</i>";

txt_mc.createTextField("txt_name" , 1, 0, 0, 150, 10);
txt_name.htmlText = output;
trace (output);
//txt_name.url = news[i].childNodes[2].firstChild.nodeValue;

}

}
else
{

}
}

newsXML.load("news4.xml");

содержание news4.xml:
<?xml version="1.0" encoding="utf-8"?>
<news>

<story>
<title>Интеграция ХМЛ во Флеш</title>
<date>18 ноября 2006</date>
<url><http://google.com</url>
</story>


</news>

Kuruki
06.12.2008, 17:21
var newsXML:XML = new XML();
newsXML.ignoreWhite = true;
var output:String = "";

newsXML.onLoad = function(success) {
if (success) {
var news:Array = newsXML.firstChild.childNodes;
_root.createEmptyMovieClip("txt_mc",0);
for(i=0;i<news.length;i++) {

output += "<b>";
output += news[i].childNodes[0].firstChild.nodeValue;
output += "</b> - <i>";
output += news[i].childNodes[1].firstChild.nodeValue;
output += "</i>";



}
txt_mc.createTextField("txt_name" , 1, 0, 0, 150, 10);
txt_mc.txt_name.html = true;
txt_mc.txt_name.htmlText = output;
trace(output);
//txt_mc.txt_name.url = news[i].childNodes[2].firstChild.nodeValue;
}
}

newsXML.load("news.xml");

l2net
06.12.2008, 20:12
Kuruki - огромное спасибо! заработал вывод строки

изменил строку на ввывод:
txt_mc.txt_name.htmlText = '<a href="'+news[i].childNodes[2].firstChild.nodeValue+'">'+output+'</a>';
эта новость полностью рабочая :) ура

а как теперь прочитать вторую новость?, я понимаю что созданное второе тектовое поле накладываться на первое
т.е. нужно создать динамически изменяемую переменную....зависящую от "i" но куда ее притулить и как оформить?
Заранее спасибо!

Kuruki
07.12.2008, 01:30
var newsXML:XML = new XML();
newsXML.ignoreWhite = true;


newsXML.onLoad = function(success) {
if (success) {
var news:Array = newsXML.firstChild.childNodes;
_root.createEmptyMovieClip("txt_mc", 0);
for (i = 0; i < news.length; i++) {
var output:String = "";
output += "<b>";
output += news[i].childNodes[0].firstChild.nodeValue;
output += "</b> - <i>";
output += news[i].childNodes[1].firstChild.nodeValue;
output += "</i>";

txt_mc.createTextField("txt_name" + i , i, 0, i * 20, 300, 20);
txt_mc['txt_name' + i].html = true;
txt_mc['txt_name' + i].htmlText = '<a href="'+news[i].childNodes[2].firstChild.nodeValue+'">'+output+'</a>';
}
}
}

newsXML.load("news.xml");
А если захотите сделать подчеркивание при наведении, смотрите TextField.styleSheet, TextField.StyleSheet