Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   onEnterFrame (http://www.flasher.ru/forum/showthread.php?t=121747)

sector_222 22.02.2009 18:27

onEnterFrame
 
добрый день - пытаюсь сделать плавный переход из цветного в чёрнобелый
во код функции

Код AS1/AS2:

//Процедура перехода картинки из черно-белого состояния в цветное
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 уже вызываеться мной для прокрутки мувиков,

Код AS1/AS2:

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 минуты
я правильно понял что если я переделаю код

Код AS1/AS2:

//Процедура перехода картинки из черно-белого состояния в цветное
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 и всё должно заработать?


Часовой пояс GMT +4, время: 03:29.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.