9

早上好。

我在 linux 上,使用 cocos2d-x 进行Android.

我创建了一个计算圆值的函数。

        // 圆点 updateCircle()
    // x = 迭代次数 · SamplingPeriod |-|-|-|
    // y = A · sine (2 · PI · 迭代次数 · SamplingPeriod / Period )
    int 迭代 = this->getNumberOfIterations();
    CCPoint centerPoint = this->getCenter();
    float x = centerPoint.x + this->getAmplitude() * cos( 2 * M_PI * 迭代次数 * this->getSamplingPeriod() * this->getFrequency() );
    float y = centerPoint.y + this->getAmplitude() * sin( 2 * M_PI * 迭代 * this->getSamplingPeriod() * this->getFrequency() );

    _newPoint = ccp(x, y);

        // 创建数组动作
    CCArray *myActionsArray = new CCArray(3);

    // 设置动作移动
    CCAction *actionMove1 = CCMoveTo::create(this->getSamplingPeriod(), newPoint); // 移动到下一个点
        CCAction *actionMove2 = CCCallFuncN::create(this, callfuncN_selector(GameObject::updateCircle)); // 再次调用这个函数

        // 插入对象
    myActionsArray->insertObject(actionMove1, 0);
    myActionsArray->insertObject(actionMove2, 1);

    // 创建序列
    CCAction *action = CCSequence::create(myActionsArray);

        // 设置标签
    动作->setTag(kActionMove);

    // 跑
    this->runAction(动作);

    // 设置新调用以在 SamplingFrequency ms 中放置新点
    迭代 += 1;
    静态常量 int maxIterationCycle = 1 / (this->getSamplingPeriod() * this->getFrequency());
    如果(迭代次数 >= maxIterationCycle)
    {
        迭代 = 1;
    }

    this->setNumberOfIterations(迭代);
    CCLog("texttx 迭代次数 %d/%d", 迭代次数, maxIterationCycle);

或者,我尝试过:

   
    // 设置动作移动
    CCAction *actionMove1 = CCCallFuncN::create(this, callfuncN_selector(GameObject::macroSetNewPoint));
    CCAction *actionMove2 = CCDelayTime::create(this->getSamplingPeriod());
    CCAction *actionMove3 = CCCallFuncN::create(this, callfuncN_selector(GameObject::updateCircle));

        // 设置动作移动
    CCAction *actionMove1 = CCMoveTo::create(this->getSamplingPeriod(), _newPoint);
    CCAction *actionMove2 = CCDelayTime::create(this->getSamplingPeriod());
    CCAction *actionMove3 = CCCallFuncN::create(this, callfuncN_selector(GameObject::updateCircle));

问题是我的游戏对象在圆圈中移动,但在大约 1000 次迭代后,它消失了,并在几秒钟后再次出现。我不知道发生了什么 - 分数计算正确(我认为)

也许 moveto 需要更多时间来执行?我如何计算一个数学赞助人来移动我的精灵跟随它?

4

1 回答 1

5

我已经测试了你的代码并且工作正常。请检查您是否正在从另一个回调或其他内容中更新一个点。如果数据是公开的,它可能会被代码的另一部分更新。

于 2012-08-01T09:53:32.047 回答