Форум 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)
-   -   Проблемы с loadVars(); (http://www.flasher.ru/forum/showthread.php?t=102779)

_ViPeR_ 22.10.2007 19:14

Проблемы с loadVars();
 
Код:

var Text_lv:LoadVars = new LoadVars();
Text_lv.onData = function(src:String) {
        if (src != undefined) {
                _root.Acc.info.TA.text = src;
        }
};
Text_lv.load("Data/Standart/2/1.txt");

Вот такой нехитрый код, прям как из хелпа. Проблема в том что не загружается текст в компонент TextArea.
Разъясню таргет лоадварса: значит в руте создается Accordion, в этом аккрдионе создаются 3 чайлда, в первом чайлде с ID'шником "info" создается TextArea с ID'шником "TA", в этот TA должен загрузиться текст из txt'шки, но не грузится, хотя иногда этот текст грузится, но в одтельных случаях, на работе комп тормозной, там иногда срабатывает. Думаю что загрузка происходит раньше чем создается компонент на сцене. Хотя это простая догадка...
Таким же способом грузится без проблем от туда же текст в уже созданном TextArea компоненте еще до компиляции, т.е. вручную помещенном на сцену.
И еще одна проблема, тоже связанная с этой загрузкой. В случает когда текст грузится в уже готовый, помещенный вручную TextArea на сцену, текст автоматически выравнимается по левому краю и весь виден на этом "ТА", однако в программно созданный "ТА", если и повезет и текст загрузится, то он идет в одну строку и не разбивается на строки и прочитать его можно если начать мышкой его выделять и как бы выделением "двигать".
Извиняюсь за многобуквенность.
Спасибо за помощь!

wvxvw 22.10.2007 22:22

пип-пип-пип компоненты макромедии пип-пип-пип, и какой пип-пип-пип их только и каим пиииииип местом делал %)
Возможно, твой лоадварс загружается раньше, чем инициализируется этот самый компонент. Самое лучее решение - не пользоваться им никогда, решение похуже - сначала проверить, скажем, в энтерфрейме, а инициализировался ли этот пип-пип компонент, а потом уже в него что-то грузить =)

_ViPeR_ 23.10.2007 09:27

Если и косяк заключается в неуспевании загрузки компонента, то это не вина компонента, а скорее всего компилятора.
Ну может кто нибудь поможет? Может setIntrval как то можно использовать?

CorC 23.10.2007 10:13

Я что-то с этим чудом не сталкивался :) Попробуйте создавать ТекстФилд, а не ТекстАреа. setInterval тоже можно.

_ViPeR_ 23.10.2007 11:17

