Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   FAQ (http://www.flasher.ru/forum/forumdisplay.php?f=86)
-   -   [Script][AS2] Изменение FPS (http://www.flasher.ru/forum/showthread.php?t=66043)

glitchestglitch 25.06.2005 17:37

[Script][AS2] Изменение FPS
 
мульт, создавался двумя персонами, первая фпс 15, а вторая по ошибке 20. теперь надо как нить соеденить их. так вот вопрос:

можно ли вовремя мульта, менять фпс? если да, то как?

Nirth 25.06.2005 19:13

Оригинал писал C2Plus
Цитата:

...кстати говоря, менять уровни местами можно используя swapDepths. Таким образом, например, можно менять мувик в _level0 без перезагрузки остальных.

В мазиле после этого может глючить загрузка файлов, а именно созданые до замены ссылки на мувиклипы в замененом уровне или что-то вроде этого, точно не помню.

Насчет изменения фпс и размеров ничего не могу сказать, сейчас лень эксперементировать...

а то нельзя, нельзя... Можно! :)
Цитата:

да, именно _level0.swapDepths (_level1);
Эта операция меняет местами сами уровни, после нее все, что было в _level1 будет доступно через _level0 и наоборот.

Вот пример:
http://www.bsmart.ru/archives/misc/swap_levels.rar
смотреть во флеше, т.к. вывод идет через трассировку.
Цитата:

область применения, прямо скажу, специфическая... Допустим, есть набор готовых свфок, предположим, это игра или анимация, и мы хотим показывать поверх нее некий рекламный блок, однако, свфка на это не заточена и более того, не хочет работать в _level1 (или в муве _level0) по принципиальным соображениям. Разумеется, ее исходник не доступен. В таком случае мы можем сделать свой загрузчик, который подгрузит рекламу и свфку в произвольные уровни, а затем свфку поставит на удобное ей место - в _level0. Главное поставить ее в _level0 до ее инициализации, хотя тут возможны варианты.

В общем, это средство на крайняк - для исправления кривой архитектуры приложения. Однако примечательно то, что имя уровня фактически зависит от его глубины, и это просто прикольно.

С другой стороны, _level`ам тоже есть применение, хотя, наверное, все, что они позволяют сделать, возможно реализовать и на мувиклипах... Быть может, на мувиклипах даже лучше, не знаю - на мувиках в _level0 - есть родитель для всего, а на левелах общего родителя всего нет, хотя, корневой элемент можно и игнорировать при необходимости, а можно и самому создать корневой элемент... С другой стороны, _level`ы сильнее изолированы друг от друга, чем соседние мувики, которые могут найти друг друга через родителя... Это, наверное, вопрос из разряда: "Разбивать яйцо следует острой стороной или тупой?".
а теперь от себя

Есть еще второй способ менять FPS, это через setInterval(), у данного способа есть свои минусы и плюсы
минус - лишний код, и надо обрабатывать вручную
плюс - можно двигать объекты с разной скоростью

Недавно я написал класс FPS который занимаеться этим
Цитата:

Недавно я писал класс FPS
скачать можно тут, как пользоваться классами можно узнать в документации к флэшу
Код:

import orange.utils.FPS;
var boo:FPS = new FPS(2);
this.createEmptyMovieClip("ball_mc",3);
this.ball_mc.lineStyle(35,0xff0000,100);
this.ball_mc.moveTo(0,0);
this.ball_mc.lineTo(0.2,0);
this.boo.onEnterFrame = function () {
        trace("boo");
        _root.ball_mc._x ++;
        this._fps +=0.5;
}

Второй способ это через setInterval

Или использовать вариант silin'а

Код:

class FPS{
        var onEnterFrame: Function;
        private var _framerate, intID : Number;
        private var listeners:Array;
        function FPS (frameRate){
                _fps = frameRate;
                listeners=[this]
        }
        function get _fps(){
                return _framerate;
        }
        function set _fps (frameRate){
                clearInterval (intID);
                _framerate = frameRate
                intID=setInterval(this,'update',1000 / frameRate)
        }
        function stop (){
                clearInterval (intID);       
        }
        function play (){
                _fps = _framerate;       
        }
        private function update(){
                for(var i in listeners) listeners[i].onEnterFrame();
                updateAfterEvent();
        }
        function addListener(obj){
                listeners.push(obj)
        }
}



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

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