PDA

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


intruder2
30.01.2007, 13:47
Возможно ли менять Fps отдельного мувиклипа? Если возможно то как?

etc
30.01.2007, 13:53
Проигрывать его с каким-нибудь интервалом. setInterval+updateAfterEvent.

intruder2
30.01.2007, 13:56
Твой ответ мне ни о чем не говорит ))) Можно поподробнее? )

etc
30.01.2007, 13:59
http://livedocs.macromedia.com/flash/8/main/00001766.html
http://livedocs.macromedia.com/flash/8/main/00001782.html

Kikasso
30.01.2007, 13:59
что такое fps? Это сколько раз в секунду выполняется код.
Весь код в функцию, и setInterval на эту функцию.

etc
30.01.2007, 14:01
Это сколько раз в секунду выполняется код.
Неправда. Это количество кадров в секунду. «Сколько раз в секунду» будет на onEnterFrame.

intruder2
30.01.2007, 14:01
Я ньче непонимать Kikasso обьясни пожалуйста что дает setInterval. fps-да, кадры в секунду

intruder2
30.01.2007, 14:03
Чето вы меня вообще загрузили, че делать-то надо? )

CorC
30.01.2007, 15:01
setInterval вызывает функцию через указанное число миллисекунд
(хотя это не совсем так) :)

intruder2
30.01.2007, 15:04
Вы все говорите загадками! Издеваетесь?!

CorC
30.01.2007, 15:05
см определение "функция" в словаре, хотя бы Даля...
там же "миллисекунда"

это походу вы над нами издеваетесь...
кудаж проще то?

intruder2
30.01.2007, 15:14
нет, мне не нужен интервал, мне надо чтобы например есть мувиклип, допустим крутится колесо, есть две кнопки, нажимаешь на плюськ-скорость кадров в сек увеличивается на 10, жмешь минус-уменьшается на 10

CorC
30.01.2007, 15:16
ну задаешь параметр в setInterval +=10 или -=10 при нажатии
а в самов функции в setInterval пишешь переход на след кадр

lowka
30.01.2007, 15:18
class AdvancedMovie extends MovieClip {
private var _interval:Number;
private var _updateAfter:Number;
private var _fps:Number;

private var initFPS:Number;

private var broadcastMessage:Function;
public var addListener:Function;
public var removeListener:Function;

private function AdvancedMovie() {
super();
AsBroadcaster.initialize(this);
this.init(this.initFPS);
}

private function init(fps:Number):Void {
this._fps = !isNaN(fps) && fps>0? fps: 1;
this._updateAfter = Math.round(1000/this.fps);
if(this._interval){
clearInterval(this._interval);
}
this._interval = setInterval(this, "broadcastOnFPS", this._updateAfter);
}

private function broadcastOnFPS():Void {
this.broadcastMessage("onFPS");
}

public function set fps(value:Number):Void {
this.init(value);
}
public function get fps():Number {
return this._fps;
}
}

Использование (вначале нужно создать в библиотеке мувик с идентификатором AdvancedMovie + класс должен быть прописан) :

import AdvancedMovie;

var FPS:Number = 31;
/*
initFPS значение fps, которое будет у экземпляра после создатия.
*/
var test:AdvancedMovie = AdvancedMovie(this.attachMovie("AdvancedMovie","__test",0, {initFPS: FPS}));
var onFPS:Function = function():Void {
trace("test.fps="+test.fps);
}
test.addListener(this);

Вроде бы работает.
+
Все действия должны происходить в обработчике события onFPS.

intruder2
30.01.2007, 15:19
ну так некруто получится ))

intruder2
30.01.2007, 15:20
оой как все сложно... все эти новые технологии...

Kikasso
30.01.2007, 15:46
Если без класов, по-тупому, все в первый кадр пустой флешки:
//делаем колесо
wheel = createEmptyMovieClip("w", 1);
wheel._x = Stage.width/2;
wheel._y = Stage.height/2;
wheel.beginFill(0x0000CC);
wheel.moveTo(10, 10);
wheel.lineTo(10, -10);
wheel.lineTo(-10,-10);
wheel.lineTo(-10,10);
wheel.lineTo(10,10);
wheel.endFill();
//работаем с колесом
wheel.rate = 100;
function rotateIt(){
wheel._rotation += 5;
setTimeout( rotateIt, wheel.rate );
updateAfterEvent();
}
//ускорение - замедление
wheel.onPress = function(){
if( this.rate > 10) this.rate -= 5;
else this.rate = 100;
trace(this.rate);
}
// первый толчок
rotateIt();

intruder2
30.01.2007, 15:51
да нет, я просто привел в пример колесо, на самом дела там _rotation никакой роли не играет )

Kikasso
30.01.2007, 15:56
А я привел работающий код.

CorC
30.01.2007, 16:43
а сложно rotation на что то другое поменять?
тогда мы вам помочь не можем