javascript - 使用 Pixi.js v4 和 Typerscript (IONIC 2) 绘制圆形

标签 javascript angular typescript ionic2

我正在尝试编写一个使用 PIXI.js 绘制圆的类。

这是我的 home.ts 类

import { Component, ViewChild, ElementRef } from '@angular/core';
import { NavController } from 'ionic-angular';
import { CanvasAnimations } from '../../canvas/Canvas'

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  canvas = new CanvasAnimations();
  @ViewChild('canvasWrapper') MyCanvas:ElementRef;
  @ViewChild('homeContent') HomeContent:ElementRef;

  constructor(public navCtrl: NavController) {}

  ionViewDidLoad() {
    this.canvas.setCanvas(this.MyCanvas, window.innerWidth, window.innerHeight);
    this.canvas.generateCircle();  
  }
}

这是我的 CanvasAnimations 类

import { ElementRef } from '@angular/core';
import * as PIXI from 'pixi.js';

export class CanvasAnimations {

    // Class Properties
     stage = new PIXI.Container();

    constructor() { }

    setCanvas(canvasElement: ElementRef, windowWidth: number, windowHeight: number) {
        var renderer = PIXI.autoDetectRenderer(windowWidth, windowHeight, { backgroundColor: 0x00FF00, antialias: true });
        canvasElement.nativeElement.appendChild(renderer.view);
        renderer.render(this.stage);
    }

    generateCircle() {
        var circle = new PIXI.Graphics();
        circle.beginFill(0x000000);
        circle.drawCircle(0, 0, 100);
        circle.endFill();
        circle.x = 100;
        circle.y = 130;
        this.stage.addChild(circle);
    }
}

但是我可以看到 Canvas 正在渲染,但不是圆形,我不明白为什么..有什么建议吗?

最佳答案

过了一段时间,我自己解决了这个问题。代码没问题。但是我忘记使用renderer方法来让它画圆。

因此,我将 renderer 从方法中移开,并将其放入类实例属性中,现在一切都很好。

这是代码。

export class canvasGenerator {

    canvasStage;
    renderer;

    constructor() {}

    createCanvas(anchorElement) {
        //Create the renderer

        this.renderer = PIXI.autoDetectRenderer(window.innerWidth, window.innerHeight,  {antialias: true, backgroundColor: 0xececec, resolution: 1});
        this.renderer.view.style.position = "absolute";
        this.renderer.view.style.display = "block";

        //Add the canvas to the HTML document
        anchorElement.appendChild(this.renderer.view);
        this.canvasStage = new PIXI.Container();

        //Tell the `renderer` to `render` the `stage`
        this.renderer.render(this.canvasStage);

        this.generateCircle();
    }

    generateCircle() {
        var circle = new PIXI.Graphics();
        circle.beginFill(0x9966FF);
        circle.drawCircle(0, 0, 32);
        circle.endFill();
        circle.x = 64;
        circle.y = 130;
        this.canvasStage.addChild(circle);
        this.renderer.render(this.canvasStage);
    }
}

关于javascript - 使用 Pixi.js v4 和 Typerscript (IONIC 2) 绘制圆形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40580526/

相关文章:

angular - 如何将 Angular 4 本地主机提供给 ngrok?

typescript - 如何在 typescript 中通过 websocket 接收 float 据

javascript - JQuery - 如果子 div 没有相似或类似的数据属性,则隐藏父 div

javascript - 查询一个应用程序在另一个 Meteor js 应用程序中创建的集合

javascript - 允许两个复选框/RoR 应用程序

node.js - graphql-tag/index 没有导出成员 'gql'

angular - 如何在 Angular 2 的 ag 网格单元中使用 bootstrap popover?

javascript - 页面不在水平滚动上重绘

javascript - 尝试使用 For 函数获取一些信息

typescript - React-Typescript:这个 JSX 标签的 'children' 属性需要一个 'Element | undefined' 类型的 child ,但提供了多个 child