Просмотр полной версии : setInterval и его "деактивация"
Pasquill
27.03.2009, 02:56
подскажите, плиз
хочу что бы при нажатии на кнопку функция выполнялась не один раз, а все время до отжатия кнопки
есть код :
num=1900;
btn.onPress=function() {
function moveUp():Void {
num = num+1;
fill = num;
} var intervalID = setInterval(moveUp, 300);
}
как остановить выполнение функции moveUp? а то она выполняется и после отжатия и после RollOut...
или может есть другой более рациональный способ реализовать задачу?
var num:Number = 1900;
var intervalID:Number;
function moveUp ():Void {
num = num + 1;
fill = num;
}
btn.onPress = function () {
intervalID = setInterval (this, "moveUp", 300);
};
btn.onRelease = function () {
clearInterval (intervalID);
};
btn.onReleaseOutside = btn.onRelease;
Pasquill
27.03.2009, 04:08
clearInterval не срабатывает, иначе бы не было вопроса на форуме =(
Flash 8, AS2 ...
Попробуйте этот код с чистого листа
var btn:MovieClip = this.createEmptyMovieClip ("mc", this.getNextHighestDepth ());
btn.beginFill (0);
btn.lineTo (100, 0);
btn.lineTo (100, 100);
btn.lineTo (0, 100);
btn.lineTo (0, 0);
btn.endFill ();
var num:Number = 1900;
var intervalID:Number;
var test:Number = 0;
function moveUp (t:Number):Void {
num = num + 1;
trace (t + " : " + num);
}
btn.onPress = function () {
intervalID = setInterval (this._parent, "moveUp", 300, test);
test++;
};
btn.onRelease = function () {
clearInterval (intervalID);
};
btn.onReleaseOutside = btn.onRelease;
Pasquill
27.03.2009, 15:32
iNils
после некоторых незначительных корекций все заработало так, как мне надо. спасибо!
похоже все дело было в том, что бы функцию moveUp вынести отдельно
А я бы сказал, что определение var intervalID надо было вынести. Переменная, определенная как локальная внутри функции, умирает после окончания выполнения функции.
Pasquill
27.03.2009, 20:54
логично
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.