使用arc4random_uniform和cocos2d-x

时间:2015-07-16 09:03:29

标签: android ios random cocos2d-x arc4random

我很高兴使用自iOS以来的arc4random_uniform,以及cocos2d-x的iOS目标。

原来它不适用于Android。错误:

  

错误:'arc4random_uniform'未在此范围内声明

我怎样才能解决这个问题?

最糟糕的情况是,在编译时我会检查arc4random_uniform()是否存在,如果不存在,则使用其他方法(如旧的arc4random()...)。 我真的想避免在这里为不同的目标使用不同的代码库。

还有其他建议吗?

注意:由于cocos2d-x是“一个代码”→“许多平台”,因此将此问题委托给Android的Java代码会对此产生影响。

2 个答案:

答案 0 :(得分:2)

您可以在ios中使用的某些C ++库在Android中不可用。 不幸的是,arc4ramndom只是其中之一。

所以唯一的方法是使用stdlib的替代方法,如std::rand()或默认的随机引擎,如果你想要更多的东西。 这是一个关于如何使用std::default_random_engine获取给定间隔中的随机值的示例。

int randomValue(int from, int to) {

    std::random_device rd;
    std::default_random_engine e1(rd());
    std::uniform_int_distribution<int> uniform_dist(from, to);
    int mean = uniform_dist(e1);

    return mean;
}

答案 1 :(得分:1)

您可以使用Cocos2d本机方法生成随机数。例如CCRANDOM_0_1()生成0到1之间的随机CGFloat。