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

Tails 10.05.2010 15:50

загрузка картинки по ссылке из файла
 
Немагу загрузить картинку по загруженой ссылке из файла. Сперва гружу переменную ...

Код AS1/AS2:

var lv:LoadVars = new LoadVars();
lv.onLoad = function(success:Boolean) {
        if (success) {
                urlFon=(this.urlFon);
                      trace(urlFon);
          }
}

трейс показывает
Цитата:

Obloshka.jpg
тоесть название нужного файла загрузилось, ок всё отлично, затем пытаюсь грузить эту картинку ...

Код AS1/AS2:

mcLoader=new MovieClipLoader();
attachMovie("Fon","Fon",1);
clip=_root.Fon;
mcLoader.loadClip(urlFon, clip);

и трэйс выводит ошибку:
Цитата:

Error opening URL "file:///E|/Diploma%20Project/Obloshka.jpg

"
что ему ненравиться ?
если записать сразу название файла
Код AS1/AS2:

mcLoader.loadClip("Obloshka.jpg", clip);

то грузиться беспроблем

mooncar 10.05.2010 15:57

Для начала: из какого места кода вы пытаетесь загрузить картинку?
Это надо делать, когда уже определена переменная urlFon, то есть изнутри обработчика onLoad.
То есть попробуйте loadClip записать внутри него после получения значения переменной.
А все остальное (создание экземпляра MCL и прочее) можно оставить снаружи, это выполнится мгновенно, в отличие от загрузки url картинки.

То есть так:
Код AS1/AS2:

var lv:LoadVars = new LoadVars();
lv.onLoad = function(success:Boolean) {
    if (success) {
        urlFon = this.urlFon;
        loadImage(urlFon);
    }
};
lv.load(......);
 
.....
 
mcLoader = new MovieClipLoader();
attachMovie("Fon", "Fon", 1);
 
function loadImage (picurl:String) {
        mcLoader.loadClip(picurl, Fon);       
}

Не знаю, решит ли это конкретно вашу текущую проблему, однако делать нужно именно так в силу асинхронности работы кода AS.

PS. Если загрузку картинки больше нигде не надо использовать, можно обойтись без спец.функции, а записать строку загрузки прямо сразу внутри onLoad:
Код AS1/AS2:

mcLoader = new MovieClipLoader();
attachMovie("Fon", "Fon", 1);
 
var lv:LoadVars = new LoadVars();
lv.onLoad = function(success:Boolean) {
    if (success) {
        mcLoader.loadClip(this.urlFon, Fon);       
    }
};
lv.load(......);


Tails 10.05.2010 16:27

Вот весь код
Код AS1/AS2:

mcLoader = new MovieClipLoader();
attachMovie("Fon","Fon",1);
 
var lv:LoadVars = new LoadVars();
lv.onLoad = function(success:Boolean) {
        if (success) {
                //НАСТРОЙКА ПЕРЕМЕННЫХ
                ShapkaText=(this.ShapkaText);
                urlFon=(this.urlFon);
                loadImage(urlFon); // функция
 
        }
}
function loadImage (picurl:String) {
        trace(picurl);
        mcLoader.loadClip(picurl, Fon);       
}
lv.load('config.ini'); //Загрузка конфигураций

вывод трейса:
Цитата:

Obloshka.jpg


Error opening URL "file:///E|/Diploma%20Project/Obloshka.jpg

"
В нём видно, что загрузка картинки производиться после загрузки ссылки, но всёравно непашет. Если написать путь вручную без ссылки:
Код AS1/AS2:

function loadImage (picurl:String) {
        trace(picurl);
        mcLoader.loadClip("Obloshka.jpg", Fon);       
}

то картингка загрузиться.

Может както нужно указать, что picurl именно ссылка ?
И почему в трейсе кавычка на следующей строке ?

строение config.ini
Цитата:

&ShapkaText=Моя шарага
&urlFon=Obloshka.jpg

mooncar 10.05.2010 16:32

Верное написание config.ini будет таким:
Код:

&ShapkaText=Моя шарага&urlFon=Obloshka.jpg
Переносы строк недопустимы.
У вас url получается со вставленным переносом строки (точнее их получается два, так как флеш интерпретирует и возврат каретки тоже как новую строку), поэтому и кавычка там есть через строку.
Разумеется, по такому url загрузить флеш ничего не может.

Tails 10.05.2010 16:35

Ураа заработало !! терь всё ясно, долбанный невидимый символ, я знал что кавычка через строку в трейсе - жутко подозрительно.

спасибо :)

mooncar 10.05.2010 17:00

Пожалуйста.
PS. А зачем вы обрамляете правые части выражений в лишние скобки?
Не надо так делать. Не создавайте лишние сущности. Синтаксис AS этого не предусматривает.
Переносы строк - это тоже оказалось лишними сущностями.
Повышайте знание матчасти с помощью хелпа и учебников, это сэкономит вам время :)


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

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