小编Mac*_*cik的帖子

HTMLCanvasElement 上未解析的方法 captureStream

我对画布元素和方法有奇怪的情况captureStream。根据文档 HTMLCanvasElement 有一个方法captureStream。但是我的 Angular6 应用程序声称没有这样的方法。

所以这段代码不起作用:

let canvas: HTMLCanvasElement;
canvas = document.createElement('canvas');
let stream = canvas.captureStream(20);
Run Code Online (Sandbox Code Playgroud)

它在第三行失败。

此代码运行没有任何错误:

   let canvas: any;
   canvas = document.createElement('canvas');
   let stream = canvas.captureStream(20);
Run Code Online (Sandbox Code Playgroud)

这怎么可能?我 100% 确定 HTMLCanvasElement 有这个方法并且 document.createElement('canvas') 返回 HTMLCanvasElement。

html javascript html5-canvas typescript

8
推荐指数
3
解决办法
2710
查看次数

如何更新,重绘网格层而不闪烁

我的问题是如何在传单中更新我的网格层而没有一些奇怪的"眨眼"效果.

我使用Leaflet.VectorGrid在画布上显示我的geojson.问题是我想重绘我的图层,因为我的数据已更新.我使用该代码重绘图层:

tileLayer.redraw();
Run Code Online (Sandbox Code Playgroud)

当我使用此功能时,我的图层会消失一段时间,然后它会显示更改的数据.所以最后的效果很好,但问题是:

当地图"空"时,如何消除这一时刻?

我想重绘我的图层,没有这个奇怪的时刻,当几毫秒时图层清晰.

javascript leaflet

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

自定义 rxjs 运算符(缓冲区)阻止 Angular 应用程序稳定

我正在开发一个自定义 rxjs 运算符来扩展bufferTime运算符功能。BufferTime 需要时间跨度和缓冲区的最大大小(可选),但在我的情况下,我不仅需要根据时间和大小,还需要根据附加触发器(routeChange)重置缓冲区。

我创建了一个自定义运算符来处理这个问题,它需要 timeSpan、maxSize 和 trigger$,为 timeSpan 缓冲区和 size 缓冲区创建可观察量,最后将这 3 个缓冲区合并在一起并作为运算符的单个通知程序传递buffer

这是源代码:

