我如何在JavaScript数组中优化我的代码

How can i optimize my code in a JavaScript array?

本文关键字:优化 我的 代码 数组 JavaScript      更新时间:2023-09-26

这是我的代码。我如何重构它,以便轻松地将它们放入JavaScript数组中?这是我想放入数组中的一些pic容器。

Ace = new createjs.Bitmap(loader.getResult("Ace"));
aceContainer = new createjs.Container();
aceContainer.addChild(Ace);
aceContainer.x = 90;
aceContainer.y = 148;
aceContainer.width = 276 ;
aceContainer.height = 266;
stage.addChild(aceContainer);
K = new createjs.Bitmap(loader.getResult("K"));
kContainer = new createjs.Container();
kContainer.addChild(K);
kContainer.x = 376;
kContainer.y = 148;
kContainer.width = 276 ;
kContainer.height = 266;
stage.addChild(kContainer);
Q = new createjs.Bitmap(loader.getResult("Q"));
qContainer = new createjs.Container();
qContainer.addChild(Q);
qContainer.x = 662;
qContainer.y = 148;
qContainer.width = 276 ;
qContainer.height = 266;
stage.addChild(qContainer);

类似

function doThingsPeter(s, x, y, width, height, root) {
    var bm = new createjs.Bitmap(loader.getResult(s));
    var container = new createjs.Container();
    container.addChild(bm);
    container.x = x;
    container.y = y;
    container.width = width;
    container.height = height;
    root.addChild(container);
    return container;
}
var containers = [];
containers.push(doThingsPeter('Ace', 90, 148, 276, 266, stage));
containers.push(doThingsPeter('K', 376, 148, 276, 266, stage));
containers.push(doThingsPeter('Q', 662, 148, 276, 266, stage));

也许吗?编辑:回应"关于容器命名"-我只能猜测你可能想要像

这样的东西
function doThingsPeter(s, x, y, width, height, root) {
    var bm = new createjs.Bitmap(loader.getResult(s));
    var container = new createjs.Container();
    container.addChild(bm);
    container.x = x;
    container.y = y;
    container.width = width;
    container.height = height;
    root.addChild(container);
    return container;
}
var containers = {};
containers.Ace = doThingsPeter('Ace', 90, 148, 276, 266, stage);
containers.K = doThingsPeter('K', 376, 148, 276, 266, stage);
containers.Q = doThingsPeter('Q', 662, 148, 276, 266, stage);

但它现在不是Array了

或者你想要这样:

var containers = {};
var bitmaps = {};
var arrayOfThings = [
    { target: 'Ace', x: 90, y: 148, width: 276, height: 266},
    { target: 'K', x: 376, y: 148, width: 276, height: 266},
    { target: 'Q', x: 662, y: 148, width: 276, height: 266}
];
arrayOfThings.forEach(function(thing) {
    var target = thing.target;
    var bm = bitmaps[target] = new createjs.Bitmap(loader.getResult(target));
    var container = containers[target] = new createjs.Container();
    container.addChild(bm);
    container.x = thing.x;
    container.y = thing.y;
    container.width = thing.width;
    container.height = thing.height;
    stage.addChild(container);
});

作为结果:

  • 容器。Ace将包含Ace容器
  • 位图。Ace将包含Ace位图

第四次也是最后一次尝试(再次基于注释)

function doThingsPeter(s, x, y, width, height, root) {
    var bm = new createjs.Bitmap(loader.getResult(s));
    var container = new createjs.Container();
    container.addChild(bm);
    container.x = x;
    container.y = y;
    container.width = width;
    container.height = height;
    root.addChild(container);
    return container;
}
aceContainer = doThingsPeter('Ace', 90, 148, 276, 266, stage);
kContainer = doThingsPeter('K', 376, 148, 276, 266, stage);
qContainer = doThingsPeter('Q', 662, 148, 276, 266, stage);

现在你有aceContainer, kContainer和qContainer根据你的问题