小编Rob*_*ans的帖子

创建随机2D凹面多边形景观JavaScript

我正在用JavaScript(http://www.isogenicengine.com/demos/1.1.0/lander/)编写一个简单的月球着陆器克隆,而不是一个只有高点和低点的基本景观,我想要一个算法生成随机洞穴般的空间.给定与[0,0,1920,1200]一起使用的矩形区域,算法应该能够生成如下图所示的内容.理想情况下,洞穴区域的任何"入口"应具有设定的宽度,以便着陆器可以"进入"它.

兰德

我认为这可能是不可能的,而我可以只绘制一堆像上面那样的图像并将像素数据转换为粗糙的多边形数据,但随机生成的水平会更酷!

对于超级硬核奖励积分,能够指定有多少类似洞穴的结构将会更加令人敬畏.

算法的输出是一个点数组,每个点都是一个包含x和y属性{x:val,y:val}的对象,当你在当前点和下一个点之间顺序绘制线条时,构成多边形.

如果某人有一个类似的JavaScript实现,也会有很多帮助!

javascript algorithm math terrain

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

Sprite Sheet自动检测单个Sprite边界

给定一个这样的精灵表:

精灵表范例

我想写一种算法,可以遍历像素数据并确定每个离散子画面的边界矩形。

如果我们假设对于每个像素X,Y,我可以拉为true(像素不完全透明)或false(像素完全透明),我将如何为每个子图自动生成边界矩形?

结果数据应为具有{x,y,width,height}的矩形对象数组。

这是同一张图片,但前四个精灵的边界标记为浅蓝色:

带边框的精灵表

谁能一步一步介绍如何如上所述检测这些界限?

algorithm image image-processing

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

从客户端 JavaScript 生成的站点生成静态 HTML

我仅使用带有 JS 脚本的 index.html 生成整个网站。

JS 根据通过服务器端 API 接收到的 JSON 数据创建 HTML 内容。这在客户端效果很好,使网站加载速度和交互速度非常快,但有一个障碍......当爬虫来索引页面时,它会看到一个空白页面。

显而易见的解决方案是提供包含所有页面的静态版本的 XML 站点地图。问题是...当每个页面仅在客户端生成并且所有逻辑和模板都是客户端时,如何生成每个页面的静态版本?

这不是一个新问题...我确信任何在客户端动态生成页面的人都遇到过这个问题并解决了它,但我想在深入研究并尝试解决这个问题之前我应该​​询问开发社区。

html javascript static generator client-side

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

Google Firebase管理SDK服务帐户已过期?

我正在使用google firebase admin sdk并按照说明进行设置.我通过FCM发送消息和通知,这没有问题,但最近我注意到我们的指标显示没有通知发送到客户端设备.

看看Node.js输出,我看到:

errorInfo:
   { code: 'messaging/invalid-apns-credentials',
     message: 'Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.' },
  codePrefix: 'messaging' }
Run Code Online (Sandbox Code Playgroud)

请记住我最初使用的凭证文件正在运行,并且环境中没有任何变化.

查看文档除了提供firebase管理员sdk要求开始的json文件之外,没有任何关于令牌过期或处理任何类型的身份验证:

var admin = require("firebase-admin");

var serviceAccount = require("path/to/serviceAccountKey.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://my-app-id.firebaseio.com"
});
Run Code Online (Sandbox Code Playgroud)

如果我登录firebase控制台并检查服务帐户,我可以看到它,我唯一的选择是生成一个新的私钥(大蓝色按钮).

我应该做些什么来让凭证保持有效?更新令牌或其他什么?在FCM设置文档中没有任何地方提到它,并且它似乎意味着如果你使用官方firebase管理员sdk则不需要任何这种性质.以下是我所遵循的指南:https://firebase.google.com/docs/admin/setup

任何人都可以权衡,如果我需要添加一些额外的代码来捕获证书到期和续订?

谢谢!

firebase firebase-cloud-messaging firebase-admin

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

HTML Canvas与图像内存使用

如果我通过以下方式创建canvas元素:

var canvas = document.createElement('canvas');
Run Code Online (Sandbox Code Playgroud)

然后画上它.如果我然后保持对该画布的引用将使用更多内存,而不是将画布内容转换为数据URL并使用该数据创建图像元素并释放对画布的引用?

哪个内存消耗更少?画布元素或图像元素,两个相同的尺寸具有相同的图像数据?

memory image html5-canvas

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

JavaScript ES6在异步调用后调用"超级"

使用ECMAScript 6和类时,是否可以在异步调用完成后从扩展类方法调用超类方法?

以下是代码中问题的摘要:

class Foo {
    constructor () {

    }

    myMethod (data) {
        console.log('Data was: ', data);
    }
}

class Bar extends Foo {
    constructor () {
        super();
    }

    myMethod () {
        database.getDataForId('wth4308g40giemwfo', function (err, data) {
            super.myMethod(data);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

使用上面的类Foo.myMethod()将导致错误,因为super不再引用Foo的超类,并且在回调中未定义.

我试图在回调之前保留对super的引用,并在回调完成后在回调中使用该引用,但这似乎不起作用,例如:

myMethod () {
    var mySuper = super;

    database.getDataForId('wth4308g40giemwfo', function (err, data) {
        mySuper.myMethod(data);
    });
}
Run Code Online (Sandbox Code Playgroud)

可能吗?

javascript class ecmascript-6

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