function bufferFrom<T>(...triggers: Observable<any>[]): (source$: Observable<T>) => Observable<T[]> {
   // restart Subject used for taking control over all triggers and resetting them on emit
   const restart: Subject<void> = new ReplaySubject<void>(1);

   // function that wraps trigger with restart Observable to take control over that
   const withRestart: <R>(source: Observable<R>) => Observable<R> = <R>(source: Observable<R>) => restart.asObservable().pipe(switchMap(() => source));

   // create Observable from all triggers …
Run Code Online (Sandbox Code Playgroud)

rxjs angular

6
推荐指数
0
解决办法
271
查看次数

Angular 应用程序 + NGINX + Docker

我在 docker 上使用 nginx 服务 Angular 应用程序时遇到问题。问题仅在于我想在现场打开 SSL 时。我正在使用 Bamboo 进行部署。

这是我的 Dockerfile:

FROM node:8.6 as node
WORKDIR /app
COPY package.json /app/
COPY ssl/certificate.crt /app/
COPY ssl/ /app/ssl

RUN npm install -g @angular/cli --unsafe
RUN npm install

COPY ./ /app/
RUN ng build --prod --aot=false --env=prod

FROM nginx

RUN mkdir -p /ssl
COPY --from=node /app/ssl/ /ssl/
ADD ssl/certificate.crt /etc/nginx/certs/
ADD ssl/private.key /etc/nginx/certs/
RUN ls /etc/nginx/certs/

COPY --from=node /app/dist/ /usr/share/nginx/html

RUN ls /usr/share/nginx/html
Run Code Online (Sandbox Code Playgroud)

要运行的脚本:

docker build -t test-app .
docker run …
Run Code Online (Sandbox Code Playgroud)

nginx web docker angular

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

如何在50%的区域CSS上设置背景颜色

我想要一个div,在这个div里面必须是一个有一些颜色的字段.所以我想要div例如200px x 200px并设置背景颜色:灰色,其大小ll为100px x 100px,并从位置50px 50px开始.

请使用以下代码查看此代码段:

div{
    background-color: gray;
    background-size: 100px 100px;
    background-position: 50px 50px;
    
    min-width:200px!important;
    min-height:200px!important;
    max-width:200px!important;
    max-height:200px!important; 
      
    padding:50px;
}
Run Code Online (Sandbox Code Playgroud)
<div>some text</div>
Run Code Online (Sandbox Code Playgroud)

因此,当您看到背景颜色填充所有div的宽度和高度时.这可能使背景只填充50%吗? 在此输入图像描述

注意:红色区域应该是透明的.

html css

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

将char*分成几个变量

我有一些char数组:char char[8]其中包含两个int,前4个索引是第一个int,接下来的4个索引有第二个int.

char array[8] = {0,0,0,1,0,0,0,1};
int a = array[0-3]; // =1;  
int b = array[4-8]; // =1;
Run Code Online (Sandbox Code Playgroud)

如何将此数组转换为两个int?

可以有任何其他类型,不一定是int,但这只是一些例子:

我知道我可以将这个数组复制到两个char数组,其大小为4,然后将每个数组转换为int.但我觉得这不好,打破了干净代码的原则.

c c++ arrays

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

Threejs中可以使用GIF动画吗?

我对在 Threejs 中使用 GIF 动画感到非常困惑。谷歌上没有例子,我找不到任何关于gif的声明,它们是否支持?

我不敢相信 Threejs 对 GIF 动画有问题。实施起来真的很难吗?

我只想添加到我的图形设计师准备发射的太空火箭中。

有什么线索吗?拜托,我已经没有主意了。

three.js

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

Bamboo - Angular 4 app如何部署

如何在竹子上部署我的角度4应用程序?

我只用1. git 2.做一个简单的工作npm install .ng build

这成功通过,但我接下来要做什么?如何在服务器上部署这个,我可以从浏览器进入应用程序?

我试图在tomcat上部署它,但我没有任何战争.

我不知道该怎么办

bamboo angular

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

*ngFor 中的 Mat-Tooltips

如何动态显示和隐藏 Material Design 工具提示?我有显示工具提示 int *ngFor 的组件

<div *ngFor="let item of items" fxLayout="row">
        <mat-form-field matTooltip="{{item.comment}}">
          <input matInput>
        </mat-form-field>
</div>
Run Code Online (Sandbox Code Playgroud)

我有按钮来处理更改时显示/隐藏工具栏,但如何显示和隐藏这些工具栏?

在文档中有一个使用一个工具栏的示例:

 <button mat-raised-button (click)="tooltip.show()"> Show tooltip </button>

<span matTooltip="This is the tooltip message" #tooltip="matTooltip">
  I have a tooltip
</span>
Run Code Online (Sandbox Code Playgroud)

这很简单,但是如何处理 *ngFor 中的多个工具提示?

angular-material angular-material2 angular

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

如何从 tileLayer Leaflet 1.0 获取画布

我正在使用Leaflet.VectorGrid 插件在 Leaflet 1.0 中绘制通过 geojson-vt 切片的切片。

我想在绘图时为路径添加渐变。我在stackoverflow上找到了沿路径添加渐变的代码,但它需要一个画布。

我的问题是:如何获得对画布或其上下文 ( ctx)的引用以在其上绘制?

这是我添加 tileLayer 的代码:

var tileLayer = L.vectorGrid.slicer(data, {
        rendererFactory: L.canvas.tilee,
        vectorTileLayerStyles: {
            sliced: function(properties, zoom) {                    
                var endColor=70;       

                // var grad = ctx.createLinearGradient(begin[0], begin[1], end[0], end[1]);
                // grad.addColorStop(0, begin[2]);
                // grad.addColorStop(1, end[2]);
                // ctx.strokeStyle = grad;

                return {                        
                    stroke: true,
                    fill: true,
                    color: endColor < 20? 'red' :
                            endColor < 50? 'orange' :
                            endColor < 70? 'yellow' :
                            endColor < 100? 'green' : 'blue',/ …
Run Code Online (Sandbox Code Playgroud)

html javascript canvas leaflet

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

如何在MD选择列表Angular2中设置检查元素的最大限制

我有*ngFor一些标签的md-selection-list ,例如[sport,relax,..]

标签存储在中this.tags,所选标签存储在中this.tab

我想防止用户选择5个以上的标签。因此,如果用户选择第5个项目,则应该有一些警报,并且仅当未选中某些已选中项目时,用户才能键入其他标签。

我从这段代码开始,但是没有用。我尝试禁用列表项上的“检查”图标,然后在用户存储了<5个标签之前,不要将其添加到this.tab。问题是我无法禁用此“检查”图标。

这是代码:

clickedOnRow(row){

if(this.tab.length > 5){

  this.tags.forEach((item,index) =>{
    if(item.text == row.text){

      this.selectedList.nativeElement.children[index].children[0].children[1].classList.remove('mat-pseudo-checkbox-checked')
      this.selectedList.nativeElement.children[index].children[0].children[1].className = 'mat-pseudo-checkbox'
    }
  });

}else{
  this.tab.push(row.text);
}
}
Run Code Online (Sandbox Code Playgroud)

你怎么看待这件事?如何解决这个问题呢?也许还有其他解决方案,更容易吗?是为了这个问题吗?

谢谢你的帮助

angular-material angular2-forms angular

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

WEBRTC - 无需任何扩展的屏幕共享

我有一个简单的问题。是否有可能实现适用于大多数设备和浏览器的屏幕共享?

我在互联网上查找,发现了一些 chrome 插件,但我想在不安装任何插件或在 chrome 上设置一些实验标志的情况下进行屏幕共享。

最好的解决方案是当我可以从导航器中进行流传输时,就像我的相机捕获一样。

从相机获取视频的代码

this.navig.getUserMedia =  ( this.navig.getUserMedia || this.navig.webkitGetUserMedia || this.navig.mozGetUserMedia || this.navig.msGetUserMedia );
this.navig.getUserMedia({video: true, audio: true}, (stream) => {
        this.videoElement.nativeElement.src = window.URL.createObjectURL(stream);
        this.videoElement.nativeElement.play();
}, (error) => console.warn('video error' + error))
Run Code Online (Sandbox Code Playgroud)

所以我想要捕获屏幕的流对象。那可能吗?

我在互联网上找到了这个,但这给我带来了一些错误......

navigator.mediaDevices.getDisplayMedia({ video: true })
.then(stream => {
    // we have a stream, attach it to a feedback video element
    videoElement.srcObject = stream;
  }, error => {
    console.log("Unable to acquire screen capture", error);
  });
Run Code Online (Sandbox Code Playgroud)

javascript webrtc typescript

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