0

我通常编写 C# 和 Objective C,但我正在用 C++ 在 openframeworks 中编写一些东西并尝试使用 Tweenzor 对其进行动画处理,如果我在我的类中放置一个变量,它就可以正常工作,例如 h

float mainX;

cpp

mainX = 100;
Tweenzor::add(&mainX, (float)mainX, (radius * 2), 0.0f, 2.5f);

但是如果我创建一个名为 menuCircle 的类,它说它完成但没有任何变化,我感觉它正在增加一些东西,但不是类中的实例变量,知道如何通过引用来调用它吗?我尝试了 15 种不同的方法:h

class menuCircle
{
    public:
        float x;
        float y;
        float r;
        ofColor c;
        void init(float xCoord, float yCoord, float radius);
        void move(float x, float y);
        void animate(float xCoord, float yCoord, float radius);
        void didFinish(float *e);
};

cpp

void menuCircle::animate(float xCoord, float yCoord, float radius){
    Tweenzor::add(&x, x, xCoord, 0.0f, 2.5f);
    Tweenzor::addCompleteListener( Tweenzor::getTween(&x), this, &menuCircle::didFinish);
    ofLog(OF_LOG_NOTICE, "tweening");

}
void menuCircle::didFinish(float *e){
    ofLog(OF_LOG_NOTICE, "tweening finished");
}
4

1 回答 1

0

你已经从你的问题中遗漏了所有相关的代码,所以这里是你通常通过引用传递一些东西的方式:

void foo(int& bar) {
    bar = 3;
}

int x = 0;
foo(x);
// x == 3

通常的错误是放在&错误的地方。我怀疑你在address-of某种意义上使用它,但在你展示你的add原型是什么以及你如何称呼它之前,这都是猜测。

于 2013-11-12T03:30:55.807 回答