- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
出于某种原因,我的循环无法正常工作。我正在尝试创建慢速输入文本,但它只是同时打印。慢速打印文本,我的意思是像角色扮演游戏的对话。
这是我的代码:
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;
}
最佳答案
您应该为每个添加的新字符重新渲染文本,而不是慢慢地复制它然后再渲染它。
(很抱歉回答很短,我没有足够的代表发表评论)。
关于c++ - SDL_Delay 在 for 循环中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33531999/
我一直在处理一个使用 SDL 的 C++ 项目,想知道从不同线程并发调用 SDL_Delay 是否安全,或者我是否需要编写一个包装器来序列化对该函数的访问。我宁愿避免任何开销,因为我需要的延迟非常小。
C++、SDL 2 我正在制作一个迪斯科模拟器,它只是循环播放图片和播放音乐。 (癫痫警告)http://imgur.com/9ePOIAw 基本上我想运行这段代码 while (isPartying
出于某种原因,我的循环无法正常工作。我正在尝试创建慢速输入文本,但它只是同时打印。慢速打印文本,我的意思是像角色扮演游戏的对话。 这是我的代码: void printToConsole(std::st
我编写的程序在每个绘制的圆圈之间都有延迟,但是当我输入 SDL_Delay(2) 时,所有东西都是黑色的大约 5 秒,然后我看到所有东西都已经画好了,但我需要从头开始看到所有东西,所以它看起来像一个动
我有一个用 C 编写的 SDL2 游戏,它大量使用动画。动画实现如下(大约): drawObject(x,y); SDL_Delay(n); clearScreen(); drawObject(x+1
我的操作系统是OS X 10.11.5,代码是用emacs+slime+sbcl 我使用命令加载了 lispbuilder-sdl: (asdf:operate 'asdf:load-op :coco
我正在编写一个 C++/SDL/OpenGL 应用程序,我遇到了一个最奇怪的错误。该游戏似乎在一个简单的可变时间步长下运行良好。但随后 FPS 开始表现异常。我发现 Sleep(1) 和 SDL_De
我是一名优秀的程序员,十分优秀!