通过在浏览器中使用HTML5 Gamepad API,我能够正确地从4个控制器获得输入.
https://www.w3.org/TR/gamepad/
我遇到的问题是从8个控制器获取输入.这些都是Xbox 360控制器,我知道XInput API存在遗留限制.但是看看上面的HTML5 API文档,我看不到任何提及限制或API实现方式的内容.
navigator.getGamepads();
似乎在Chrome和Edge中返回了4个未定义点的数组,而FireFox中的未指定数组似乎仍然达到了4的限制.
您可以看到Windows 10验证我在"设备"面板中连接了8个控制器,并且所有控制器在浏览器中最多可单独操作4个游戏手柄.所以我在质疑游戏手柄API为何限制我 - 这是游戏手柄API或XInput的设计吗?
我在控制台中出现了这一行,仅在Firefox中,我正在开发的JavaScript应用程序:
它似乎相对无害,但我很好奇是否有任何方法可以推断它的起源,因为它必须来自某个地方,即使它声称"未知".将整个脚本包装在try/catch块中并切换Firefox的"Pause on Exception"设置不会执行任何操作,这似乎意味着它是一个特殊的例外?我有一些想法,我的代码的哪些部分可能导致它使用Working Draft API,但我更感兴趣的是它为什么报告这种方式以及我可以做些什么.Firefox不提供更多细节吗?
我有一个副作用 Observable 需要在主 Observable 完成之前解决。如果是同步操作,我可以使用tap()
运算符。异步操作有明确的等价物吗?
在以下示例中,我必须将内部值映射回我实际想要通过管道传递的外部值。我将如何避免这种映射?
const user = requestUser().pipe(
switchMap(user => {
return requestAndAssignToken(user)
.pipe(
map(token => user)
);
})
);
Run Code Online (Sandbox Code Playgroud) 在以下示例中,我收到了 TypeScript 错误 Abstract property 'name' in class 'Minigame' cannot be accessed in the constructor.
我正在努力思考如何实现这一点。我无法将具体类的名称传递到super()
调用中,因为在调用之前我无法访问对象的属性,并且我无法创建属性,static
因为抽象类无法强制执行。
这应该如何组织以保证每个Minigame
实例化一个Explanation
对象,这需要具体类的 name 属性?使名称static
(并删除抽象要求)真的是保持简单的最佳选择吗?
abstract class Minigame {
abstract name: string;
explanation: Explanation;
constructor() {
this.explanation = new Explanation(this.name);
}
}
class SomeGame extends Minigame {
name = "Some Game's Name";
constructor() {
super();
}
}
Run Code Online (Sandbox Code Playgroud) npm -v
回报 6.0.0
node -v
回报 v10.0.0
Angular CLI本地和全局版本是 6.0.0
我创建了一个新的包ng new sample
,运行npm install
没有问题,然后我尝试ng update @angular/core
或ng update @angular/cli
得到401 Unauthorized
回应.
尝试在已经安装的Angular 6存储库上运行更新似乎是多余的,但我对Angular 5存储库也有这个问题.
我没有太多可以从这个错误中继续下去,它是专门做的事情ng update
还是更有可能是它之外的一些不相关的配置?
我想从Angular Service中检索更新的对象值(借用者).我Subject
在服务中创建了一个RxJS ,以便多个组件可以订阅它并获得更新的值.
当我通过组件中提供的服务订阅Subject时,我发现onNext()
即使.next()
从BorrowerService 调用函数参数也不会被调用.
如果我在BorrowerService类中订阅,我发现它.next()
按预期工作.似乎Subject是调用的Service类.next()
和组件之间的不同实例,因此不会获得该订阅.
这是否无法理解Angular Services或Observables?如何在不知道何时调用的情况下更新服务中的值并被动地获取组件中的更改.next()
?
借款人-report.component.ts
@Component({
...
providers: [BorrowerService]
})
export class BorrowerReport {
private borrower: Borrower;
constructor(private borrowerService: BorrowerService) {
this.borrowerService.borrowerChanged.subscribe(borrower => {this.borrower = borrower});
}
}
Run Code Online (Sandbox Code Playgroud)
borrower.service.ts
@Injectable()
export class BorrowerService {
public borrowerChanged: Subject<Borrower> = new Subject<Borrower>();
//event handler
selectBorrower(borrower: Borrower) {
this.borrowerChanged.next(borrower);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将一组 div“galleryboxes”(位于另一个 div“galleryimages”内)的 ID 设置为递增增量,即。图片1、图片2等
我见过与此类似的问题,并试图了解它们,但这很困难。现在我的问题是,我从这里的第二行得到什么?什么是“画廊盒”?我是否能够像我尝试的那样像数组和标签 id 一样循环遍历它?
var galleryimages = document.getElementById("galleryimages");
var galleryboxes = galleryimages.getElementsByTagName("div");
var k = 1;
for (var i = 0; i < galleryboxes.length; i++) {
galleryboxes[i].setAttribute=("id", "picture" + k);
k++;
}
Run Code Online (Sandbox Code Playgroud)
代码似乎有效,但我认为我实际上并没有标记我想要标记的 div;我检查“picture1”的内容是什么,它显示为空(它应该充满了图片和一些文字)。
javascript ×3
angular ×2
rxjs ×2
angular-cli ×1
angular6 ×1
debugging ×1
exception ×1
firefox ×1
gallery ×1
gamepad ×1
gamepad-api ×1
html ×1
html5 ×1
observable ×1
typescript ×1