绘制函数计时器openframeworks

时间:2013-05-22 08:18:31

标签: c++ openframeworks

我怎样才能使用openframeworks的draw()函数在x秒内为x绘制一个square-ofRect(x,y,w,h)?

我知道这是可能的,因为平局使用fps,但我不知道如何操纵以做我想要的。

谢谢!

2 个答案:

答案 0 :(得分:2)

一种选择是使用ofGetElapsedTimeMillis()

基于时间进行插值,而不是帧数

另一种方法是使用补间/动画插件。您可以在动画部分的ofxAddons上找到相当多的

答案 1 :(得分:0)

你可以用最简单的方式做到这一点:

int x = ofGetElapsedTimeMillis();
int y = 10;
int w = 100;
int h = 100;
ofDrawRectangle(x, y, w, h);

请注意,在OpenFrameworks中,您应该使用fromRectangle中的DrawRectangle,it is different

如果你想要获得更多的adivanced动画,我建议你使用ofxTweenzor addon,你可以在一段时间内操纵变量,如下所示:

.h文件:

#include "ofMain.h"
#include "ofxTweenzor.h"

class ofApp : public ofBaseApp{
public:
    void setup();
    void update();
    void draw();

    float x1;
};

.cpp文件:

#include "testApp.h"

void ofApp::setup() {
    Tweenzor::init();
    float initialX = 0.f;
    float finalX = 900.f;
    float delay = 0.0f;
    float durationInSeconds = 1.f;
    Tweenzor::add(&x, initialX, finalX, delay, durationInSeconds );
}
void ofApp::update(){
    Tweenzor::update( ofGetElapsedTimeMillis() );
}
void ofApp::draw() {
    int y = 10;
    int w = 100;
    int h = 100;
    ofDrawRectangle(x, y, w, h);
}