PDA

Просмотр полной версии : onEnterFrame


sector_222
22.02.2009, 18:27
добрый день - пытаюсь сделать плавный переход из цветного в чёрнобелый
во код функции


//Процедура перехода картинки из черно-белого состояния в цветное
function saturate(image) {
this.onEnterFrame = function() {//в каждом кадре
var len:Number = default_matrix.length;
while (len--) {//модифицируем текущую матрицу поэлементно
img_matrix[len] += (default_matrix[len]-new_matrix[len])/speedInFrames;
}
filter.matrix = img_matrix;//применяем матрицу к фильтру
image.filters = [filter];// а фильтр к клипу с изображением
frame++;// инкременируем счетчик
if (frame>=speedInFrames) {
this.onEnterFrame = null;
frame = 0;
//Когда счетчик дошел до оконечного значения, обнулим его и закончим анимацию
}
};
}




но проблема скорее всего в том что функция onEnterFrame уже вызываеться мной для прокрутки мувиков,


function scrolling() {
_root.onEnterFrame = function() {
//движемся по оси у увеличивая на шаг

if((mask_mcV._xmouse > 0)&&(mask_mcV._xmouse < _root.vert_width)&&(mask_mcV._ymouse > 0)&&(mask_mcV._ymouse < _root.vert_height))
{
container_mcV._y += Math.cos(((mask_mcV._ymouse)/mask_mcV._height)*Math.PI)*5; //5 - скорость промотки
}

if (container_mcV._y>mask_mcV._y) {
container_mcV._y = mask_mcV._y;
}

if (container_mcV._y<(mask_mcV._y-(container_mcV._height-mask_mcV._height))) {
container_mcV._y = mask_mcV._y-(container_mcV._height-mask_mcV._height);
}
if((mask_mcZ._xmouse > 0)&&(mask_mcZ._xmouse < _root.goriz_width)&&(mask_mcZ._ymouse > 0)&&(mask_mcZ._ymouse < _root.goriz_height))
{
container_mcZ._x += Math.cos(((mask_mcZ._xmouse)/mask_mcZ._width)*Math.PI)*5; //5 - скорость промотки
}

if (container_mcZ._x>mask_mcZ._x) {
container_mcZ._x = mask_mcZ._x;
}

if (container_mcZ._x<(mask_mcZ._x-(container_mcZ._width-mask_mcZ._width))) {
container_mcZ._x = mask_mcZ._x-(container_mcZ._width-mask_mcZ._width);
}


};
}



т.е происходит взаимное подавление - по подиночке эти функции работают. вопрос: как с этим бороться??? :eek:

Psycho Tiger
22.02.2009, 21:34
Вызывать из onEnterFrame`а 2 функции по флагу.
||
Создавать новый мувиклип и подписываться у него.

sector_222
23.02.2009, 12:39
как это по флагу - не могли бы вы привести простой пример? - а то опыта у меня маловато.

Добавлено через 2 минуты
я правильно понял что если я переделаю код


//Процедура перехода картинки из черно-белого состояния в цветное
function saturate(image) {
NEWmc.onEnterFrame = function() {//в каждом кадре
var len:Number = default_matrix.length;
while (len--) {//модифицируем текущую матрицу поэлементно
img_matrix[len] += (default_matrix[len]-new_matrix[len])/speedInFrames;
}
filter.matrix = img_matrix;//применяем матрицу к фильтру
image.filters = [filter];// а фильтр к клипу с изображением
frame++;// инкременируем счетчик
if (frame>=speedInFrames) {
NEWmc.onEnterFrame = null;
frame = 0;
//Когда счетчик дошел до оконечного значения, обнулим его и закончим анимацию
}
};
}


и соотвественно вставлю новый мувиклип NEWmc и всё должно заработать?