小编ssu*_*ube的帖子

如何为Android创建一个简单的2D游戏?

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

基本上我需要知道如何模仿上面的动画作为Android游戏,但我不知道这样做的必要步骤.我的问题可归纳如下:

  • 我是否需要将游戏引擎用于这种简单的游戏?
  • 或者它可以在不使用任何特定框架的情况下完成?
  • 我是否需要使用Adobe Flash等动画应用程序?
  • 制作这种游戏的必要步骤是什么?

android game-engine game-physics

47
推荐指数
2
解决办法
8万
查看次数

Windows API函数名称中的"Ex"代表什么?

在Windows API和其他各种库中,我看到了方法的多个入口点,我注意到在MyApiCall和MyApiCallEx等场景中使用了Ex缩写.

我的假设是,这代表扩展或额外可以有人请确认吗?

任何关于为什么选择Ex而不是MyApiCall2或类似的历史也会受到赞赏.

c windows api shared-libraries

45
推荐指数
2
解决办法
9399
查看次数

为什么比调用hasOwnProperty更快地获得成员?

我正在编写一个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中都大致相同?

javascript performance

25
推荐指数
1
解决办法
2208
查看次数

为什么没有适用于Windows的Xcode?

为什么Xcode不能被黑客攻击才能在Windows上运行?Xcode有其他编程方法吗?

另外,我听说iPhone应用程序是用Objective-C制作的,为什么Windows中没有这个?

谢谢

macos xcode objective-c

21
推荐指数
3
解决办法
3万
查看次数

Java中的游戏编程?

我正在研究Java中的游戏编程,看它是否可行.当谷歌搜索它时,我发现了几个旧的Java2D,Project Darkstar(Sun的MMO服务器)以及一些关于Java游戏编程的书籍.但很多信息似乎已有几年了.

所以我问的问题是,是否有人在Java SE 1.5或更高版本中创建任何游戏?

如果是这样,使用了哪些框架,是否有可用的最佳实践或库?

java

18
推荐指数
3
解决办法
2万
查看次数

ES6只读枚举,可以将值映射到名称

我想在JS中定义类似枚举的结构,但有两个要求:

  1. 值是只读的,即没有用户可以分配给它们.
  2. 值(0,1,2,...)可以映射回名称(与Java的名称方法一样)

我知道创建这样的枚举的方法通常满足一个要求或另一个要求,而不是两者.

我试过了:

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的浏览器中.

@Shmiddty建议冻结一个物体:

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)

enums ecmascript-6

17
推荐指数
2
解决办法
2万
查看次数

扩展错误没有消息或堆栈跟踪

通过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)

javascript ecmascript-6 babeljs

12
推荐指数
1
解决办法
1761
查看次数

优化托管到本机呼叫

如何加速从托管代码调用本机方法?

我正在编写一个程序,它需要能够管理任意大小的对象列表并高速检索它们的信息,并将其提供给脚本.脚本是编译的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个平台,否则我无法使用它.

c# optimization pinvoke

10
推荐指数
1
解决办法
1989
查看次数

Promise.resolve(promise)的用例是什么?

我们可以调用Promise.resolve(value)以及Promise.resolve(promise).我可以理解我应该在哪里以及如何使用第一个电话,但我不确定第二个电话.

为什么不首先简单地使用promise作为参数?我的意思是:

promise1.then()

代替:

Promise.resolve(promise1).那么()

javascript es6-promise

8
推荐指数
1
解决办法
479
查看次数

为什么Visual Studio 2010使用源代码发布网站?

我正在使用Visual Studio 2010和新的网站发布对话框.我有一个Web应用程序网站.在发布时,理论上它应该将所有代码编译成单个程序集.然而,在这两个DebugRelease,发布目录后总是包含的页面和用户控件的源代码(即使未转换的web.config文件中Web.Debug.config和Web.Release.Config).这非常令人困惑.

但是使用package/publish web项目配置和Generate Deploy package上下文菜单项,Package\PackageTmp目录是干净的.

  • 为什么Visual Studio不使用此包发布网站?
  • 预编译选项在哪里?
  • Web.config xml转换似乎不起作用,为什么Visual Studio带来这个功能让我迷惑?

publish visual-studio-2010 precompile web

7
推荐指数
1
解决办法
1万
查看次数