如何使用 openframeworks 的 draw() 函数在 x 秒内为 x 绘制一个正方形 - ofRect (x, y, w, h)?
我知道这是可能的,因为绘图使用 fps,但我不知道如何操作以做我想做的事。
谢谢!
如何使用 openframeworks 的 draw() 函数在 x 秒内为 x 绘制一个正方形 - ofRect (x, y, w, h)?
我知道这是可能的,因为绘图使用 fps,但我不知道如何操作以做我想做的事。
谢谢!
一种选择是根据时间进行插值,而不是使用ofGetElapsedTimeMillis()的帧数
另一种是使用补间/动画插件。您可以在动画部分的ofxAddons上找到很多
你可以用最简单的方式做到这一点:
int x = ofGetElapsedTimeMillis();
int y = 10;
int w = 100;
int h = 100;
ofDrawRectangle(x, y, w, h);
请注意,在 OpenFrameworks 中您应该使用 ofDrawRectangle,它与 ofRectangle 不同。
如果您想获得更高级的动画,我建议您使用ofxTweenzor 插件,您可以在其中像这样在一段时间内操作变量:
.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);
}