小编Ash*_*ain的帖子

使用WebGL上下文阻止在画布中右键单击

我想在HTML5画布上停止鼠标右键,打开上下文菜单,因为它阻碍了鼠标控制的游戏.

我已经尝试添加oncontextmenu="return false;"canvas标签属性.这在画布使用2D上下文时有效,但在Firefox和Chrome中使用WebGL上下文时则无效.

这是由标准指定的,还是两个同时发生的浏览器错误?有没有办法解决这个问题并阻止WebGL上下文中的右键单击?

javascript html5 canvas webgl

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

如何清除WebGL中的矩形区域?

WebGL有一种clear清除整个表面的方法.清除表面特定矩形的最佳方法是什么?例如,我想将从(50,50)开始的100x100像素盒设置为全零(ARGB 0,0,0,0).我现在能想到的就是用一个写入零的着色器着色器绘制四边形.有没有更简单的方法?

javascript html5 canvas webgl

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

Chrome打包应用UDP套接字无法正常工作

我正在尝试使用Chrome Canary(目前的版本25)为一个打包的应用程序提供UDP套接字.我很困惑这里UDP示例这里参考文档冲突.

官方示例使用此行:

chrome.socket.create('udp', '127.0.0.1', 1337, { onEvent: handleDataEvent }, ...
Run Code Online (Sandbox Code Playgroud)

在Canary中使用此行会导致错误:

未捕获错误:调用表单socket.create(字符串,字符串,整数,对象,函数)与定义socket.create(字符串类型,可选对象选项,函数回调)不匹配

这并不奇怪,因为它符合函数的记录形式.(我猜这个例子已经过时了?)好的,我试试这个......

chrome.socket.create('udp', { onEvent: handleDataEvent }, ...
Run Code Online (Sandbox Code Playgroud)

金丝雀抱怨:

未捕获的错误:参数2的值无效.属性'onEvent':意外的属性.

现在我很困惑,特别是因为这个参数在引用中没有记录.所以我就这样说:

chrome.socket.create('udp', {}, ...
Run Code Online (Sandbox Code Playgroud)

现在它创建好了,但是以下调用connect...

chrome.socket.connect(socketId, function(result) ...
Run Code Online (Sandbox Code Playgroud)

......失败了:

未捕获错误:调用表单socket.connect(整数,函数)与定义socket.connect(整数socketId,字符串主机名,整数端口,函数回调)不匹配

...这并不奇怪,因为现在我的代码没有在任何地方提到主机或端口,所以我想它需要进入connect.所以我将其更改为以下形式:

chrome.socket.connect(socketId, address, port, function (result) ...
Run Code Online (Sandbox Code Playgroud)

最后我可以连接并写入套接字OK.但这并不包括阅读.

  • 有人能告诉我一个基于UDP的可以发送和接收的工作示例,所以我可以从中工作吗?
  • 我如何接收数据,因为示例的onEvent处理程序不起作用?如何在没有阻止的情况下尽快收到任何数据?

javascript sockets google-chrome google-chrome-extension google-chrome-app

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

对 Web Workers 的 Javascript 功能检测模块支持

从 Chrome 80 开始,您可以使用 来创建模块类型的工作器new Worker("worker.js", { type: "module" }),然后使用import工作器脚本中的模块功能。然而,其他浏览器仍在为此提供支持,因此使用它需要功能检测和回退。

是否有一种方便简单的方法来为工作人员提供检测模块支持?

注意在某些平台(例如 Cordova)上创建工作线程实际上并不简单,并且涉及大量变通方法,因此在纯 JS 中工作的东西将是理想的。

javascript web-worker browser-feature-detection es6-modules

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

声明没有指针的默认参数循环引用?

有没有办法在没有间接的头文件中声明这些类?

// Forwards declaration of B
class B;

class A
{
public:
    // Default parameter referring to B.  May return its parameter
    const B& func(const B& b = B());
};

class B
{
public:
    // B ctors
    B() {}
    B(const B&) {}

    // B has A as a member
    A a;
};
Run Code Online (Sandbox Code Playgroud)

Visual C++ 2008告诉我这个:

error C2514: 'B' : class has no constructors
Run Code Online (Sandbox Code Playgroud)

并指出B的前向声明("B类;"),显然不能在下面看到B的构造函数.A不能跟随B,因为B包含A作为成员.

如果必须使用间接,那么最好的方法是什么?也许在C++ 0x B中A可能是unique_ptr成员?或者也许有一个提升类纯粹是为了回避这个问题?

c++ header definition circular-reference

0
推荐指数
1
解决办法
285
查看次数

Javascript命名空间污染问题

我刚刚进入Javascript,所以我对命名空间的第一次尝试最终看起来像这样:

var myNameSpace = {};
var myNameSpaceProto = myNameSpace.__proto__;

myNameSpaceProto.SomeFunc = function()
{
    alert("SomeFunc()");
};

myNameSpaceProto.SomeObject = function()
{
    alert("SomeObject constructor");
};

var instance = new myNameSpace.SomeObject();
Run Code Online (Sandbox Code Playgroud)

我收集我可以安全地跳过原型步骤并且简单地拥有myNameSpace.SomeFunc = function...,因为只有一个myNameSpace对象实例,因此原型不会保存任何东西.

问题1: 这是正确的吗?我想从几个单独的.js文件添加到命名空间,所以这种方式似乎很方便.

问题2:使用上面的代码片段,我发现名称空间污染的奇怪副作用,如下所示SomeObject:

myNameSpaceProto.SomeObject = function()
{
    // As expected NonexistantFunc is not a member of this and returns "undefined"
    alert("typeof this.NonexistantFunc = " + typeof this.NonexistantFunc);

    // Returns 'function'. How has SomeFunc made it to this.SomeFunc?  It's supposed to be under myNameSpace.SomeFunc …
Run Code Online (Sandbox Code Playgroud)

javascript prototype namespaces

0
推荐指数
1
解决办法
1258
查看次数