SDL_Delay未在循环中工作
SDL_Delay not working in for loop
由于某些原因,我的循环无法工作。我试图创建慢速打字的文本,但它只是同时打印。我所说的慢打印文本,是指像RPG的对话。
这是我的代码:
void printToConsole(std::string message, std::string &text){
for(int i = 0; i < message.length(); i++){
text += message[i];
SDL_Delay(30);
}
}
如果需要,这里是我的完整代码:
#include<iostream>
#include<SDL.h>
#include<string>
#include<SDL_ttf.h>
void handleEvents(SDL_Event e, bool* quit){
while(SDL_PollEvent(&e) > 0){
if(e.type == SDL_QUIT){
*quit = true;
}
}
}
void render(SDL_Renderer* renderer, SDL_Texture* textToRender, SDL_Rect srcrect, SDL_Rect dstrect){
SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, textToRender, &srcrect, &dstrect);
SDL_RenderPresent(renderer);
}
void printToConsole(std::string message, std::string &text){
for(int i = 0; i < message.length(); i++){
text += message[i];
SDL_Delay(30);
}
}
void start(std::string &text){
printToConsole("Hey ;)", text);
}
int main( int argc, char *argv[] ) {
SDL_Init(SDL_INIT_EVERYTHING);
TTF_Init();
SDL_Window* window = SDL_CreateWindow("Game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 600, 600, SDL_RENDERER_ACCELERATED);
SDL_Renderer* renderer = SDL_CreateRenderer(window, 0, 0);
std::string text; //This is the text that has been rendered.
bool quit = false;
SDL_Event e;
TTF_Font* font = TTF_OpenFont("Hack-Regular.ttf", 28);
SDL_Color color = {255, 255, 255};
SDL_Surface* textSurface;
SDL_Texture* textTexture;
SDL_Rect srcrect;
SDL_Rect dstrect;
srcrect.x = 0;
srcrect.y = 0;
srcrect.w = 100;
srcrect.h = 32;
dstrect.x = 10;
dstrect.y = 10;
dstrect.w = 100;
dstrect.h = 32;
while(!quit){
handleEvents(e, &quit);
render(renderer, textTexture, srcrect, dstrect);
start(text);
textSurface = TTF_RenderText_Solid(font, text.c_str(), color);
textTexture = SDL_CreateTextureFromSurface(renderer, textSurface);
}
SDL_DestroyWindow(window);
SDL_DestroyRenderer(renderer);
window = NULL;
renderer = NULL;
TTF_Quit();
SDL_Quit();
return 0;
}
您应该为添加的每个新字符重新呈现文本,而不是慢慢复制然后再呈现。
(很抱歉回答得太简短,我没有足够的代表发表评论)。
相关文章:
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 循环仅对第一行正常工作.其他行不受 for 的影响
- 当输入在带有空格的单行中给出时,cin 如何在 while 循环中工作?
- C++中循环和 C 样式数组的范围工作
- 在循环工作时,首先将两个文件读为向量,但仅次于迭代一次
- 试图让while循环工作,当输入符号而不是字符时会中断
- 循环工作时如何做到这一点?
- 有问题使循环工作与功能相结合
- 无法让 for 循环工作
- do while循环工作不正常
- c++不要循环工作
- 循环工作/不起作用,不知道为什么C++
- C++While循环工作
- c++:循环时出现TypeError,但在循环工作之前-(已修改)LinkedListClass迭代
- 循环工作不正常
- 什么代码可以使这个循环工作
- 我应该如何让我的for循环工作?for循环是全新的
- 我如何使这个循环工作
- 可以根据分配的循环工作范围
- Windows 8 APP,用数据绑定改变XAML文本框的文本.游戏循环工作线程导致问题