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.x和pos.y是鼠标的位置,240和320是贴片的大小,24和48是贴片的大小.然后,位置包含我正在悬停的图块的网格坐标.这在平坦表面上工作得相当好.

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

此网格是包含噪声的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) 花费时间与角度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) 使用数据聚合时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但这会污染我的列表.
有没有更好的方法来实现这一目标?
我一直在研究一个比我习惯的前端脚本更多的项目,我决定使用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的工作方式使我迷惑.我错过了什么?
我需要加载Web服务.我喜欢显示,排序和过滤表的角度方式,我建立的工作很棒.现在我试图扩展这个:基于所选的链接,我想以相同的方式显示不同的数据,但是来自同一个Web服务.我试图不重复代码,所以我试图重用控制器,现在我很困惑.这意味着我想要
什么是解决我迄今为止认为配置更多变化的最佳方法?我开始路由到变量(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)
如果我没有意义,我会尽力澄清.
我做了一个库项目,以便可以在应用程序之间共享格式化程序和一些自定义控件。这很好,只是将库添加到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) 缩短,我正在使用(使用)复制广场(路径),但代码被添加到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) 我正在使用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来检查对模型的更改值并更新视图。有人对此有解决办法吗?