小编Jor*_*org的帖子

鼠标位置到等高的瓷砖,包括高度

Struggeling将鼠标的位置转换为网格中tile的位置.当它完全平坦时,数学看起来像这样:

this.position.x = Math.floor(((pos.y - 240) / 24) + ((pos.x - 320) / 48));
this.position.y = Math.floor(((pos.y - 240) / 24) - ((pos.x - 320) / 48));
Run Code Online (Sandbox Code Playgroud)

其中pos.xpos.y是鼠标的位置,240和320是贴片的大小,24和48是贴片的大小.然后,位置包含我正在悬停的图块的网格坐标.这在平坦表面上工作得相当好.

http://i.stack.imgur.com/gp7qU.png

现在我正在增加高度,数学没有考虑到.

http://i.stack.imgur.com/jWGMf.png

此网格是包含噪声的2D网格,正在转换为高度和平铺类型.高度实际上只是对瓷砖"Y"位置的调整,因此可以在同一位置绘制两个瓷砖.

我不知道如何确定我在哪个瓷砖上空盘旋.

编辑:

取得了一些进展...之前,我依靠鼠标悬停事件来计算网格位置.我只是将其更改为在绘制循环本身中进行计算,并检查坐标是否在当前绘制的图块的限制范围内.创造了一些头顶的东西,不确定我是否对它非常满意,但我会确认它是否有效.

编辑2018:

我没有答案,但既然这是[sd]开放的赏金,请自己修改一些代码和演示

网格本身是简化的;

let grid = [[10,15],[12,23]];
Run Code Online (Sandbox Code Playgroud)

这导致如下绘图:

