Форум 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=92736)

Bodoni 05.03.2007 13:26

Как правильно прописать двойную ссылку?
 
Люди, pls помогите решить проблему!

Есть меню ссылок в XML, которое подгружается в Flash.
После клика по ссылке должен подгружаться видеоролик и текстовый блок. Проблема в том, что не грузится одновременно видеоролик и текстовый блок.

Если в Flash-коде
"<ahref=\"asfunction:loadFLV,"+src_xml.firstChild.childNodes[i].attributes.video+"\">"+src_xml.firstChild.childNodes[i].attributes.title+"</a><br>";

я пишу attributes.video+ - грузится ролик, если пишу attributes.info+ - грузится текстовый блок…
Как в Flash-коде правильно прописать ссылку, чтобы и блок и ролик грузились одновременно?

Или в XML как-то по другому ссылку нужно оформить?



Меню ссылок в XML:

Код:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<item id="1" title="video clip 1"                info="library/video/info/1_1.xml"                video="library/video/1_1.flv"><![CDATA[]]></item>

<item id="2" title=" video clip 2"                info="library/video/info/1_2.xml"                video="library/video/1_2.flv"><![CDATA[]]></item>

<item id="3" title=" video clip 3"                info="library/video/info/1_3.xml"                video="library/video/1_3.flv"><![CDATA[]]></item>
</root>



Код во Flash:

Код:


_global.loadXMLport = function(loadFile:String, loadObject:TextField) {
        var src_xml = new XML();
        src_xml.ignoreWhite = true;
        src_xml.onLoad = function() {
                loadObject.html = true;
                for (i=0; i<=src_xml.firstChild.childNodes.length-1; i++) {
                                       
loadObject.htmlText += "<ahref=\"asfunction:loadFLV,"+src_xml.firstChild.childNodes[i].attributes.video+"\">"+src_xml.firstChild.childNodes[i].attributes.title+"</a><br>";
                               
                                }
                loadStyles(loadObject);
        };
        src_xml.load(loadFile);
};

_global.loadFLV = function(loadImageFile:String):Void  {
        _level0.objHolder1_mc.contBox8_mc.fromGo = "1";
        _level0.objHolder1_mc.contBox8_mc.movieFlv = loadImageFile;
        _level0.objHolder1_mc.contBox8_mc.movieInfo = loadImageFile;
        _level0.objHolder1_mc.contBox8_mc.onComeAnimation();
};


Помогите плиз!!!

etc 05.03.2007 13:58

Bodoni, оформите код тегами CODE.

Bodoni 05.03.2007 14:10

ага, оформил...

etc 05.03.2007 14:51

В href передается только текстовый параметр, т.е. всё, что после запятой — текст. Можно передать ID необходимого нода. Т.е. типа loadFLV,1. Затем
Код:

var node:XMLNode = src_xml.idMap[id]
.
Как-то так…

Bodoni 05.03.2007 15:15

Daemon, спасибо!

пока толком не понял, но буду разбираться...

etc 05.03.2007 15:21

Цитата:

Сообщение от Bodoni
Daemon, спасибо!

Ник выше, а это звание :)

Bodoni 05.03.2007 16:02

;) сорри, __etc! хитрый ник...

Bodoni 05.03.2007 16:11

во, наколбасил....


Код:

_global.loadXMLport = function(loadFile:String, loadObject:TextField) {
        var src_xml = new XML();
        src_xml.ignoreWhite = true;
        src_xml.onLoad = function() {
                loadObject.html = true;
                for (i=0; i<=src_xml.firstChild.childNodes.length-1; i++) {
                                       
                                loadObject.htmlText += "<a href=\"asfunction:loadFLV,1."+src_xml.firstChild.childNodes[i].attributes.video+",2."+src_xml.firstChild.childNodes[i].attributes.info+"\">"+src_xml.firstChild.childNodes[i].attributes.title+"</a><br>";
                                }
                loadStyles(loadObject);
        };
        src_xml.load(loadFile);

};

_global.loadFLV = function(loadImageFile:String):Void  {
        var node:XMLNode = src_xml.idMap[id];
        _level0.objHolder1_mc.contBox8_mc.fromGo = "1";
        _level0.objHolder1_mc.contBox8_mc.movieFlv = loadImageFile;
        _level0.objHolder1_mc.contBox8_mc.movieInfo = loadImageFile;
        _level0.objHolder1_mc.contBox8_mc.onComeAnimation();
};


не выходит каменный цветок...
и крыша моя едет...

