Форум 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)
-   -   MovieClipLoader - загрузка swf вместо фото (http://www.flasher.ru/forum/showthread.php?t=117969)

fortman 11.11.2008 21:58

MovieClipLoader - загрузка swf вместо фото
 
Добрый вечер. Глюк, который сейчас опишу, встречаю 3 раз, но раньше он как-то пропадал сам собой, сейчас же такой халявы не получается. Итак.
Код AS1/AS2:

function fotoLoad(num:Number){
        var loader:MovieClipLoader = new MovieClipLoader();
        thisFoto = fotos_mc.createEmptyMovieClip("foto" + num, num);
        loader.loadClip(thisFotoNode_array[num], thisFoto);
 
        thisFoto.onEnterFrame = function(){
                var loadObj:Object = loader.getProgress(thisFoto);
                time = Math.floor(loadObj.bytesLoaded/loadObj.bytesTotal*100);
                trace(time);
                if(time >= 100){
                        delete thisFoto.onEnterFrame;
                        trace(loadObj.bytesTotal);
                }
        }
}

Это функция загрузки фоток. Однако они не грузятся, хотя путь их читает верно. При полной же загрузки фотки, чтобы удостовериться она ли грузится, вывожу ее размер, однако показывает не размер фото, а вес моего swf!! Это ни в какие ворота... В чём дело, подскажите!

scarbo 11.11.2008 22:18

Не правильно пользуетесь MovieClipLoaderом.
Для отслеживания загрузки сделайте его слушателем объекта.
Все это есть в хелпе.

etc 11.11.2008 23:12

scarbo, кого слушателем? Кого будет слушать MovieClipLoader и зачем?

Ошибка, скорее всего, в том, что в getProgress надо передавать this, а не thisFoto, равно как и delete this.onEnterFrame.

Wolsh 11.11.2008 23:13

О! Код в стиле стимпанк! )))
Не, так не надо, для того MovieClipLoader и был создан на замену loadMovie, чтобы так никогда не извращаться. У класса MovieClipLoader есть отличные способности - onLoadStart чтобы активировать всякие прелоадеры для показа загрузки, onLoadProgress для отслеживания прогресса загрузки, onLoadComplete и onLoadInit для отслеживания ее окончания. Столько вкусностей, а Вы не пользуетесь))

scarbo 11.11.2008 23:28

to _etc:
Код:

var loader:MovieClipLoader = new MovieClipLoader();
var myObj:Object = new Object();
loader.addListener(myObj)
myObj.onLoadStart = function(target){
...
}

loader слушает myObj.

etc 11.11.2008 23:50

scarbo, ну, во первых, всё наоборот, а во вторых, тру флешеры не создают трешевый-объект типа «слушатель».

scarbo 11.11.2008 23:52

Ради Бога...

Art_133 12.11.2008 00:20

__etc обьясните пожалуйста, почему не создаётся слушатель в этом случае? Я как раз читал что слушатель желателен в этом случае и аргументируется это тем что некоторая часть возможностей класса MovieClipLoader не доступна на прямую. Для доступа к которым создаётся слушатель.
Обьясните что не так?

etc 12.11.2008 00:30

Art_133, потому что он не нужен. Этот самый «слушатель» есть некий непонятный обыкновенный объект, с объявленными свойствами-функциями, которые запускаются бог знает в какой области видимости, висят в памяти и являются ничем иным, как паразитами.
А всё потому, что начинающие разработчики пишут методы типа fotoLoad, с абстрактным индексом фотографии, который никакой смысловой нагрузки не несет, кроме индекса создаваемого клипа, вместо того, чтобы написать класс-наследник MovieClip, который сам загружает фото по url (больше ему ничего знать не нужно), подписывается на события (а не подписывает какой-то левый «слушатель»), крутит прелоадер и рапортует об окончании загрузки, если это необходимо.

fortman 12.11.2008 02:48

Ух, как вас много...
Про слушатель объекта вообще не думал.
Не помню как я избавлялся в прошлые разы от этого глюка, но сейчас так
Код AS1/AS2:

...
loader.loadClip(thisFotoNode_array[num].toString(), thisFoto);
...

И заработало... А в массиве хранилось значение считанное с xml. Наверное мой тупизм...

Wolsh, что значит код в стиле стимпанк?


Нда, добавилась новая непонятная проблема. Получается, что фото грузится неведомо куда. По-идее в thisFoto, но и ширина и высота равны нулю, и перемещать не получается... В чем теперь то дело может быть?

Wolsh 12.11.2008 09:53

Цитата:

Wolsh, что значит код в стиле стимпанк?
Это когда код представляет из себя красивую смесь из новых удобных методов и классов, и старых "хакерских" подходов к решению, как Ваш onEnterFrame в этом коде. Если просто открыть хелп и почитать все про MovieClipLoader, внимательно посмотреть пример, все будет понято и сделано.


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

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