小编Col*_*tru的帖子

在javascript中以毫秒为单位获得时间的更好方法?

JavaScript中是否存在使用日期对象获取时间(以毫秒为单位)的替代方法,或者至少是重用该对象的方法,而不必在每次需要获取此值时都实例化新对象?我问这个是因为我试图在JavaScript中创建一个简单的游戏引擎,并且在计算"delta frame time"时,我必须每帧创建一个新的Date对象.虽然我并不太担心这种性能影响,但我对这个对象返回的确切时间的可靠性存在一些问题.

我在动画中得到一些奇怪的"跳跃",每隔一秒左右,我不确定这是否与JavaScript的垃圾收集或更新如此之快的Date对象的限制有关.如果我将delta值设置为某个常量,那么动画如果完全平滑,那么我很确定这个"跳跃"与我得到时间的方式有关.

我能给出的唯一相关代码是我计算增量时间的方式:

prevTime = curTime;
curTime = (new Date()).getTime();
deltaTime = curTime - prevTime;
Run Code Online (Sandbox Code Playgroud)

在计算运动/动画时,我将常数值乘以增量时间.

如果没有办法通过使用Date对象来避免以毫秒为单位获取时间,那么会增加一个变量的函数(自游戏开始以来经过的时间,以毫秒为单位),并使用SetTimer函数以一定的速率调用每毫秒一次是一个有效和可靠的替代方案吗?

编辑:我现在已经在不同的浏览器中测试了我的代码,似乎这种"跳跃"实际上只在Chrome中显而易见,而不是在Firefox中.但是,如果有一种方法在两种浏览器中都有效,那仍然会很好.

javascript

132
推荐指数
4
解决办法
14万
查看次数

Java继承 - 构造函数

在为我的决赛学习期间,我在我正在研究的书中遇到了以下陈述.考虑以下代码:

class A {
    public A(int x) {   }
}

class B extends A {
    public B(int x ) {   }
}
Run Code Online (Sandbox Code Playgroud)

是否必须在类B(super(x))的构造函数中调用类A的构造函数.该书指出它不是强制性的,因为它们具有确切数量和类型的参数.但是当我在java编译器中尝试这个时,会抛出以下错误:

A类中的构造函数A不能应用于给定类型; required:int found:无参数原因:实际和形式参数列表的长度不同

java inheritance constructor

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

您是否可以限制可以上传到公共S3存储桶的最大文件大小?

我正在构建一个Web应用程序,它可以使用AWS for Browsers SDK将文件直接上传到公共S3存储桶.

我想限制可以上传的最大文件大小,虽然我可以对文件大小进行客户端验证,但纯客户端解决方案不是很健壮,我想添加一个服务器端验证也是如此.是否可以使用IAM角色为"S3:PutObject"操作执行此操作?

amazon-s3 amazon-web-services amazon-iam

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

GLSL break命令

目前我正在学习如何在GLSL中为我正在研究的游戏引擎创建着色器,我对这个令我困惑的语言有疑问.我已经了解到,在低于3.0的着色器版本中,您不能在循环条件下使用统一变量.例如,以下代码不适用于早于3.0的着色器版本.

for (int i = 0; i < uNumLights; i++)
{
   ...............
}
Run Code Online (Sandbox Code Playgroud)

但是不可能用具有固定迭代量的循环替换它,但是如果i(在这种情况下,i)大于uNumLights,则包含一个条件语句会破坏循环.例如:

for (int i = 0; i < MAX_LIGHTS; i++)
{
    if(i >= uNumLights)
        break;
    ..............
}
Run Code Online (Sandbox Code Playgroud)

这些不等同?后者应该使用旧版本的GLSL吗?如果是这样,这比我读过的其他技术更有效,更容易实现,比如使用不同版本的着色器来获得不同数量的灯光?
我知道这可能是一个愚蠢的问题,但我是初学者,我找不到为什么这不起作用的原因.

shader glsl

6
推荐指数
1
解决办法
5569
查看次数

用于游戏开发的JavaScript多线程

我正在考虑用纯JavaScript和html5开发游戏,而不使用任何第三方插件.我面临的问题是我找不到将游戏的不同"模块"分成单独线程的方法,如渲染作业,游戏逻辑,资产加载等.

Web Workers似乎能够将代码分成不同的线程,但它们的问题是我可以在它们之间传递有限的信息.例如,对于渲染作业,我需要传递整个"世界",包含所有实体,网格,纹理等等,以便每次更新游戏,因为工作线程无法共享内存.它可以被优化,比如仅在初始化(网格,纹理)上发送静态对象,然后仅在更新时发送对象的状态(它的世界变换),但它仍然是不可取的.

有没有办法在它们之间发送大数据或让它们共享一些对象?或者是否有完全不同的方法来实现真正的多线程?我知道使用插件/齿轮有更简单的方法来实现这一点,但我只需要使用开放式网络中可用的方法;

javascript html5 multithreading web-worker

6
推荐指数
1
解决办法
1625
查看次数

尝试加载Oracle客户端库会引发BadImageFormatException

尝试从.net连接到oracle数据库时遇到以下异常:

Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.

