PDA

Просмотр полной версии : Как заставить работать setInterval?


Niall86
08.02.2008, 20:30
Никак не могу заставить работать сетИнтервал. :mad: Функцию он запускает, а задержку не дает, хоть миллион пиши в нужном поле.
При том, что если я компилю взятый тут (http://metoart.ru/blog/2006/01/06/promezhutki_ispolnenija_ispolzovanie_setinterval_.html) пример - все работает.

Подскажите, чем его пнуть штоб пахал как надо?

iNils
08.02.2008, 20:38
Покажите то, что вы делали и у вас не получилось.

Molecula
08.02.2008, 20:39
Так написал :
setInterval(tr, 1000)
function tr(){trace('tr')}
Работает.

Так написал:
import mx.utils.Delegate;
setInterval(Delegate.create(this, tr), 1000)
function tr(){trace('tr')}
Работает.

И так написал:
import mx.utils.Delegate;
setInterval(Delegate.create(this, function(){trace('tr')}), 1000)
Работает.

Niall86
08.02.2008, 20:59
Сделать я пытался следующее. Менять картинку через заданное время. Внизу представлен код, в котором я тестировал возм-сть. всего 2 картинки есть - одна 99_1, другая 99_2. Всякие силиновские библиотеки и прочий дисторт - это все для перспективы (спасибо силину). Так вот, скомпиленый код внизу - не меняет картинку.

import com.silin.InstanceManager;
import com.silin.DistortBitmap;
import flash.display.BitmapData;
import flash.geom.*;

i=0;
function pictureLoop(){
_root.i++;
_root.i=i%2;
}

function kawaii() {
var bmp=BitmapData.loadBitmap("99_"+_root.i%2);
var pic:DistortBitmap=InstanceManager.createMC(this,DistortBitmap,bmp,5,3);
var distortPointsArr:Array=[];
distortPointsArr.push(new Point(128,52));
distortPointsArr.push(new Point(38,48));
distortPointsArr.push(new Point(38,176));
distortPointsArr.push(new Point(128,162));
pic.distort(distortPointsArr);
};

setInterval(pictureLoop(),1000);
kawaii();


Если я меняю нижние 2 строчки на

onEnterFrame = function(){
setInterval(pictureLoop(),1000);
kawaii();
}

то картинка начинает менятся с головокружительной скоростью, не обращая внимание ни на 1000, ни на 100000 =(
В чем дело? что поменять?

Molecula, твой код работает..

iNils
08.02.2008, 21:04
Ваша ошибка в том, что вместо pictureLoop пишите pictureLoop().
pictureLoop - это ссылка на функцию, которую сетИнтервал должен вызывать. А pictureLoop() - это уже результат это функции, но ваша функцию ничего не возращает и поэтому у вас фактически там написано
setInterval(undefined,1000);
вот вы и вызваете каждую секунду ничего :)

Niall86
08.02.2008, 21:44
О как! Спасибо ) Буду пытаться пробовать)