Вход

Просмотр полной версии : как увеличить скорость мувика?


4eLLlblpckuu_KoT
21.06.2005, 12:51
Народ! Есть такой вопрос: Есть мувиклип, надо увеличить его скорость. Если я просто уменьшаю колличество фреймов, то движение получается дёргающимся, не равномерным, если увеличиваю fps то искажаются другие мувики, можно ли как нибудь увеличить колличество fps одного конкретного мувика или сделать его движение более плавным?

Nirth
21.06.2005, 13:15
Недавно я писал класс FPS (http://onorange.com/project/classes/FPS.as)
скачать можно тут, как пользоваться классами можно узнать в документации к флэшу

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

4eLLlblpckuu_KoT
21.06.2005, 18:12
а попроще никак? очень уж мудрёно получается...

Nirth
21.06.2005, 19:30
я же сказал проще через setInterval. в хелпе есть описание.
Updated: хотя где сложность не пойму, импортируй класс, и подписывай на события листенеры и дело в шляпе. тебе же не нужно копаться в классе

silin
21.06.2005, 21:48
Nirth,посмотрел твой класс, и в который раз не пойму причем/зачем здесь диспатчер
вот ты заводишь диспатчер, который по сетинтервалу вызывает некий метод объекта (у тебя он 'onEnterFrame' назывется, видимо для красивости)
почему нельзя по-простому запустить setInteval, который точно также будет вызывать упомянутый метод
нужен updateAfterEvent() добавляем, нужны листенеры - тоже не вопрос: добавляем прямо сюда..
короче, 'скрипач не нужен' (C)кин-дза-дза ,имхо
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)
}
}

Nirth
21.06.2005, 22:53
Эвент диспатчер, это маневр для разбега ;) вдруг потом я захочу добавить еще пару событий, а addListener/removeListener мне очень не нравяться, из за того что подписывают на все события разом, можно конечно написать свою версию, но тогда кода будет еще больше,
вобщем скрипач не нужен, но скрипку сохраним на всякий случай =)