创建新精灵后 PIXI 精灵不显示

时间:2021-02-27 16:38:13

标签: javascript pixi.js

所以我是 PIXI 的新手,有一个如下所示的类来创建一个矩形并将其向下移动到屏幕上。我的意图是当 Subqueries .WhereProperty(() => products.supplierId) .In(QueryOver.Of<T>.Where(...).Select(...)) 在游戏循环中被调用时,当矩形到达底部 (game.moveDown()) 时,实例应该从顶部创建一个新矩形并再次向下移动,同时 将 OLD 矩形保留在屏幕上。

但我遇到的问题是,当创建新矩形(或旧矩形触底)时,旧矩形消失了。我怎样才能在屏幕上保留旧的矩形?我以为我已将旧矩形添加到容器(已添加到舞台)。我怀疑这与 PIXI 渲染对象的方式有关。任何帮助将不胜感激!

And here's the fiddle link

this.shape.y == ROW * WIDTH

1 个答案:

答案 0 :(得分:1)

<块引用>

但我遇到的问题是,当创建新矩形(或旧矩形触底)时,旧矩形消失了。我怎样才能在屏幕上保留旧的矩形?

那个矩形没有消失 - 只是在渲染器视图之外绘制。

看到它会使视图更大:

let app = new PIXI.Application({width: WIDTH * COL, height: WIDTH * ROW, antialias: true});

//replace with:

let app = new PIXI.Application({width: WIDTH * COL, height: WIDTH * (ROW+1), antialias: true});

只是为了澄清:

    moveDown() {
        this.shape.y += WIDTH;
        if (this.shape.y == WIDTH * ROW) {
            this.shape = new PIXI.Graphics();

this.shape = new PIXI.Graphics(); <---- 在这里你用新的 Graphics 对象替换“this.shape”变量 - 但以前的 Graphics 对象(“旧矩形”)仍然存在于内存中 - 因为仍然在“this .holder”容器。您可以观察到 this.holder 容器内的对象数量正在增长 - 在控制台中查看:console.log(this.holder.children.length)

另外,请避免像这样在每一帧上将大对象打印到控制台:

console.log(this.holder.children)

它冻结了我的浏览器 :)