Форум 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)
-   -   fps мувиклипа (http://www.flasher.ru/forum/showthread.php?t=91325)

intruder2 30.01.2007 13:47

fps мувиклипа
 
Возможно ли менять 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.../00001766.html
http://livedocs.macromedia.com/flash.../00001782.html

Kikasso 30.01.2007 13:59

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

etc 30.01.2007 14:01

Цитата:

Сообщение от Kikasso
Это сколько раз в секунду выполняется код.

Неправда. Это количество кадров в секунду. «Сколько раз в секунду» будет на 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 на что то другое поменять?
тогда мы вам помочь не можем


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

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