etc 05.03.2007 16:24

Код:

_global.loadXMLport = function(loadFile, loadObject) {
        loadObject.html = true;
        _global.src_xml = new XML();
        var xml = _global.src_xml;
        xml.ignoreWhite = true;
        xml.onLoad = function() {
                var nodes = this.firstChild.childNodes;
                for (var i=0; i<nodes.length; i++) {
                        var node = nodes[i];                       
                        loadObject.htmlText += '<a href="asfunction:loadFLV,'+node.attributes.id+'">'+node.attributes.title+'</a><br>';
                }
                loadStyles(loadObject);
        };
        xml.load(loadFile);
};

_global.loadFLV = function(id) {
        var node = _global.src_xml.idMap[id]; // если не заработает, то раскоментируй строку ниже, а эту сотри.
        // var node = _global.src_xml['idMap'][id];
        _level0.objHolder1_mc.contBox8_mc.fromGo = "1";
        _level0.objHolder1_mc.contBox8_mc.movieFlv = node.attributes.video;
        _level0.objHolder1_mc.contBox8_mc.movieInfo = node.attributes.info;
        _level0.objHolder1_mc.contBox8_mc.onComeAnimation();
};

Тыкать мою строку куда попало, не понимая, что она делает, не стоит.

Bodoni 05.03.2007 17:08

__etc, спасибо за код! ты - человек!


лин... попробовал... и строку раскоментировал... не пашет...

etc 05.03.2007 17:30

Что именно не пашет?
Ошибки есть какие-то или что?

Bodoni 05.03.2007 23:59

нет, ошибки не вылетают, и title подгружает имена ссылок, и всё работает - анимация и т.д... но водеоролик не проигрывается и текстовый блок не подгружает xml...

сорри что сразу не ответил - не заметил, что появилась Страница 2

etc 06.03.2007 00:59

Ну тогда расставь трейсы, что, где и как выдается.

Bodoni 06.03.2007 11:00

в текстовом блоке выдается:
Loading Text — NaN%



сам текстовый блок описан кодом:

Код:

stop();
        loadXML(_parent.movieInfo, info_txt);




блок, в который должен загружаться клип описан так:

Код:

stop();
if (_parent.fromGo == 1) {
        this.onEnterFrame = function(){
        var p = Math.floor(my_ns.getBytesLoaded()/my_ns.getBytesTotal()*100);
        trace(p+"|"+my_ns.getBytesTotal());
        if(p >= 100){
                delete this.onEnterFrame;
                }
        }
       
        my_ns.play(_parent.movieFlv);
        trace(_parent.movieFlv);
        my_ns._x = 200-(my_ns.width*.5);
}


etc 06.03.2007 11:14

Проверь, загрузился ли XML, для начала. Т.е. trace(this) внутри onLoad.

Bodoni 06.03.2007 11:24

брр... ничего не понял...

вместо
xml.onLoad = function()

написать... ?
xml.onLoad = trace(this)

etc 06.03.2007 11:27

Нет, внутри объявленной функции.
Код:

xml.onLoad = function() {
  trace(this.status+','+this.loaded);
}


Bodoni 06.03.2007 11:35

не ругается, но и XML не грузится...



Код:

_global.loadXMLport = function(loadFile, loadObject) {
                loadObject.html = true;
                _global.src_xml = new XML();
                var xml = _global.src_xml;
                xml.ignoreWhite = true;

                xml.onLoad = function() {
                  trace(this.status+','+this.loaded);

                var nodes = this.firstChild.childNodes;
                for (var i=0; i<nodes.length; i++) {
                var node = nodes[i];
                                loadObject.htmlText += '<a href="asfunction:loadFLV,'+node.attributes.id+'">'+node.attributes.title+'</a><br>';
                                        }
                loadStyles(loadObject);
                                        };
                                        xml.load(loadFile);

                                        };
                                        _global.loadFLV = function(id) {
                                        var node = _global.src_xml['idMap'][id];
                                        _level0.objHolder1_mc.contBox8_mc.fromGo = "1";
                                        _level0.objHolder1_mc.contBox8_mc.movieFlv = node.attributes.video;
                                        _level0.objHolder1_mc.contBox8_mc.movieInfo = node.attributes.info;
                                        _level0.objHolder1_mc.contBox8_mc.onComeAnimation();
                                        };


etc 06.03.2007 11:53

Ну зачем так криво писать код? Ведь непонятно же, где и какая скобка за что отвечает…
В приведенном коде все верно.
Где у тебя вообще вызов loadXMLport?

