PDA

Просмотр полной версии : (slide).onEnterFrame


solo19770701
14.09.2007, 07:56
Всем доброго время суток. Опять прошу помощи у форумчан, т.к мои идеи иссякли :wacko:
Суть вопроса. Есть две кнопки и два мувика. При наведении на одну кнопку в одном мувике проигрывается анимация, а в другом идет проверка на if аргумент, если это проходит, то и во втором мувике проигрываетя анимация, если аргумент не проходит, то второй мувих игнорирует запрос кнопки. Тоже самое происходит и со второй кнопкой. Только анимация проходит во втором мувике, а в первом идет проверка на if. Это в теории, на практике все идет только один раз и после этого никакой реакции, такое ощущение что основой timeline уходит в ступор.

function hide_bubble(gone) {
if((gone).done = true){
(gone).onEnterFrame = function(){
(gone).prevFrame();
}
}
};


function show_bubble(see) {
(see).play();
};


s_btn.onRollOver = function() {
hide_bubble(o_mc);
show_bubble(s_mc);
};

o_btn.onRollOver = function() {
show_bubble(o_mc);
hide_bubble(s_mc);
}; примерно так.
В дополнение приатачиваю сам файл, там все прекрасно видно. Наставьте на путь истиный :umnik2:, как заставить мувики реагировать на кнопки?


P.S. Извиняюсь если сделал ошибки в правописании или обьяснил недоходчиво, спать ужасно хоца.

CorC
14.09.2007, 10:50
1. избавьтесь от (see) и (gone) , скобки ни к чему
2. возможно стоит не play а gotoAndPlay(1)

solo19770701
14.09.2007, 17:45
to CorC: хай. Как понять, избавься от see & gone, а как же я буду мувики прописывать? Я могу конечно жестко привязать каждую кнопку к каждому мувику, но это только пример. В основном файле кнопок много, соответственно и мувиков.
P.S. ты мне уже третий раз помогаешь, спасибо.

to CorC: до меня только что дошло, ты имеешь в виду использовать this?

CorC
17.09.2007, 10:01
Нет, надо просто убрать скобки
И еще одно, ты ставишь интервалом откат на пред кадр, и нигде это не выключаешь, надо очистить интервал, если кадр 1 (clearInterval + _currentframe)

Kikasso
17.09.2007, 10:20
function hide_bubble(mc) {
if(mc.done){
mc.onEnterFrame = function(){
mc.prevFrame();
}
}
};
function show_bubble(mc) {
mc.play();
};
У вас done - Boolean? Вы не сравнивали, а присваивали.

solo19770701
17.09.2007, 21:44
Спасибо за помощь, буду дома попробую.

to Kikasso: а по поводу Boolena, ты прав, идея была сравнитвать, а я присвоил. А я думаю, почему он у меня каждый раз проигрвается? Теперь дошло, где я ошибку допустил (я конечно ничего не говорю о других ошибках).

to CorC: по поводу clearInterval + _currentframe, ты имеешь в виду поставить это в main timeline в первый кадр как mc.clearInterval + _currentframe, я правильно понял. Дома поэксперементирую.

Еще раз спасибо за помощь.

solo19770701
18.09.2007, 02:27
to Kikasso: ну вот я и дома. Попробовал, что ты сказал, не работает :confused:
function hide_bubble(mc) {
if(mc.currentframe == 15){
mc.onEnterFrame = function(){
mc.prevFrame();
}
}
};

function show_bubble(mc) {
mc.play();
};


s_btn.onRollOver = function() {
hide_bubble(o_mc);
show_bubble(s_mc);
};

o_btn.onRollOver = function() {
show_bubble(o_mc);
hide_bubble(s_mc);
};

сделал сравнение к аргумету if, тишина. Вот и файл прилагаю.

А по поводу 1 (clearInterval + _currentframe), почитал в мануале. Как я понял их применяют для очистик интервала или времени. Но как их присабачить для EnterFrame я не понял:boredom: , обясните мне не далекому человеку, что делаю не правильно?
Спасибо за терпение.

Kikasso
18.09.2007, 02:45
s_btn.onRollOver = function() {
hide_bubble(o_mc);
show_bubble(s_mc);
};

o_btn.onRollOver = function() {
show_bubble(o_mc);
hide_bubble(s_mc);
};

function hide_bubble(mc) {
mc.onEnterFrame = goBack;
};

function show_bubble(mc) {
delete this.onEnterFrame;
mc.play();
};

function goBack(){
// trace('goBack');
if(this._currentframe > 1) this.prevFrame();
else delete this.onEnterFrame;
}

Mnilionic
18.09.2007, 02:54
function hide_bubble(mc) {
if(mc._currentframe == 15){
mc.onEnterFrame = function(){
if(mc._currentframe == 1) {
delete(mc.onEnterFrame);
return;
}
mc.prevFrame();
}
}
};

solo19770701
18.09.2007, 05:20
Спасибо всем, пошел разбираться.:victory:

solo19770701
18.09.2007, 05:30
Я тут опытным путем пришел к другому решению. Если есть желание посмотрите и скажите, если это решение рационально оправдано. Как я читал больше кол-во onEnterFrame в конце концов начинате тормозить комп(у меня вроед бы все нормально, но чем как говорится не шутят).

function walk(gone){
if(gone._currentframe>1){
gone.onEnterFrame = function(){
gone.prevFrame();
}
}
};

function slow(done){
done.onEnterFrame = function(){
done.nextFrame();
}
};


s_btn.onRollOver = function() {
slow(s_mc);
walk(o_mc);
};

o_btn.onRollOver = function() {
slow(o_mc);
walk(s_mc);
};
что я написал работает, но в плане рациональности, у меня в том что я написал есть сомненения. Критично ли не использование delete(mc.onEnterFrame)?

Спасибо за помощь.:drinks:

Kikasso
18.09.2007, 06:31
Критично ли не использование delete(mc.onEnterFrame)?
А вы trace воткните внуть обоих функций и посмотрите, как оно у вас работает.

solo19770701
18.09.2007, 20:02
СПАСИБО. После trace я все понял. У меня он постоянно крутит, а в вашем случае, он после себя "подметает".
Ай молодца :-)