我有一个我正在用 adobe animate HTML canvas 制作的游戏。在我下面的代码中,有没有办法将所有这些组合在一起,stateItems[].stateplace1 =this.state
所以我没有 50 种不同的变体?我尝试让 state1s 成为 StateItems 的子项,但它仍然感觉非常衍生。
如果 stateItems 和 state1s 是两个不同的数组,有没有办法将 stateItems 的第一个项目(佛罗里达)调用到第一个目标(state1)等等,所以它们是“链接”的。这样的事情会起作用吗?我将如何去做?
我对javascript很陌生,所以如果有一个超级简单的解决方案,我深表歉意。
编辑:StateItems 是实际美国示例的 Animate 中的单个符号:佛罗里达州是美国的一个州,因此它是我StateItem
数组的一部分。stateplace
是放置状态的地方,stateplace
是一个符号,stateplace
1 2 和 3 是 stateplace 的实例。我只是想知道the stateplace1
StateItems 循环中是否有清理 s 的方法,所以没有 50stateItems[0].stateplace1 = this.stateplace1;
我只是想不出另一种方法将每个 StateItem 连接到其相应的 stateplace。代码按我需要的方式工作我只是不知道是否有办法清理它。我希望这能解决问题。
var stateItems = [this.florida, this.alabama, this.southcarolina]
// we apply the same code for each symbol with the for loop
for(var i = 0; i<stateItems.length; i++){
stateItems[i].on("mousedown", onMouseDown.bind(this));
stateItems[i].on("pressmove", onMouseMove.bind(this));
stateItems[i].on("pressup", onMouseUp.bind(this));
stateItems[0].stateplace1 = this.stateplace1;
stateItems[1].stateplace1 = this.stateplace2;
stateItems[2].stateplace1 = this.stateplace3;
stateItems[i].originX = stateItems[i].x;
stateItems[i].originY = stateItems[i].y;
}
// mouse down event
function onMouseDown(evt){
var item = evt.currentTarget;
item.offset = {x:0, y:0};
var pt = item.parent.globalToLocal(evt.stageX, evt.stageY);
item.offset.x = pt.x - item.x;
item.offset.y = pt.y - item.y;
item.drag = true;
}
// mouse up event
function onMouseUp(evt){
var item = evt.currentTarget;
item.drag = false;
var pt = item.localToLocal(item.dot.x, item.dot.y, item.state1.hitBox);
if(item.stateplace1.hitBox.hitTest(pt.x, pt.y) ){
item.x = item.stateplace1.x;
item.y = item.stateplace1.y;
item.mouseEnabled = false; // prevents object from being move when place correctly
}else{
item.x = item.originX;
item.y = item.originY;
}
}
function onMouseMove(evt){
var item = evt.currentTarget;
if (item.drag){
var pt = item.parent.globalToLocal(evt.stageX, evt.stageY);
item.x = pt.x - item.offset.x;
item.y = pt.y - item.offset.y;
}
// mouse move event
}