PDA

Просмотр полной версии : Не работает onRollOut


Odyssus
09.01.2008, 02:06
Привет всем. Еще один вопрос по твинам.
загружаю много картинок, которые использую в качестве кнопок, хочу, чтобы при наведении растягивались, когда уходит наведение - картинка ставала прежней. Когда быстро проводишь мышкой по мувикам, они все открываются, и не успевают вернутся в состояние, которое в событии onRollOut , не успевает, наверное.. Пробовал лочить, но не получается. Подскажите, как еще можна эту проблемму решить. Заранее спасибо.
Кусок простенького кода, как я делаю:

var mcLoader = new MovieClipLoader();
var myListener = new Object();
myListener.onLoadInit = function(but:MovieClip) {
but.onRollOver = function(){
var tween = new Tween(this, "_height", None.easeOut, this._height, 48, 0.5, true);
}
but.onRollOut = function(){
var tween1 = new Tween(this, "_height", None.easeOut, this._height, 5, 0.2, true);
}
}
mcLoader.addListener(myListener);
for(i=1;i<=10;i++){
_root.img.createEmptyMovieClip("but_"+i, 100+i);
var but = _root["but_"+i];
mcLoader.loadClip("img/w_"+i+".jpg", but);
}

MrPoma
09.01.2008, 06:02
может быть его надо удалять? (никогда не пользовался твином)

udaaff
09.01.2008, 10:14
Останавливайте предыдущий твин.

Odyssus
09.01.2008, 10:47
2udaaff, В смысле останавливать предыдущий? Он наоборот сам останавливается. Или не уловил мысли ответа...? по кнопкам всем быстро провел - они сделались высотой 48 и все!

udaaff
09.01.2008, 10:56
but.onRollOver = function () {
this.tween.stop();
this.tween = new Tween(this, "_height", None.easeOut, this._height, 48, 0.5, true);
}

but.onRollOut = but.onReleaseOutside = function () {
this.tween.stop();
this.tween = new Tween(this, "_height", None.easeOut, this._height, 15, 0.2, true);
}

Odyssus
09.01.2008, 11:00
Спс, за код, не помогает...

udaaff
09.01.2008, 11:03
Всё помогает. Покажите измененный код.

Odyssus
09.01.2008, 11:11
var mcLoader = new MovieClipLoader();
var myListener = new Object();
myListener.onLoadInit = function(but:MovieClip) {
but.onRollOver = function(){
this.tween.stop();
var tween = new Tween(this, "_height", None.easeOut, this._height, 48, 0.5, true);
}
but.onRollOut = function(){
this.tween1.stop();
var tween1 = new Tween(this, "_height", None.easeOut, this._height, 5, 0.2, true);
}
}
mcLoader.addListener(myListener);
for(i=1;i<=10;i++){
_root.img.createEmptyMovieClip("but_"+i, 100+i);
var but = _root["but_"+i];
mcLoader.loadClip("img/w_"+i+".jpg", but);
}

udaaff
09.01.2008, 11:17
Скопипастите мой код, вместо своего и все заработает.

Odyssus
09.01.2008, 11:30
2udaaff, спс!!!
Действительно заработало :).
Там надо имена одинаковые давать при over и out - this.tween?

nyctota
09.01.2008, 13:01
Там просто нужно _предыдущий_ твин останавливать, а у вас останавливается тот, который в следующей строке только запускается.
А одинаковые имена вообще шикарно решают эту проблему.