Просмотр полной версии : fps мувиклипа
intruder2
30.01.2007, 13:47
Возможно ли менять Fps отдельного мувиклипа? Если возможно то как?
Проигрывать его с каким-нибудь интервалом. setInterval+updateAfterEvent.
intruder2
30.01.2007, 13:56
Твой ответ мне ни о чем не говорит ))) Можно поподробнее? )
http://livedocs.macromedia.com/flash/8/main/00001766.html
http://livedocs.macromedia.com/flash/8/main/00001782.html
что такое fps? Это сколько раз в секунду выполняется код.
Весь код в функцию, и setInterval на эту функцию.
Это сколько раз в секунду выполняется код.
Неправда. Это количество кадров в секунду. «Сколько раз в секунду» будет на onEnterFrame.
intruder2
30.01.2007, 14:01
Я ньче непонимать Kikasso обьясни пожалуйста что дает setInterval. fps-да, кадры в секунду
intruder2
30.01.2007, 14:03
Чето вы меня вообще загрузили, че делать-то надо? )
setInterval вызывает функцию через указанное число миллисекунд
(хотя это не совсем так) :)
intruder2
30.01.2007, 15:04
Вы все говорите загадками! Издеваетесь?!
см определение "функция" в словаре, хотя бы Даля...
там же "миллисекунда"
это походу вы над нами издеваетесь...
кудаж проще то?
intruder2
30.01.2007, 15:14
нет, мне не нужен интервал, мне надо чтобы например есть мувиклип, допустим крутится колесо, есть две кнопки, нажимаешь на плюськ-скорость кадров в сек увеличивается на 10, жмешь минус-уменьшается на 10
ну задаешь параметр в setInterval +=10 или -=10 при нажатии
а в самов функции в setInterval пишешь переход на след кадр
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
оой как все сложно... все эти новые технологии...
Если без класов, по-тупому, все в первый кадр пустой флешки:
//делаем колесо
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 никакой роли не играет )
А я привел работающий код.
а сложно rotation на что то другое поменять?
тогда мы вам помочь не можем
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.