Форум 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)
-   -   Не срабатывает onLoadComplete внутри прототипа (http://www.flasher.ru/forum/showthread.php?t=110390)

ra26info 02.04.2008 01:09

Не срабатывает onLoadComplete внутри прототипа
 
Код HTML:

MovieClip.prototype.contentloader = function(){

this.createEmptyMovieClip('pic', this.getNextHighestDepth());

var mcl:MovieClipLoader = new MovieClipLoader ();
mcl.addListener (this);
var i:Number = 0;
var rootName = ["1.swf","1.jpg"];
var mcOld:MovieClip = null;

this.onLoadInit = function () {
        var mc:MovieClip = this.pic.createEmptyMovieClip ("mc" + i, i);
        mcl.loadClip (rootName[i], mc);
        mc._x = 10;
        mc._y = ((mcOld._y + mcOld._height) || 0) + 10;;
        mcOld = mc;
        i++;
        //////////////////////////////////////////////////// - не выполняется
        this.mcl.onLoadComplete = function () {
                trace ("Загржено mc"+[i]);
        };
        //////////////////////////////////////////////////// - ============
};

this.onLoadError = function () {
        trace ("Загрузка завершена");
};
this.onLoadInit ();

}

this.contentloader(); // запускаем загрузку

Почему не срабатывает?

udaaff 02.04.2008 01:24

Код:

this.mcl = new MovieClipLoader();

Molecula 02.04.2008 01:34

Сранно, а зачем Вам использовать прототип?
На сколько мне известно это старая практика, ещё 6-ки.

ra26info 02.04.2008 01:40

Цитата:

Сообщение от udaaff
Код:

this.mcl = new MovieClipLoader();

А в чем разница?
Но если написать
Код:

//        this.mcl.onLoadComplete = function ()
        this.onLoadComplete = function ()

..то работает, но в чем разница? Почему не получается обратить по имени?
Цитата:

Сообщение от Molecula
Сранно, а зачем Вам использовать прототип?
На сколько мне известно это старая практика, ещё 6-ки.

А как нынче модно, какие альтернативы? Честно говоря я 3 года флэшем не занимался. Возникла потребность, пишу как помню.
Я работаю в 2004 флэше,

udaaff 02.04.2008 01:45

В том, что, когда вы объявляете эту переменную как локальную, т.е.:
Код:

var mcl:MovieClipLoader = new MovieClipLoader ();
, то ее время жизни ограничивается периодом действия функции, в данном случае.

ra26info 02.04.2008 01:49

udaaff, а как сделать правильно? this.onLoadComplete - это правильно?

udaaff 02.04.2008 01:55

Туплю...
Вы же текущий объект подписываете на получение событий от mcl, а текущий объект это this )

upd: 5 пост отношения к данному случаю не имеет, т.к. функция определенная внутри другой функции, продолжает видеть ее локальные переменные и параметры, даже после ее отработки.

screamge 02.04.2008 02:29

Цитата:

А как нынче модно, какие альтернативы?
Посмотрите в википедии про парадигмы программирования.

ra26info 02.04.2008 04:06

Цитата:

Сообщение от screamge
[qoute]А как нынче модно, какие альтернативы?

Посмотрите в википедии про парадигмы программирования.[/quote]
Очень ценный совет, посмотрел.. но как это относится к данной теме?

screamge 02.04.2008 05:19

Прототипное программирование канула в века вместе с АС1. Если вас интересует нынешняя парадигма применимая к флеш, ниспосланная богами всея флеш платформы, то это ООП. Касательно самого вопроса, почему бы вам не открыть хелп и не поискать по слову «MovieClipLoader», страшнее того что у вас написанно в первом посте явно не получится, а давать вредные советы я не с клонен. На этом, с вашего позволения, откланяюсь.


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

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