![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2005
Сообщений: 785
|
Итак, есть код который не работает...вернее исполнение fun() в S1
я знаю, что ответ прост, но я его найти немогу во содственно скрипт _root.onEnterFrame= function() {
function fun() {
X=_xmouse-this._x
Y=_ymouse-this._y
D=Math.sqrt(X*X+Y*Y)
if(D<63){
this._width+=(272-this._width)/5
this._height+=(272-this._height)/5}
else{
this._width+=(140-this._width)/10
this._height+=(150-this._height)/10}}
}
S1.onEnterFrame= function(){
fun()
}
__________________
Нано-флешер (в отставке) |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Это ты что-то непонятное намутил... Ты, наверное хотел сделать что-то подобное этому?
MovieClip.prototype.fun = function() {
this.onEnterFrame= function() {
X=_xmouse-this._x
Y=_ymouse-this._y
D=Math.sqrt(X*X+Y*Y)
if(D<63){
this._width+=(272-this._width)/5
this._height+=(272-this._height)/5
}else{
this._width+=(140-this._width)/10
this._height+=(150-this._height)/10
}
}
}
S1.fun();
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Therion, разберись с областями видимости. Проверь, к чему относится this внутри fun()
|
|
|||||
|
Регистрация: Feb 2006
Сообщений: 580
|
Есть очень полезный инструмент, trace назвается. Очень многое можно узнать о работе кода используя его. Напр. у меня если что-то не работает как нужно, я сразу начинаю трэйсить те или иные строчки и все становится понятно. Напиши напр. внутри своей функции, после строчки if(D<63){ строку trace(this) и тебе многое станет понятно.
![]() |
|
|||||
|
Ты сам понял что в коде намутил? Ты внутри функции onEnterFrame создаешь локальную функцию fun(), которая существует только внутри _root.onEnterFrame. И ее нельзя вызывать из S1.onEnterFrame, потому что _root и S1 - это совсем разные клипы.
Попробуй вот так: function fun() {
X = _xmouse-this._x;
Y = _ymouse-this._y;
D = Math.sqrt(X*X+Y*Y);
if (D<63) {
this._width += (272-this._width)/5;
this._height += (272-this._height)/5;
} else {
this._width += (140-this._width)/10;
this._height += (150-this._height)/10;
}
trace("Работаю");
}
S1.onEnterFrame = function() {
fun();
};
2 sergwizard, думаю не стоит добавлять новый метод в класс MovieClip для решения проблемы с областями видимости. Покрайней мере мой вариант работает и без этого. =) Последний раз редактировалось Бармалей; 29.04.2006 в 16:30. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
function fun() {
X = _xmouse-S1._x;
Y = _ymouse-S1._y;
D = Math.sqrt(X*X+Y*Y);
if (D<63) {
S1._width += (272-S1._width)/5;
S1._height += (272-S1._height)/5;
} else {
S1._width += (140-S1._width)/10;
S1._height += (150-S1._height)/10;
}
trace("Работаю");
}
S1.onEnterFrame = function() {
fun();
};
Последний раз редактировалось etc; 29.04.2006 в 16:49. |
|
|||||
|
Регистрация: Aug 2005
Сообщений: 785
|
хм...
только пример который дал sergwizard работает как надо в осталтных случаях уменшается все сцена, а мне надо чтобы под this._width this._height понимались параметры мувика к которому я приписываю эту функцию. К сожелению с командой "Movieclip.prototype" я незнаком ![]()
__________________
Нано-флешер (в отставке) |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Цитата:
Можно, конечно, кое-что подправить в твоем варианте, чтобы он стал валидным для MovieClip(a) "S1". Вот таким вот образом: S2.onEnterFrame = fun;. А иначе, ты вызываешь эту функцию для _root. Ну, уж если тебе не нравится прототипы, то хотя бы напиши функцию более функционально, включи событие onEnterFrame в тело функции. Примерно так: function fun(targ) {
targ.onEnterFrame = function(){
X = _xmouse-this._x;
Y = _ymouse-this._y;
D = Math.sqrt(X*X+Y*Y);
if (D<63) {
this._width += (272-this._width)/5;
this._height += (272-this._height)/5;
} else {
this._width += (140-this._width)/10;
this._height += (150-this._height)/10;
}
}
}
fun(S1);
Так что лучше использовать прототипы, или функцию, которую я привел выше.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
По постам автора догадаться, что у него несколько мувиков будет работать с функцией, довольно сложно. Я лишь поправил предыдущий вариант.
Вариантов сделать так, чтобы функцию можно было использовать для нескольких мувиков -- масса. |
|
|||||
|
Регистрация: Aug 2005
Сообщений: 785
|
Всем спосибо за помошь
sergwizard Твой последний вариант мне очень подошел ![]()
__________________
Нано-флешер (в отставке) |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:50. |
|
|
« Предыдущая тема | Следующая тема » |
|
|