小编sys*_*rpl的帖子

JavaScript是否提供高分辨率计时器?

JavaScript是否提供高分辨率计时器?

我从头开始编写了一些游戏引擎,一些是C语言,一些是Java,一些是Flash.在动画和交互式图形方面,我总是遵循相同的基本模型.使用以下设计创建基本类/结构:

void init() { /* Called once, preload essential resources here. */ }
void update(double time) { /* Updates game/animation state using high resolution time. */ }
void render(double time) { /* Updates screen graphics using high resolution time. */ }

void run()
{
    double time;
    init();
    while (!done)
    {
        time = queryTime();
        update(time);
        render(time);
    }
}
Run Code Online (Sandbox Code Playgroud)

时间对平滑动画和游戏状态计算非常重要.在本机代码Windows中,我使用QueryPerformanceCounter()QueryPerformanceFrequency()执行queryTime()每个游戏循环中的角色并将时间传递给更新/渲染.在Java中,我使用System.nanoTime().

什么是JavaScript中的等价物?也就是说,某些函数queryTime()返回具有高精度(亚毫秒)的时间值.从我所听到的,你可以用JavaScript获得的最佳准确度大约是15毫秒......这对动画来说太可怕了.

javascript animation

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

如何将原型函数添加到画布上下文中

我想为从canvas对象检索的上下文添加一些方法.例如,我想将这个原型方法添加到任何2D绘图上下文中,它将变换重置为单位矩阵:

Context.prototype.identity = function() {
  this.setTransform(1, 0, 0, 1, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)

然后每当我请求像这样的2D上下文

var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
Run Code Online (Sandbox Code Playgroud)

上下文对象自动拥有一个identity()方法,可以将任何转换重置为默认状态.我知道我可以附上我的原型方法说:

context.identity = function() { context.setTransform(1, 0, 0, 1, 0, 0); }
Run Code Online (Sandbox Code Playgroud)

但我必须每次都明确地执行此操作,并且我更喜欢"Context.prototype.identity = function"语法,因为它会自动为我附加方法.

好奇

javascript canvas

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

使用继承的具体类在C++中实现接口

我正在尝试使用抽象类在C++中定义接口类型,并使用具体类来实现它们.我遇到的问题是我不能从另一个接口继承和接口,并从基础具体类继承实现.

我的目标是能够定义可以从不太复杂的基接口继承的接口层次结构.我还希望能够通过继承具体类来扩展接口的实现(比如在下面的例子中继承自TObjectA).

这就是我所拥有的.我得到的错误是"抽象类类型的对象"TObjectB"是不允许的".我相信我知道为什么,这是因为我没有在TObjectB中实现MethodA().但我真的想要的是由基类(TObjectA)提供的实现,并且仍然具有接口层次结构(IInterfaceB继承自IInterfaceA).我也不想在我派生的concreate类中重复所有继承的接口方法.我怎样才能做到这一点?

class IInterfaceA 
{ 
public:
    virtual void MethodA() = 0; 
}; 

class IInterfaceB : IInterfaceA
{ 
public:
    virtual void MethodB() = 0; 
}; 

class TObjectA : public IInterfaceA 
{ 
public:
    void MethodA() { cout << "Method A"; }  
}; 

class TObjectB : public TObjectA, public IInterfaceB 
{ 
public:
    void MethodB() { cout << "Method B"; } 
}; 

void TestInterfaces()
{
    IInterfaceB* b = new TObjectB(); // error: object of abstract class type "TObjectB" is not allowed
    b->MethodB();
    delete …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance multiple-inheritance

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

在 Mac 上,通过 https 进行 git 克隆无法进行身份验证

在带有 Mavericks 的 mac mini 上,当我尝试从私有 git 服务器进行 git 克隆时,我遇到了身份验证问题。我已经使用同一台服务器在 Windows 和 Ubuntu 上安装和配置了几次 git,以前没有遇到过此类问题。我不知道下一步该尝试什么。

症状:

git clone https://username@git.example.com:8448/git/libs/project.git
Cloning into 'project' ...
Password for 'https://username@git.example.com:8448': [1] note
fatal: Authentication failed for 'https://username@git.example.com:8448/git/libs/project.git'
Run Code Online (Sandbox Code Playgroud)

[1] 在其他系统上我没有被要求这样做。我相信我已经将 git 客户端配置为不要求输入密码。我没有提供密码,无法出现此提示

我的 ~/.gitconfig 中有这个:

[http]
        sslKey = /Users/macuser/auth/username.key
        sslCert = /Users/macuser/auth/username.pem
        sslVerify = false
[user]
        name = username
        email = username@example.com
Run Code Online (Sandbox Code Playgroud)

我在设置客户端证书时收到以下文件,并将其放置在名为 ~/auth 的文件夹中:

用户名.cer
用户名.p12
用户名.pem
ca.cer

我运行此命令来生成密钥文件:

openssl rsa -in /Users/macuser/auth/username.pem -out /Users/macuser/auth/username.key
Run Code Online (Sandbox Code Playgroud)

然后我运行 git config 命令,例如:

git config --global http.sslKey /Users/macuser/auth/username.key …
Run Code Online (Sandbox Code Playgroud)

git macos osx-mavericks

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

无法在HKEY_LOCAL_MACHINE\Software下写入注册表

我正在编写一个应用程序,需要创建一个隐藏在登录屏幕和控制面板用户小程序中的特殊用户帐户.通过DWORD使用用户名将值0 写入下面的注册表项,我可以实现此目标:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList

问题是在Windows 7上使用UAC,无论我尝试什么,我都无法以编程方式将值写入上面的键.

我的理解是,除非您使用管理权限运行,否则在启用UAC的Windows 7上不允许写入某些键.我添加了一个应用程序清单requestedExecutionLevel level="requireAdministrator" uiAccess="false",我在程序运行时接受UAC提示,我的帐户是管理员的成员,但我仍然无法写入上述注册表项.

我还需要做什么?在任何应用程序配置中,如何在键下写入键和值HKEY_LOCAL_MACHINE\SOFTWARE

更多信息......当我的程序运行时,不会抛出任何错误,它似乎写入值.我的猜测是Windows正在虚拟化我正在编写的位置.如果我要隐藏这个特殊用户帐户,我需要写入实际位置,而不是虚拟位置.

c# registry winapi uac

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

在以不同用户身份创建流程时,您如何处理UAC?

我遇到了UAC的问题,并以不同的用户(诸如CreateProcessAsUser或CreateProcessWithLogonW之类的API)执行非交互式进程.

我的程序旨在执行以下操作:

1)创建一个新的Windows用户帐户(检查,正常工作)

2)以新用户帐户创建非交互式子进程(启用UAC时失败)

我的应用程序包括管理员清单,并在启用UAC时提升正确以完成步骤1.

但是第2步无法正确执行.我怀疑这是因为作为另一个用户执行的子进程不继承我的主进程(作为交互式用户执行)的提升权限.

我想知道如何解决这个问题.当UAC关闭时,我的程序正常工作.在这种情况下,我如何处理UAC或要求提升权利?

如果它有帮助,子进程需要作为另一个用户运行,以便为新用户帐户设置文件加密.

uac

3
推荐指数
1
解决办法
2897
查看次数