for (var i = 0; i < grid.length; i++) {
    for (var j = 0; j < grid[0].length; j++) {
        let x = (j - i) * resourceWidth;
        let y = ((i + j) …
Run Code Online (Sandbox Code Playgroud)

javascript mouse canvas noise isometric

26
推荐指数
3
解决办法
3786
查看次数

在angular2,依赖注入中进行单元测试

花费时间与角度1后开始角度为2.没有单元测试这么多,因为它更像是一个侧面项目的东西,我尝试至少开始OK ...我开始使用AngularClass中的示例,如果这样做的话区别.

app.component.ts已经挣扎,其中包含我的导航位.这里模板的相关位:

<nav class="navbar navbar-light bg-faded">
  <div class="container">
    <div class="nav navbar-nav">
      <a class="navbar-brand" [routerLink]=" ['./'] ">Navbar</a>
      <loading class="nav-item nav-link pull-xs-right" [visible]="user === null"></loading>
  </div>
</div>
</nav>

<div class="container">
  <main>
    <router-outlet></router-outlet>
</main>
</div>

<footer>
  <hr>
  <div class="container">

</div>
</footer> 
Run Code Online (Sandbox Code Playgroud)

组件本身并不多:

import { Component, ViewEncapsulation } from '@angular/core';
import { AuthService } from './_services';
import { User } from './_models';
import { Loading } from './_components';

@Component({
    selector: 'app',
    encapsulation: ViewEncapsulation.None,
    template: require('./app.component.html'),
    styles: [
        require('./app.style.css')
    ]
}) …
Run Code Online (Sandbox Code Playgroud)

unit-testing angular2-testing angular

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

sap.m.Select:以空白选择输入元素开始

使用数据聚合时sap.m.Select,始终选择第一个条目.这是SDK预览的链接.

我的应用程序的示例代码

new sap.m.Select("id-names", {
    width: '100%',
}).bindAggregation("items", "data>/trip/names", new sap.ui.core.Item({
    text: "{data>Name}"
}));
Run Code Online (Sandbox Code Playgroud)

selectedKey在构造函数上调用了一个参数,将其更改为另一个索引.我想要的是选择为空白,因为我想强迫我的用户做出选择,而不是温和地接受列表中的第一个条目.

我可以强制我的聚合中的空白条目,data>/trip/names但这会污染我的列表.

有没有更好的方法来实现这一目标?

sapui5

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

RequireJS,Shim,依赖项未正确加载

我一直在研究一个比我习惯的前端脚本更多的项目,我决定使用RequireJS来保持它的整洁.在彻夜难眠之后,我仍然遇到一些问题,其中某些依赖关系似乎在事后加载.

例如,Sammy需要jQuery才能工作.刷新我的应用程序会导致"Sammy,函数未定义"的错误.是否在加载jQuery之前执行Require函数?

需要配置:

    require.config({
        paths: {
            'jquery': 'vendor/jquery.2.min',
            'sammy': 'vendor/sammy',
        },
        shim: {
            'jquery': {
                debs: [],
                exports: '$'
            },
            'sammy': {
                debs: ['jquery'],
                exports: 'Sammy'
            }
            ...
Run Code Online (Sandbox Code Playgroud)

至于我的导航:

define([
    'jquery',
    'sammy'
], function($, Sammy) {

    return Sammy(function() {
    ...
Run Code Online (Sandbox Code Playgroud)

在大约10%的测试中,在点击Sammy功能时,应用程序会出现以下情况:

Uncaught ReferenceError: jQuery is not defined sammy.js:2120
Uncaught TypeError: undefined is not a function 
Run Code Online (Sandbox Code Playgroud)

RequireJS的工作方式使我迷惑.我错过了什么?

javascript requirejs

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

如何在具有基于路径的不同变量的angularjs中重用控制器

我需要加载Web服务.我喜欢显示,排序和过滤表的角度方式,我建立的工作很棒.现在我试图扩展这个:基于所选的链接,我想以相同的方式显示不同的数据,但是来自同一个Web服务.我试图不重复代码,所以我试图重用控制器,现在我很困惑.这意味着我想要

  • 显示不同的部分/模板网址.
  • 加载不同的url参数.
  • 在返回JSON之后映射一些内容.

什么是解决我迄今为止认为配置更多变化的最佳方法?我开始路由到变量(when('/change-requests/:businessUnit'),然后使用它来加载不同的值.但是,我如何更改模板网址?另一方面,如果我只是添加路由并加载不同的URL模板(重用控制器),如何在ajax调用中加载不同的URL?我对Angular不太熟悉,所以也许我正在咆哮错误的树...

以下是我原始代码的相关部分.还有更多,但没有一个必须改变.我已经在一些内联注释中找到了我想要更改的位,具体取决于所选的链接.

HTML:

<div ng-view></div>

路由器:

  $routeProvider.when('/change-requests/business-solutions', {
                    //this template will be different
                    templateUrl: 'js/modules/changeRequests/partials/business-solutions.html',
                    controller: ChangeRequestCtrl
                })
Run Code Online (Sandbox Code Playgroud)

(部分)控制器:

        function ChangeRequestCtrl($scope, $location) {

                $scope.loaded = false;
                $.ajax({
                    //this url will be different
                    url: url,
                    success: function(json) {
                        $scope.$apply(function() {
                            $scope.changes = json.map(function(row) {
                                //this array map will be different
                                return row;
                            });
                            $scope.loaded = true;
                        });
                    },
                    error: function() {
                        $scope.error = true;
                    }
                });
        }
Run Code Online (Sandbox Code Playgroud)

如果我没有意义,我会尽力澄清.

javascript angularjs

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

如何加载与定义模块相关的依赖关系

我做了一个库项目,以便可以在应用程序之间共享格式化程序和一些自定义控件。这很好,只是将库添加到neo-app.json文件中。现在,我可以加载我的通用格式化程序:

app / neo-app.json

{
    "path": "/resources/shared/",
    "target": {
        "type": "application",
        "name": "mysharedlibrary",
        "entryPath": "/"
    },
    "description": "My shared library"
}
Run Code Online (Sandbox Code Playgroud)

应用/控制器

sap.ui.define([
    "shared/formatters"
], function(formatters) {
//etc
Run Code Online (Sandbox Code Playgroud)

然后,我想添加一个共享的基本控制器,该控制器已经设置了格式化程序。因此,我进入共享库项目并添加一个控制器,然后添加格式化程序:

mysharedlibrary / SharedController

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "formatters" /* <----- this is the problem */
], function(Controller, formatter) {
    "use strict";

    return Controller.extend("shared.SharedController", {
        formatter: formatter
    });
});
Run Code Online (Sandbox Code Playgroud)

然后在我的应用程序中使用它:

app / Controller.js

// fails. Shared base controller can't load formatter. 
sap.ui.define([
    "shared/SharedController"
], function(Controller) {
    "use strict";

    return Controller.extend("my.app.controller.App", {

    }); …
Run Code Online (Sandbox Code Playgroud)

sapui5

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

SVG createElementNS'使用'有可能吗?

缩短,我正在使用(使用)复制广场(路径),但代码被添加到DOM,但只有1px(调试chrome).第六块用户看不到!谢谢! 代码:codepen

$(function() {
  $('#svg').css('visibility', 'visible');   
  $('#svg use').css('fill', '#fff');

  function addAnim() {
    var $first = $('#svg use:not(.anim):first');
    $first.attr('class', 'anim').css('fill', '#F15A29');    
    $first.animate({fill : '#F15A29'}, 500);
    setTimeout(function() {
      addAnim();
    }, 100);
  }

  function replicar(){
      var svg = document.getElementById('svg'); 
      var elemento= document.createElementNS('ttp://www.w3.org/2000/svg', 'use');
      elemento.setAttribute('xlink:href', '#shape');
      elemento.setAttribute('y', '62');
      elemento.setAttribute('x', '124');
      elemento.setAttribute('fill', '#3D6EB5');
      svg.appendChild(elemento);   


  addAnim();
  replicar(); 
});
Run Code Online (Sandbox Code Playgroud)

javascript animation svg

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

更新模型并不总是导致更新的视图

我正在使用SAPUI5制作应用程序,但是模型更新没有及时反映在视图中而引起问题。

一个稍微简化的场景:我创建了一个文本字段,该文本字段从模型中获取文本:

currentText = new sap.m.Text({
    width: '100%',
    text: '{/currentTrip/perHour}'
});
Run Code Online (Sandbox Code Playgroud)

然后创建一个选择并附加一个更改处理程序:

sourceSelect.attachChange(oController.changeTripSource);
Run Code Online (Sandbox Code Playgroud)

在该控制器函数内部,我正在更新视图模型:

var model = this.getView().getModel().getData();
model.currentTrip.perHour = 5;
Run Code Online (Sandbox Code Playgroud)

我使用此更改事件产生的该编号所做的所有工作(例如更新直接使用此编号的连接图)。但是,在我执行其他操作(如按下按钮或其他操作)之前,视图本身将不会反映对模型的更改。我不明白为什么会这样,或者是什么触发了UI5来检查对模型的更改值并更新视图。有人对此有解决办法吗?

javascript sapui5

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