小编Bob*_*aar的帖子

过滤数组并将数组转换为不同类型的数组

我正在使用 GameObjects 构建游戏。在我的游戏中,我将 GameObjects 与 CollidableObject 分开。所有对象(GameObjects 和 CollidableGameObjects)都被推送到一个名为 gameObjects 的数组中。

当涉及到碰撞检测时,我希望过滤 gameObjects 数组,这样我就可以只遍历 CollidableObject 类型的对象。我为此创建了以下代码:

let temp : any = this.gameObjects.filter(g => g instanceof CollidableObject);

//optional
let collidables : Array<CollidableObject> = temp;

for (let obj1 of collidables) {
    for (let obj2 of collidables){
        if (obj1 != obj2) {
            if(obj1.hasCollision(obj2)) {        
                obj1.onCollision(obj2);
                this.gameOver();
            } 
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题1:为什么不能直接过滤到CollidableObject的数组?

问题 2:有没有更简单的方法来过滤某种类型的数组?

typescript

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

使用drawImage将加载的图像淡入Canvas

这个关于交叉淡入淡出图像的问题已经给出了 Canvas 中交叉淡入淡出解决方案的答案。我正在尝试做同样的事情,唯一的区别是我正在尝试淡化运行时加载的图像。

图像加载正确,但没有可见褪色。这是因为加载图像而不起作用吗?谢谢。

超文本标记语言

 <div id="wrapper">
     <canvas id="bg1"></canvas>
     <canvas id="bg2"></canvas>
 </div>
Run Code Online (Sandbox Code Playgroud)

JS

var toggle = true;

var canvas         = document.getElementById('bg1');
    canvas.width   = $(document).width();
    canvas.height  = $(document).height();
var ctx            = canvas.getContext('2d');

var canvas2        = document.getElementById('bg2');
    canvas2.width  = $(document).width();
    canvas2.height = $(document).height();

var ctx2           = canvas2.getContext('2d');

var image = new Image();
image.src = 'download1.jpg';

var image2 = new Image();
image2.src = 'download2.jpg';

image.onload = function() {
    ctx.drawImage(image, 0, 0, 200, 100);
    ctx2.drawImage(image2, 0, 0, 200, 100);
};

$('#wrapper').click(function () …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery canvas drawimage

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

标签 统计

canvas ×1

drawimage ×1

html ×1

javascript ×1

jquery ×1

typescript ×1