小编kan*_*gax的帖子

ES5中的Object.defineProperty?

我正在看到有关"新"Object.create的帖子,它使枚举可配置.但是,它依赖于Object.defineProperty方法.我找不到这种方法的跨浏览器实现.

我们是不是在为旧的Object.create写作?我不能写出在IE6/7中无效的东西.

javascript ecma262 prototypal-inheritance ecmascript-5

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

如何围绕fabric.js中的一个指定点旋转?

有谁知道如何围绕fabric.js中的一个指定点旋转?例如,

var line1 = new fabric.Line([70, 20, 70, 100], {
    stroke: "#000000",
    strokeWidth: 6
});
Run Code Online (Sandbox Code Playgroud)

我想根据它的终点(70,100)旋转它,但不是它的中心.

javascript canvas fabricjs

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

如何通过javascript或jquery将输入字段集中在Android浏览器上

我试过$('#field').focus(),在互联网上找到的任何其他方法.没有任何效果.我有一个简单的HTML来重现问题.

<!DOCTYPE html> 
<html> 
    <head> 
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                $('#field').focus();
            });
    </script>
</head> 
<body>
    <input type="text" id="field" name="field"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

请帮忙!

javascript browser jquery android focus

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

画布:矩形 - 对齐网格/对齐对象

我设法通过以下方式操作Fabric.js来添加捕捉和缩放到网格功能:

var grid = 100;
//Snap to Grid
canvas.on('object:moving', function (options) {
    options.target.set({
        left: Math.round(options.target.left / grid) * grid,
        top: Math.round(options.target.top / grid) * grid
    });
});
canvas.on('object:scaling', function (options) {
    options.target.set({
        left: Math.round(options.target.left / grid) * grid,
        top: Math.round(options.target.top / grid) * grid
    });
});
Run Code Online (Sandbox Code Playgroud)

现在我想添加对象功能的捕捉.我的想法是检查两个物体的交叉点,然后以某种方式锁定运动.我知道这不是最好的尝试,但至少它会抓住它,但不允许再移动物体了.并且:现在它没有很好地实施.请参阅:http://jsfiddle.net/gcollect/y9kyq/

我有三个问题:

  1. "snap"不能很好地工作,因为对象left属性以某种方式依赖于指针.通过拖动对象并观察我的控件输出进行复制.例如,当将红色矩形移动到左侧位置时:62,矩形不与蓝色矩形相交,仍然可以移开.如何重新加载矩形的实际左值.由于我对网格线的捕捉,它在左边:100而不是左边:62.
  2. 知道如何添加对象功能的快照吗?并禁止交集?
  3. 如何检查n个对象,而不仅仅是两个?

感谢您的意见.

PS:jsfiddle示例没有显示网格功能的比例,因为它需要在行中进行Fabric.js操作:11100

var distroundedforgrid = Math.round(dist/100)*100;      
      transform.newScaleX = Math.round((transform.original.scaleX * distroundedforgrid / lastDist)*10)/10;
      transform.newScaleY = Math.round((transform.original.scaleY * distroundedforgrid / lastDist)*10)/10;

      target.set('scaleX', transform.newScaleX);
      target.set('scaleY', transform.newScaleY);
    }
Run Code Online (Sandbox Code Playgroud)

javascript canvas fabricjs

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

在Three.js中的MeshPhongMaterial或MeshLambertMaterial上投射阴影

我觉得我在这里缺少一些简单的东西.

我使用了@WestLangley的JSFiddle,它演示了如何将阴影从一个物体投射到一个平面上.

当飞机充满颜色时,一切都按预期工作:

var groundMaterial = new THREE.MeshLambertMaterial({
  color: 0xFF0000
});
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然后我改为使用纹理代替:

var groundMaterial = new THREE.MeshLambertMaterial({
  // color: 0xFF0000,
  map: texture
});
Run Code Online (Sandbox Code Playgroud)

突然,阴影消失了:

在此输入图像描述

这发生在MeshPhongMaterialMeshLambertMaterial.

请注意,相机位置和阴影配置均未更改.一切都保持不变,但阴影消失了.

纹理应该被"告知"接收光还是其他东西?

在r61,r66,r67上测试过.

textures shadow three.js

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

如何从DOM元素类继承

我想编写一些扩展DOM节点的Javascript类(这样我就可以直接将我的类的实例插入到DOM中),但是我很难找到我应该继承的类/原型.

例如:

function myExtendedElement() {
       this.superclass = ClassA;
       this.superclass();
       delete this.superclass;
} 
Run Code Online (Sandbox Code Playgroud)

但ClassA应该是什么?

javascript inheritance dom

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

如何使用Fabric.js来做Visio,就像连接图纸一样?

我最近开始使用Fabric.js进行项目,这很棒.它为画布提供了一个抽象层,并且每个对象都有一个完整的"对象操作层/掩码".

我想更进一步,利用它来制作实际的图表,以及对象之间的连接,以及每个对象附带的更多"元数据".有人已经这样做了吗?Fabric.js是正确的选择吗?

有关如何在两个对象之间创建"连接器"对象的任何想法,这两个对象响应来自它们所附着的对象的事件?

javascript canvas fabricjs

7
推荐指数
2
解决办法
4925
查看次数

我们在Fabric.js中有canvas修改过的事件吗?

在Fabric.js中,我们有Object修改过的事件,比如object:modified.我们是否有整个画布的类似事件.

实际上我正在尝试实现撤消和重做功能.我将画布保存为JSON,如果发生了某些事情并再次加载它以进行撤消功能.

我们是否在Fabric.js中为此功能提供了更好的解决方案?

events undo-redo html5-canvas fabricjs

7
推荐指数
2
解决办法
5290
查看次数

确认ES5支持

在Javascript(CoffeeScript)前端应用程序中,哪些是最好和最简单的方法,用于通知用户他们的浏览器不受支持,而不是让用户随机点击不受支持的ES5功能时对其进行故障转移?说,我正在为现代浏览器编写一些东西,而且我想避免在我的代码使用ES5引入的功能的任何地方,旧的浏览器会遇到无数的失败......阻止不兼容的ES5浏览器?

ES5引入了一些语法功能,其中一些我相信CoffeeScript依赖,我希望我的代码以某种方式避免执行开始,如果浏览器不支持ES5,而不是调整填充程序,使用Modernizr,或检查每个CoffeeScript语法子集,以确定它是如何支持倒退.只是ES5和一个干净的"我们很遗憾你的浏览器太旧了"页面为世界其他地方.

我不希望编写测试每个ES5功能的代码,也不一定依赖http://kangax.github.io/es5-compat-table/之类的合规性表来检查浏览器类型和版本(尽管我会求助到后来,如果没有更好的选择......).

javascript coffeescript ecmascript-5

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

为什么if(键入null); for for时抛出异常(key in null); 不,它是语言设计上的缺陷吗?

从语言设计的角度来看,为什么:

if('k' in null);

TypeError: Cannot use 'in' operator to search for 'k' in null

但:

for('k' in null);

版画 undefined

在ECMAScript规范中:

它是语言设计的缺陷吗?

javascript ecmascript-5

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