![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Сайгак
|
Вот тут есть код (в приложенном файле) Я как бы его на 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]);
}
};
Заранее спасибо вам!
__________________
- Всё, мастер! Готово! - Что готово? - Сломал... ------------------------------ (O: ЖЖ :O) |
|
|||||
|
В свойсве класса 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]); //если параметров не три то ...
}
};
а в функции setPosition - один Последний раз редактировалось Alex_Lom; 07.01.2003 в 14:32. |
|
|||||
|
Сайгак
|
Вау! Спасибо! Раздуплился!
Еще один малнький вовпросик! Получается когда мы вызываем комманду LoadMovie то внутри самой функции у нас присутствует массив arguments, а если мы создадим другую функцию, то внутри будет другой массив? Спасибо тебе большое!
__________________
- Всё, мастер! Готово! - Что готово? - Сломал... ------------------------------ (O: ЖЖ :O) |
|
|||||
|
ну конечно! каждой функции свой arguments. Если представить функцию как некий объект, то этот массив его свойство.
|
![]() |
Часовой пояс GMT +4, время: 10:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|