在经历了许多链接后,我试图通过将平台目标更改为任何CPU来克服此异常.因为它是wpf应用程序,在更改平台目标后,它会抛出以下异常:

'The invocation of the constructor on type 'SSC_GIP_UI.MainWindow' that matches the specified binding constraints threw an exception.' Line number '3' and line position '9'.

但它运行平台目标x86没有抛出上述异常,但它抛出BadImageFormatException.

我正在工作的环境是:Windows server 2008,
.net framework 4.0,oracle 11g(64位)

谁能告诉我怎么解决?

.net oracle wpf

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

Javascript垃圾收集暂停

我正在尝试使用WebGl在JavaScript中创建一个简单的游戏引擎,但我总体上遇到了一些不希望的JavaScript问题,我希望可以避免.除了使用JavaScript整体缺乏性能之外,我在使用WebGl进行渲染时会出现一些奇怪的暂停,这种情况会定期发生,每隔一秒左右就会发生一次.我认为这必须发生在JavaScript中的GC.无论如何最小化这些"口吃"?是否有任何我应该知道的常见做法,一种强制,至少部分垃圾收集,在我能控制的时间发生的方法?

我知道这些都是简单的问题,但我对JavaScript很新,在互联网上搜索并没有给我很多有用的信息.

javascript garbage-collection

5
推荐指数
1
解决办法
1342
查看次数

如何连接wii平衡板与android

如何连接Wii平衡板与Android?

android中是否有任何有用的库以及如何使用它?

我现在的目标是将它们连接在一起并从中接收数据.

我是Android和蓝牙开发的新手

android wii wiimote wii-balanceboard

5
推荐指数
1
解决办法
5860
查看次数

建议使用简单的x86仿真器和操作系统

作为个人学习项目,我想将现有的x86模拟器库移植到JavaScript,然后在它上面运行一个非常简单的操作系统.

我对库的唯一要求是它应该用C\C++编写,因为我想使用emscripten和asm.js将源文件编译为JavaScript.该库至少应该能够解释x86操作码; JavaScript的特定环境细节(内存,GUI,中断等)我可以自己实现.操作系统没有任何要求,只要它足够简单并且可以在仿真器上运行.

到目前为止,在我的研究中,Softx86似乎是最可行的解决方案,因为它似乎很容易移植到JavaScript(它只进行CPU仿真).我能找到的最简单的16位实模式操作系统是MikeOS,唯一的问题是它需要386处理器,Softx86无法模拟,我不确定它们是否完全兼容.

我的问题是,如果有人知道模拟器操作系统的另一种组合,它很简单,可以移植到JavaScript.

x86 operating-system emulation i386 emscripten

4
推荐指数
1
解决办法
1734
查看次数

检测具有特定 ID 的元素何时插入 DOM 中的最有效方法是什么

正如标题所示,我想检测当具有特定 id 或 CSS 类的元素插入 DOM 时的确切时间戳(并可能检测它何时被删除)。最明显的方法是通过使用document.getElementById我想要查找的元素的 id 进行调用来定期轮询文档,但这种方法不是很准确,并且如果我想要检测多个元素,则可能会非常消耗性能。

我查看了Mutation EventsMutation Observers,但据我了解,为了检测元素是否被插入或删除,我必须向根 DOM 元素添加一个监听器,如果我需要的话,这会严重影响性能每次在页面中插入或删除元素时都会执行额外的 JS。

有没有我不知道的更优化的解决方案?另外,如果我不使用外部 JS 库,甚至 jQuery,我会更喜欢。

javascript dom mutation-observers mutation-events

4
推荐指数
1
解决办法
890
查看次数

向量的奇怪问题

对于stl向量我有一个非常奇怪的问题,当我调用擦除方法时,如果有任何意义,则会为正确的对象调用错误的析构函数.
我的代码看起来像这样:

 for(vector<Category>::iterator iter = this->children.begin(); iter != this->children.end(); iter++)
    {
        if((*iter).item == item)
        {
            this->children.erase(iter);
            return;
        }
        -------------------------
    }
Run Code Online (Sandbox Code Playgroud)

它只是一个简单的函数,它在向量中找到要搜索的项目的元素,并从向量中移除所述元素.我的问题是,当调用erase函数时,迭代器指向的对象被破坏,正在调用错误的析构函数.更具体地说,正在调用向量中最后一个元素的析构函数,而不是被删除的实际对象的析构函数.因此,内存将从错误的对象中移除,该对象仍将是向量中的元素,并且从向量中移除的实际对象仍然保持其所有内存的完整性.
对象的costructor如下所示:

Category::Category(const Category &from)
{
    this->name = from.name;
    for(vector<Category>::const_iterator iter = from.children.begin(); iter != from.children.end(); iter++)
        this->children.push_back((*iter));

    this->item = new QTreeWidgetItem;
}
Run Code Online (Sandbox Code Playgroud)

和析构函数

Category::~Category()
{
    this->children.clear();
    if(this->item != NULL)
    {
        QTreeWidgetItem* parent = this->item->parent();
        if(parent != NULL) parent->removeChild(this->item);
        delete this->item;
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ qt stl vector

2
推荐指数
1
解决办法
241
查看次数