在游戏开发方面,我是一个完全新手,我需要有人指出我正确的方向.
为清楚起见,请考虑以下动画.

基本上我需要知道如何模仿上面的动画作为Android游戏,但我不知道这样做的必要步骤.我的问题可归纳如下:
在Windows API和其他各种库中,我看到了方法的多个入口点,我注意到在MyApiCall和MyApiCallEx等场景中使用了Ex缩写.
我的假设是,这代表扩展或额外可以有人请确认吗?
任何关于为什么选择Ex而不是MyApiCall2或类似的历史也会受到赞赏.
我正在编写一个JS对象,需要在字符串:函数对上执行真正基本的键值缓存.该类在客户端上运行并缓存部分编译的模板以呈现页面的一部分,因此它可能具有20-200个项目.
在实际编写类之前,我认为查看最快的缓存检索方法是个好主意.想到的选项是:
1.基本财产访问:
if (x[k] !== undefined) {
v = x[k];
}
Run Code Online (Sandbox Code Playgroud)
2.钥匙检查(自己):
if (x.hasOwnProperty(k)) {
v = x[k];
}
Run Code Online (Sandbox Code Playgroud)
3.钥匙检查(一般):
if (k in x) {
v = x[k];
}
Run Code Online (Sandbox Code Playgroud)
我假设3将是最快的(检查属性是否存在但不检索它或担心它存在的位置)并且1将是最慢的(实际获得属性,即使它没有做任何事情).
将所有这些放入jsPerf产生了一些非常奇怪的结果.在Chrome(和Chromium)和IE中,#1的速度大约是其两倍.在Firefox中,#3有一个小优势,但三者之间的性能相似.无论我是否在VM中运行都没关系,并且版本之间没有太大的变化.
我在解释这些结果时遇到了麻烦.可能#1注意到数据不会发生任何事情,因此只是在内部检查密钥,但为什么它比#3更快?为什么#3没有得到相同的优化?
是什么导致这些结果?是否有一些JIT优化我可能会对数据产生偏差?
更重要的是,为什么浏览器之间的差异如此之大,所有选项在FF中都大致相同?
为什么Xcode不能被黑客攻击才能在Windows上运行?Xcode有其他编程方法吗?
另外,我听说iPhone应用程序是用Objective-C制作的,为什么Windows中没有这个?
谢谢
我正在研究Java中的游戏编程,看它是否可行.当谷歌搜索它时,我发现了几个旧的Java2D,Project Darkstar(Sun的MMO服务器)以及一些关于Java游戏编程的书籍.但很多信息似乎已有几年了.
所以我问的问题是,是否有人在Java SE 1.5或更高版本中创建任何游戏?
如果是这样,使用了哪些框架,是否有可用的最佳实践或库?
我想在JS中定义类似枚举的结构,但有两个要求:
我知道创建这样的枚举的方法通常满足一个要求或另一个要求,而不是两者.
我试过了:
const MyEnum = {
a: 0,
b: 1,
c: 2
};
Run Code Online (Sandbox Code Playgroud)
枚举本身是常量,但值仍然是可变的,我无法有效地将值映射回名称.
在撰写一个enum打字稿时,它会输出:
var MyEnum;
(function (MyEnum) {
MyEnum[MyEnum["a"] = 0] = "a";
MyEnum[MyEnum["b"] = 1] = "b";
MyEnum[MyEnum["c"] = 2] = "c";
})(MyEnum || (MyEnum = {}));
Run Code Online (Sandbox Code Playgroud)
这可以映射两种方式,但仍然没有常量值.
我发现满足这两个要求的唯一选择是在类上使用getter:
class MyEnum {
get a() {
return 0;
}
...
}
Run Code Online (Sandbox Code Playgroud)
这种方法极大地限制了合法名称并且有很多开销,特别是在没有内联(或不能)内联getter的浏览器中.
const MyEnum = Object.freeze({
a: 0,
b: 1,
c: 2
});
Run Code Online (Sandbox Code Playgroud)
这很好地满足了常量要求,但没有提供将值映射回名称的好方法.
我可以写一个帮助器来构建反向映射,如:
function reverseEnum(enum) {
Object.keys(enum).forEach(k …Run Code Online (Sandbox Code Playgroud) 通过BabelJS运行此代码段时:
class FooError extends Error {
constructor(message) {
super(message);
}
}
let error = new FooError('foo');
console.log(error, error.message, error.stack);
Run Code Online (Sandbox Code Playgroud)
它输出
{}
Run Code Online (Sandbox Code Playgroud)
这不是我的期望.运行
error = new Error('foo');
console.log(error, error.message, error.stack);
Run Code Online (Sandbox Code Playgroud)
产生
{} foo Error: foo
at eval (eval at <anonymous> (https://babeljs.io/scripts/repl.js?t=2015-05-21T16:46:33+00:00:263:11), <anonymous>:24:9)
at REPL.evaluate (https://babeljs.io/scripts/repl.js?t=2015-05-21T16:46:33+00:00:263:36)
at REPL.compile (https://babeljs.io/scripts/repl.js?t=2015-05-21T16:46:33+00:00:210:12)
at Array.onSourceChange (https://babeljs.io/scripts/repl.js?t=2015-05-21T16:46:33+00:00:288:12)
at u (https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js:28:185)
Run Code Online (Sandbox Code Playgroud)
这正是我想从扩展错误中得到的.
我的目标是扩展Error到各种子类,并在bluebird的catch匹配中使用它们.到目前为止,这是悲惨的失败.
为什么子类没有显示消息或堆栈跟踪?
编辑: 使用Chrome的内置子类(感谢@coder)完美运行.这并不是Babel特有的,因为下面的例子(来自Babel的gitter feed上的@loganfsmyth)显示:
// Works
new (function(){
"use strict";
return class E extends Error { }
}()); …Run Code Online (Sandbox Code Playgroud) 如何加速从托管代码调用本机方法?
我正在编写一个程序,它需要能够管理任意大小的对象列表并高速检索它们的信息,并将其提供给脚本.脚本是编译的C#代码的一部分.我正在编写一个从C++(本机)DLL/SO/etc到C#(.Net或Mono)管理层的基本接口层.
现在,我一直在做一些测试,而且我发现平均来说,从托管代码PInvoking本机方法比在托管代码中完成所有这一切慢100倍(所有本机和所有托管都快速相同,供参考).
我使用的语法是:
[DllImport("test.dll")]
extern static public String test_method(String value);
String returnedValue = test_method("hello world");
Run Code Online (Sandbox Code Playgroud)
有没有办法缓存指向函数的指针,快速调用程序的一些代码,这会在加载本机库后提高速度?这样可以很好地解决问题,所以我怀疑它是否存在.:P
编辑:我没有指定,但这需要适用于Windows,Linux(至少是Ubuntu)和Mac OS X,所有这些都适用于x86和x64.否则我会使用C++/CLI接口并完成它,但除非适用于所有3个平台,否则我无法使用它.
我们可以调用Promise.resolve(value)以及Promise.resolve(promise).我可以理解我应该在哪里以及如何使用第一个电话,但我不确定第二个电话.
为什么不首先简单地使用promise作为参数?我的意思是:
promise1.then()
代替:
Promise.resolve(promise1).那么()
?
我正在使用Visual Studio 2010和新的网站发布对话框.我有一个Web应用程序网站.在发布时,理论上它应该将所有代码编译成单个程序集.然而,在这两个Debug和Release,发布目录后总是包含的页面和用户控件的源代码(即使未转换的web.config文件中Web.Debug.config和Web.Release.Config).这非常令人困惑.
但是使用package/publish web项目配置和Generate Deploy package上下文菜单项,Package\PackageTmp目录是干净的.
javascript ×3
ecmascript-6 ×2
android ×1
api ×1
babeljs ×1
c ×1
c# ×1
enums ×1
es6-promise ×1
game-engine ×1
game-physics ×1
java ×1
macos ×1
objective-c ×1
optimization ×1
performance ×1
pinvoke ×1
precompile ×1
publish ×1
web ×1
windows ×1
xcode ×1