Bodoni 06.03.2007 12:02

порты - вот они...


Код:

stop();
loadXMLport("library/list1.xml", menu_txt);
loadXMLport("library/list2.xml", menu2_txt);
loadXMLport("library/list3.xml", menu3_txt);

function loadImage(itemSource:String) {
                _parent._parent.contBox8_mc.fromGo = "1";
                _parent._parent.contBox8_mc.movieFlv = _parent.movieFlv;
                _parent._parent.contBox8_mc.loadXMLext;
                _parent._parent.contBox8_mc.onComeAnimation();
}


etc 06.03.2007 12:33

Гм, xml у тебя один глобальный. Нельзя сразу все грузить.
Почему нельзя грузить один xml и распихать всё по полям?

Bodoni 06.03.2007 12:40

бррр... не врубаюсь... как это сделать...

etc 06.03.2007 12:48

Ладно, пробуй это:

Код:

_global.loadXMLport = function(loadFile, loadObject) {
        loadObject.html = true;
        var xml = new XML();
        xml.ignoreWhite = true;
        xml.onLoad = function() {
                var nodes = this.firstChild.childNodes;
                for (var i = 0; i<nodes.length; i++) {
                        var node = nodes[i];
                        var video = node.attributes.video;
                        var info = node.attributes.info;
                        loadObject.htmlText += '<a href="asfunction:loadFLV,'+video+'$$$'+info+'">'+node.attributes.title+'</a><br>';
                }
                loadStyles(loadObject);
        };
        xml.load(loadFile);
};
_global.loadFLV = function(args) {
        var temp = args.split('$$$');
        var video = args[0];
        var info = args[1];
        _level0.objHolder1_mc.contBox8_mc.fromGo = "1";
        _level0.objHolder1_mc.contBox8_mc.movieFlv = video;
        _level0.objHolder1_mc.contBox8_mc.movieInfo = info;
        _level0.objHolder1_mc.contBox8_mc.onComeAnimation();
};


Bodoni 06.03.2007 13:13

лииин... __etc - спасибо! с меня уже ящик пива...

но не пашет... не ругается - с кодом всё супер... но и не работает

etc 06.03.2007 13:57

Ну что значит не пашет?
Ошибки? Не грузится? ЧТО?

Трейсы ставь, есть-ли ссылка на файл, загрузился ли он в XML, правильно ли обработался, верные ли ссылки и прочее. Проверяй!
Я не могу этого сделать по одной просто причине, что я понятия не имею, как там и что у тебя устроено, где что вызывается и куда грузится.

Bodoni 06.03.2007 14:27

ошибок не выдает, грузятся XML порты, ссылки по сто раз перепроверил...

есть список ссылок в xml портах, за отображение которых отвечает строка '+node.attributes.title+', я кликаю по ссылке - список улетает и появляются два окошка, в одно должен видеоролик грузиться, в другое - XML - типа комментарий к ролику. ни то ни другое не грузится

в старом коде работало что-то одно - либо ролик, если пишу attributes.video+, либо XML комментарий - если я тупо менял video+ на info+


сорри, что достал тебя уже

etc 06.03.2007 14:32

Протрейси htmlText у loadObject после присвоения всех ссылок. Результат пости сюда.

Bodoni 06.03.2007 20:20

о! выдает - undefined,undefined


Код:

_global.loadXMLport = function(loadFile, loadObject) {
                        loadObject.html = true;
                        var xml = new XML();
                        xml.ignoreWhite = true;
                        xml.onLoad = function() {
                        var nodes = this.firstChild.childNodes;
                        for (var i = 0; i<nodes.length; i++) {
                        var node = nodes[i];
                        var video = node.attributes.video;
                        var info = node.attributes.info;
                        loadObject.htmlText += '<a href="asfunction:loadFLV,'+video+'$$$'+info+'">'+node.attributes.title+'</a><br>';

                        }
                        loadStyles(loadObject);
                        };
                        xml.load(loadFile);
                        };
                        {
                        trace(this.status+','+this.loaded);}
                       
                        _global.loadFLV = function(args) {
                        var temp = args.split('$$$');
                        var video = args[0];
                        var info = args[1];
                        _level0.objHolder1_mc.contBox8_mc.fromGo = "1";
                        _level0.objHolder1_mc.contBox8_mc.movieFlv = video;
                        _level0.objHolder1_mc.contBox8_mc.movieInfo = info;
                        _level0.objHolder1_mc.contBox8_mc.onComeAnimation();
                        };



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

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