Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   люди! Помогите разобраться с прототипами! (http://www.flasher.ru/forum/showthread.php?t=41547)

ЛОWАДКА 05.01.2003 18:12

люди! Помогите разобраться с прототипами!
 
Вложений: 1
Вот тут есть код (в приложенном файле) Я как бы его на 50% понял на вот остальные 50 даются с трудом!
Честно говоря с прототипами первый раз работаю! Сижу вот обложившись книгами и окнами эксплорера, но мне не понятны все аргументы что тут встречаются!

Умные мира сего не покажете ли на пальцах по порядку что именно делает этот код, по пунктам! Очень поможете в познании прототипов!


Я так понял самое главное и самое сложное кроется в этом куске кода!

Код:

MovieClip.prototype.oldLoadMovie = loadMovie;
MovieClip.prototype.loadMovie = function() {
        if (arguments[2]) {
                _root.history_array.push(arguments[0]);
                _root.position_in_history = _root.history_array.length-1;
                this.oldLoadMovie(arguments[0], arguments[1]);
        } else {
                this.oldLoadMovie(arguments[0], arguments[1]);
        }
};


Заранее спасибо вам!

Alex_Lom 07.01.2003 14:27

В свойсве класса prototype хранится объект, который является прообразом всех экземпляров данного класса.
Тоесть при создании нового экземпляра, в него переносятся все свойсва и методы объекта prototype.
Код:

MovieClip.prototype.oldLoadMovie = loadMovie;
/*loadMovie - сущесвуюший метод (по сути функция) класса MovieClip.
В метод oldLoadMovie мы ее и копируем. Тоесть на данном этапе этими
обоими методами можно пользоватся одновременно и одинаково.
Но это не есть цель, и потому перепишем метод loadMovie на свой лад : */
MovieClip.prototype.loadMovie = function() { // новая функция которая становится
//новым методом loadMovie теперь все мувики вызывая  loadMovie будут пользоватся именно ею
        if (arguments[2]) { // поскольку никакой строгости с аргументами
                        //у функций во флеш нет, их можно сначала
                        //вообще не описывать, а потом из специального массива arguments
                        // считавать и пользоватся по мере необходимости. В данной строчке
                        //проверяется определены ли все три аргумента, и если да, то:
                _root.history_array.push(arguments[0]);
//в массив history_array в конец дописывается элемент,
                                        //со значением первого аргумента вызваной функции
                                        //(название флешки 1.swf 2.swf и тд)
                _root.position_in_history = _root.history_array.length-1;
// свойсву position_in_history приписывается
//номер в массиве этого элемента (флешки)
                this.oldLoadMovie(arguments[0], arguments[1]);
// в this тоесть в мувик который вызвал этот метод и загружается флешка
        // а вот со вторым параметром - какой-то ляп, это по идее долже быть "GET" или "POST"
        // но там стоит пустая строка... (?)
        } else {
                this.oldLoadMovie(arguments[0], arguments[1]); //если параметров не три то ...
        }
};

на кнопках загрузки стоят скрипты :_root.target_for_mc.loadMovie("0.swf", "", 1) - 3 аргумента,
а в функции setPosition - один

ЛОWАДКА 08.01.2003 12:36

Вау! Спасибо! Раздуплился!

Еще один малнький вовпросик! Получается когда мы вызываем комманду LoadMovie то внутри самой функции у нас присутствует массив arguments, а если мы создадим другую функцию, то внутри будет другой массив?

Спасибо тебе большое!

Alex_Lom 08.01.2003 13:15

ну конечно! каждой функции свой arguments. Если представить функцию как некий объект, то этот массив его свойство.

ЛОWАДКА 08.01.2003 13:20

Ура! Теперь будем тренироваться! Спасибо!


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

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