С тексфилдом та же беда :(

son_of_war 23.10.2007 13:31

кидай сырец - поглядим

wvxvw 23.10.2007 19:47

Цитата:

Сообщение от _ViPeR_
Если и косяк заключается в неуспевании загрузки компонента, то это не вина компонента, а скорее всего компилятора.
Ну может кто нибудь поможет? Может setIntrval как то можно использовать?

Не, в данном конкретном случае пип-пип компонент, ну, так он написан коряво. Создаешь ты его, а к свойствам сразу обратится не можешь - ибо половина компонента (восновном связанная с графикой) рисуется/создается в энтерфрейме на следующем кадре... а текстэриа содержит в себе еще 1 вложенный компонент - скроллер, вобщем, муть.

Но если и в текстфилд не выводится, тогда проблема не в этом...

_ViPeR_ 24.10.2007 07:56

Кинуть весь проект не смогу, тяжелый он для моей дорогой внешки (15мб)
Кину просто код фрейма в котором эта беда.
Код:

stop();
System.useCodepage = true;
fscommand("showmenu", "false");
import mx.controls.*;
import mx.containers.*;
import mx.controls.gridclasses.DataGridColumn;
#include "AS/DscProvider.as"
#include "AS/Styles.as"
#include "AS/BtnFun.as"
#include "AS/Tree3.as"
function create_Acc():Void {
        _root.createClassObject(Accordion, "Acc", 3, {_x:310, _y:125});
        var material = Acc.createChild(mx.core.View, "mat", {label:"Материалы к дисциплине"});
        var info = Acc.createChild(mx.core.View, "inf", {label:" Информация о дисциплине"});
        var autor = Acc.createChild(mx.core.View, "aut", {label:" Авторы"});
        Acc.setStyle("backgroundColor", 0x43AB38);
        Acc.setSize(_root.width-324, _root.height-168);
        material.createClassObject(DataGrid, "Dg", 200, {_x:5, _y:5});
        material.Dg.setSize(Acc.width-10, 250);
        var first_dgc:DataGridColumn = new DataGridColumn("first");
        first_dgc.headerText = "  Авторы";
        first_dgc.width = Acc.width*0.4;
        material.Dg.addColumn(first_dgc);
        var second_dgc:DataGridColumn = new DataGridColumn("second");
        second_dgc.headerText = "  Дисциплина";
        second_dgc.width = Acc.width*0.4;
        var third_dgc:DataGridColumn = new DataGridColumn("third");
        third_dgc.headerText = "  Формат";
        third_dgc.width = Acc.width*0.2;
        material.Dg.addColumn(second_dgc);
        material.Dg.addColumn(third_dgc);
        material.Dg.setStyle("borderStyle", "alert");
        material.Dg.setStyle("backgroundColor", 0xEEEEEE);
        material.Dg.dataProvider = [{first:"Высотова И.Е., Гриднева Т.Г.", second:"Английский язык", third:"Acrobat Reader"}, {first:"Батурина О.А., Гладких В.Н.", second:"Немецкий язык", third:"Acrobat Reader"}];
        info.createTextField("TA", 0, 5, 5, Acc.width-10, Acc._height-10);
        info.TA.border=true;
        info.TA.borderColor=0x43AB38;
        info.TA.background=true;
        info.TA.backgroundColor=0xEEEEEE;
        info.TA.editable = false;
        info.TA.wordWrap = true;
        info.TA.html = true;
        var _DataGrid = material.Dg;
        _DataGrid.sortableColumns = false;
        var DgListener:Object = new Object();
        DgListener.change = function(evt:Object) {
                var Ind = evt.target.selectedIndex;
                if (Ind == 0) {
                        getURL("Data/Dsc/Disciplines/Eng.pdf");
                }
                if (Ind == 1) {
                        getURL("Data/Dsc/Disciplines/Deu.pdf");
                }
        };
        _DataGrid.addEventListener("change", DgListener);
}
create_Acc();
var Text_lv:LoadVars = new LoadVars();
Text_lv.onData = function(src:String) {
        if (src != undefined) {
                _root.Acc.info.TA.text = src;
        }
};
Text_lv.load("Data/Standart/2/1.txt");


alexcon314 24.10.2007 08:42

проблема в правильном пути к вашему текстфилду
Код:

stop();
System.useCodepage = true;
fscommand("showmenu", "false");
import mx.controls.*;
import mx.containers.*;
import mx.controls.gridclasses.DataGridColumn;
#include "AS/DscProvider.as"
#include "AS/Styles.as"
#include "AS/BtnFun.as"
#include "AS/Tree3.as"
function create_Acc():Void {
        _root.createClassObject(Accordion, "Acc", 3, {_x:310, _y:125});
        var material = Acc.createChild(mx.core.View, "mat", {label:"Материалы к дисциплине"});
        var info = Acc.createChild(mx.core.View, "inf", {label:" Информация о дисциплине"});
        var autor = Acc.createChild(mx.core.View, "aut", {label:" Авторы"});
        Acc.setStyle("backgroundColor", 0x43AB38);
        Acc.setSize(_root.width - 324, _root.height - 168);
        material.createClassObject(DataGrid, "Dg", 200, {_x:5, _y:5});
        material.Dg.setSize(Acc.width - 10, 250);
        var first_dgc:DataGridColumn = new DataGridColumn("first");
        first_dgc.headerText = "  Авторы";
        first_dgc.width = Acc.width * 0.4;
        material.Dg.addColumn(first_dgc);
        var second_dgc:DataGridColumn = new DataGridColumn("second");
        second_dgc.headerText = "  Дисциплина";
        second_dgc.width = Acc.width * 0.4;
        var third_dgc:DataGridColumn = new DataGridColumn("third");
        third_dgc.headerText = "  Формат";
        third_dgc.width = Acc.width * 0.2;
        material.Dg.addColumn(second_dgc);
        material.Dg.addColumn(third_dgc);
        material.Dg.setStyle("borderStyle", "alert");
        material.Dg.setStyle("backgroundColor", 0xEEEEEE);
        material.Dg.dataProvider = [{first:"Высотова И.Е., Гриднева Т.Г.", second:"Английский язык", third:"Acrobat Reader"}, {first:"Батурина О.А., Гладких В.Н.", second:"Немецкий язык", third:"Acrobat Reader"}];
        TA = info.createTextField("TA", 0, 5, 5, Acc.width - 10, Acc._height - 10);
        TA.border = true;
        TA.borderColor = 0x43AB38;
        TA.background = true;
        TA.backgroundColor = 0xEEEEEE;
        TA.editable = false;
        TA.wordWrap = true;
        TA.html = true;
        var _DataGrid = material.Dg;
        _DataGrid.sortableColumns = false;
        var DgListener:Object = new Object();
        DgListener.change = function(evt:Object) {
                var Ind = evt.target.selectedIndex;
                if (Ind == 0) {
                        getURL("Data/Dsc/Disciplines/Eng.pdf");
                }
                if (Ind == 1) {
                        getURL("Data/Dsc/Disciplines/Deu.pdf");
                }
        };
        _DataGrid.addEventListener("change", DgListener);
}
create_Acc();
var Text_lv:LoadVars = new LoadVars();
Text_lv.onData = function(src:String) {
        if (src != undefined) {
                TA.htmlText = src;
        }
};
Text_lv.load("Data/Standart/2/1.txt");

если не устраивает такой подход можете поэкспериментировать с путями самостоятельно

_ViPeR_ 24.10.2007 10:15

alexcon314, спасибо, работает.
Только вот я не могу никак понять разницу, в Вашем примере просто создается ссылка на ТА и по этой ссылке обращаемся к филду. В моем - все напрямую по абсолютным путям, вроде пути рабочие, если и бакгроунды и бордеры устанавливались, а лоадварс не работал...


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

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