Форум 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)
-   -   Из текста - кнопку (http://www.flasher.ru/forum/showthread.php?t=118874)

l2net 05.12.2008 20:00

Из текста - кнопку
 
Подскажите пожалуйста как текстовое поле можно обратить в кнопку
с урл заданным в одном из детёенышей этого текста

код:
Код AS1/AS2:

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");

сейчас сама ссылка береться от сюда
Код AS1/AS2:

news[i].childNodes[2].firstChild.nodeValue;

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

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

urasfinks 05.12.2008 21:22

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

Kuruki 05.12.2008 21:49

Код AS1/AS2:

news_txt.htmlText = '<a href="'+переменная3+'">'+перем1+перем2+'</a>';


l2net 06.12.2008 14:27

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

Код AS1/AS2:

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 - огромное спасибо! заработал вывод строки

изменил строку на ввывод:
Код AS1/AS2:

txt_mc.txt_name.htmlText = '<a href="'+news[i].childNodes[2].firstChild.nodeValue+'">'+output+'</a>';

эта новость полностью рабочая :) ура

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

Kuruki 07.12.2008 01:30

Код AS1/AS2:

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


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

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