|
|
|||||
Регистрация: Aug 2005
Сообщений: 785
|
Что то не то с function()
Итак, есть код который не работает...вернее исполнение 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,784
|
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,784
|
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,784
|
По постам автора догадаться, что у него несколько мувиков будет работать с функцией, довольно сложно. Я лишь поправил предыдущий вариант.
Вариантов сделать так, чтобы функцию можно было использовать для нескольких мувиков -- масса. |
|
|||||
Регистрация: Aug 2005
Сообщений: 785
|
Всем спосибо за помошь
sergwizard Твой последний вариант мне очень подошел
__________________
Нано-флешер (в отставке) |
Часовой пояс GMT +4, время: 07:16. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|