我在游戏项目中遇到上述任何问题时遇到了问题.网上已经有很多答案,我查看了所有这些答案,但它们并不适用于我或有不同的情况.这是我的情况:

这就是我的解决方案.我从改变项目名称X-Power,以Neo_Elements视觉工作室,其工作范围内.但它不会影响实际的物理文件夹.
.vcxproj文件的物理文件路径和名称是...\Neo_Elements\WorldScrollingGame\WorldScrollingGame.vcxproj.
.sln文件的物理文件路径和名称是
...\Neo_Elements\X-Power.sln
我想做的事:
将解决方案重命名为Neo_Elements(因此.sln文件将相应更改)
将文件路径更改为 ...\Neo_Elements\Neo_Elements\...
将.vcxproj文件重命名为 Neo_Elements.vcxproj
所以在更改之后,.sln文件路径和名称应该是
...\Neo_Elements\Neo_Elements.sln
.vcxproj文件路径和名称应该是 ...\Neo_Elements\Neo_Elements\Neo_Elements.vcxproj
解决方案和项目名称都将是 Neo_Elements
我做了什么:
发生了什么:
该项目不再构建并创建一堆编译错误,如下所示:
fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory
fatal error C1083: Cannot open include file: 'resource.h': No such file or directory
Run Code Online (Sandbox Code Playgroud)
我甚至没有更改物理文件夹,我不知道为什么找不到文件,丢失文件的位置对我来说似乎完全随机.(不仅是那些人\WorldScrollingGame还有更深层次的人.也有很多文件受到影响,但只找不到几个文件).当我试图将解决方案名称更改回X-Power原来时,事实证明我不能.它说"解决方案无法重命名,因为已经存在具有指定名称的解决方案文件",尽管事实上已经没有X-Power.sln了.尽管如此,我已经完全陷入困境,不得不从备份中恢复整个解决方案(或者在Windows资源管理器中手动更改.sln文件的名称).首次尝试失败.
然后我开始尝试在VS外部更改项目文件夹.
我做了什么:
我按照这个链接:关闭VS,在VS外部重命名项目主管,在文本编辑器中编辑.sln更改"X-Power", "WorldScrollingGame\WorldScrollingGame.vcxproj"为"X-Power", "Neo_Elements\WorldScrollingGame.vcxproj"(奇怪的是X-Power应该是Neo_Elements因为我在VS中编辑了项目名称,但不知何故它没有反映这里的更改,除非这个不是项目名称的反映,根据该链接绝不应该是这种情况.但我现在不想因为之前发生的事情而弄乱解决方案名称. …
我一直想知道什么是正确的位置*和&.似乎C++对于放置这些标记的位置非常宽容.例如,我似乎指针和符号放在关键字的左右两侧或两个关键字的中间,但有时令人困惑的是它们似乎意味着相同的东西,特别是当与const
void f1(structure_type const& parameter)
void f2(structure_type const ¶meter)
void f2(structure_type const *sptr);
void f2(structure_type const* sptr);
void f2(structure_type const * sptr);
Run Code Online (Sandbox Code Playgroud)
这些例子并非详尽无遗.我在声明或传递给函数时到处看到它们.他们甚至意味着同样的事情吗?但是我也看到了put的情况*会影响哪个对象被称为指针(可能*是两个关键字之间的情况).
编辑:
int const *Constant
int const * Constant // this above two seem the same to me, both as pointer to a constant value
int const* Constant // EDIT: this one seems the same as above. instead of a constant pointer
const int * Constant …Run Code Online (Sandbox Code Playgroud) 我正在制作一个动画画布网页.奇怪的是,每次我通过双击html文件启动网页时,画布几乎总是不正确的大小.我之前发过一个类似的问题:Canvas在加载时尺寸不正确但没有想要的答案.
经过大量调试后,我发现window.innerWidth这就是给我带来麻烦的.在window.innerWidth每次页面从双击启动了一个不正确的画布大小的HTML文件和结果时间返回0(有趣的画布大小是不完全为0,但有对象非常小的一个要在彼此的顶部渲染堆栈) ,但重新加载页面后(Ctrl + R)问题不再发生.我正在使用jQuery加载页面,这是我的代码:
HTML:
<body>
<canvas id="main_canvas"></canvas>
</body>
Run Code Online (Sandbox Code Playgroud)
JS:
$(document).ready(function() {
var SCREEN_WIDTH = window.innerWidth-10,
SCREEN_HEIGHT = window.innerHeight-10;
if (window.innerWidth === 0) { alert("wtf? width = 0?");}
var canvas = $('canvas')[0],
context;
init(); // use $(window).load(init) does not fix the problem
function init() {
if (canvas.getContext) {
context = canvas.getContext('2d');
animate(); // draw stuff
}
else {
alert('Your browser does not support html5 canvas');
}
}
});
Run Code Online (Sandbox Code Playgroud)
正如你在这里看到的那样,我已经$(docuemnt).ready(function())用来确保事情被加载,但是从链接http://4loc.wordpress.com/2009/04/28/documentready-vs-windowload/作者建议该文档即使所有图形尚未加载,加载HTML文档并且DOM准备就绪时就已执行ready事件. …
有一个小问题可能会不时地惹恼我(如果有其他人有同样感觉的话).每次我从任何浏览器使用视图页面源时,文本总是变得丑陋和小(我的计算机的分辨率是1920x1080,特别是17英寸,这使得字母非常小而且很难看到).有没有办法从任何浏览器更改视图页面源部分中的字体和大小?(例如Chrome)
我知道我可以通过鼠标滚动或"ctrl"+"+"来放大页面,但这不是我想解决的方式.
谢谢
我有一个很棒的游戏引擎来编译,它工作正常,直到我做了一些疯狂的调整.编译器莫名其妙地无法重新调整我的意思是Game对象并产生error C2061: syntax error : identifier 'Game',而且似乎无论我编译什么文件,错误总是指向一个名为GameDataLoader.h甚至没有与这两个文件连接的文件.通常我认为这是一个包含问题,但事实是我已经Game.h包含在每个.h文件中,包含stdafx.h之后,我已经#pragama once在它之上了.我考虑过循环包含问题,但#pragma once应该注意这一点.此外,这个包含指令工作正常,直到我更改了一些文件名和其他杂乱的东西.我清理了整个解决方案并尝试重建它但仍然没有运气(使用VS2012).我不知道显示代码是否有帮助,但这里是代码gameDataLoader.h.这不是我写的文件,但它应该正常工作.
#pragma once
#include "stdafx.h"
#include "Game\Game.h" // Game.h included
class GameDataLoader
{
public:
GameDataLoader(){}
~GameDataLoader(){}
void GameDataLoader::loadGameProperties( Game *game, map<wstring, wstring> *properties, wstring gameInitFile);
virtual void loadGame(Game *game, wstring gameInitFile) = 0;
virtual void loadGUI(Game *game, wstring guiInitFile) = 0;
virtual void loadWorld(Game *game, wstring levelInitFile) = 0;
};
Run Code Online (Sandbox Code Playgroud)
我在游戏对象的4行中确实存在错误.可能是什么问题?双重包含?圆形包含?或者没有包含某些东西和其他地方?
我有一个类型定义typedef vector<Object*> ObjList;我也有一个功能vector<BigObject*>* ObjectBox::getBigObjectList();.BigObject从...开始Object
我想要做的是得到一个vector<BigObject*>*来自getBigObjectList()并将其转换为vector<Object*>*,这是一个向上铸造,而这个类型被定义为ObjList,所以我基本上是想以CONVER变成一只ObjList类型
我试过两种方式,第一种是
ObjList *normalObjectList = (ObjList*) box->getBigObjectList();
Run Code Online (Sandbox Code Playgroud)
这个编译,我从这篇文章中读到(什么时候应该使用static_cast,dynamic_cast,const_cast和reinterpret_cast?),这说C风格的转换很少需要,因为它可以发展成为reinterpret-cast
然后我尝试使用static_cast,但我收到一个错误,说无效的类型转换
ObjList *normalObjectList = static_cast<ObjList*> (box->ClipObjectInRect());
Run Code Online (Sandbox Code Playgroud)
这也不行
ObjList *normalObjectList = static_cast<vector<Object*>*> (box->ClipObjectInRect());
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?这是因为static_cast只能用于投射直接类(如Object自身)而不是嵌套类(我只是在这里猜测)?在这种情况下我该怎么办?
c++ ×3
canvas ×1
casting ×1
const ×1
fonts ×1
html5 ×1
identifier ×1
javascript ×1
jquery ×1
pointers ×1
static-cast ×1
syntax-error ×1
typedef ×1