首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SFML setPosition()

SFML setPosition()
EN

Stack Overflow用户
提问于 2015-04-24 15:10:15
回答 5查看 3.9K关注 0票数 2

我的功能有问题。我正在使用SFML库,我不知道为什么setPosition()剂量有效。但是,当我将setPosition()放在函数调用下时,它工作正常。有什么建议吗?

代码语言:javascript
复制
void foodRandPos(Sprite spriteFood,  int blockDimensionXY, int foodDimensionXY, int windowSizeX, int windowSizeY ){

int frameWidth = (windowSizeX - (2 * blockDimensionXY) ) / blockDimensionXY;
int frameHeight = (windowSizeY - (2 * blockDimensionXY) ) / blockDimensionXY;
int foodRandPosX = ( ( (rand()%frameWidth) + 1) * foodDimensionXY);
int foodRandPosY = (( (rand()% frameHeight) + 1) * foodDimensionXY);
spriteFood.setPosition((float) foodRandPosX + 300, (float) foodRandPosY);}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-04-24 15:16:54

您希望通过引用将Sprite传递到函数中。您正在将其复制到代码中,并且setPosition调用正在移动副本。

将函数签名更改为

代码语言:javascript
复制
void foodRandPos(Sprite & spriteFood,  int  ... ){
票数 3
EN

Stack Overflow用户

发布于 2015-05-13 16:55:31

如果不想将值转换为浮动在setPostion()中,可以使用sf::Vector2f()。就像这样,您可以将两个参数放在这个参数中,它们将被自动转换为浮动。

票数 0
EN

Stack Overflow用户

发布于 2015-05-23 09:43:41

正如Omera提到的那样,sf::Vector2f()允许您输入两个参数,特别是(x,y)坐标,这使得它在代码中更容易实现。然后,只需将Vector2f作为要设置的位置传递。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29851108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档