如何偏移 createjs 按钮助手的命中区域?
How to offset createjs button helpers' hit area?
我正在使用按钮助手来允许单击显示框和文本区域。如果您将鼠标悬停在框上,则只有大约 2/3 的框是可点击的。
并且所选区域允许在右侧框外。如何正确设置可点击区域?只是框应该是可点击的
Game Link to see example - 灰色方向框位于 link 的第二页。
self.stage.addChild(titleText);
var directionsbox = new createjs.Container();
displaybox = new createjs.Shape();
displaybox.graphics.beginFill("gray").drawRoundRect(0, 0, 550, 350, 8);
displaybox.name = "DirectionsBox";
displaybox.x = 125;
displaybox.y = 120;
var label = new createjs.Text("\n" + gameData.Description + "\n\n\nDirections \n \nThere are 3 levels to complete. \nEach level gets a bit faster. \nYour high sccore will automataly be submited to the Arcade. \n\n\nClick here to start sorting.", "bold 20px Arial", "#FFFFFF");
label.textAlign = "center";
label.lineWidth = 550;
label.y = displaybox.y;
label.x = displaybox.x + 275
directionsbox.addChild(displaybox, label);
self.stage.addChild(directionsbox);
var helper = new createjs.ButtonHelper(displaybox, "out", "over", "down", false, displaybox, "hit");
helper.y = displaybox.y;
helper.x = displaybox.x + 275
displaybox.addEventListener("click", handleClick);
function handleClick(event) {
createjs.Sound.play("click");
self.stage.removeChild(directionsbox);
StartInteraction();
}
您的 hitArea 的问题是您正在使用您的实例,因为它明确地是自己的 hitArea。 HitAreas 旨在自动定位到其内容。因为您的 displaybox
已经设置了 x/y,所以它 添加 到 hitArea 的位置,它已经相对于您的可见 displayBox 定位。
在您的示例中,您只需将 ButtonHelper 的 hitArea
参数设置为 null
。这将使 ButtonHelper 使用实际可见的内容作为 hitArea,这工作正常。如果要使用外部实例,可以克隆 DisplayBox,将其 x/y 设置为 0,然后使用它。
// Just use null
var helper = new createjs.ButtonHelper(displaybox, "out", "over", "down", false, null, "hit");
// Use a new instance
var hitbox = displayBox.clone().set({x:0, y:0});
var helper = new createjs.ButtonHelper(displaybox, "out", "over", "down", false, hitbox, "hit");
希望对您有所帮助。
我正在使用按钮助手来允许单击显示框和文本区域。如果您将鼠标悬停在框上,则只有大约 2/3 的框是可点击的。
并且所选区域允许在右侧框外。如何正确设置可点击区域?只是框应该是可点击的
Game Link to see example - 灰色方向框位于 link 的第二页。
self.stage.addChild(titleText);
var directionsbox = new createjs.Container();
displaybox = new createjs.Shape();
displaybox.graphics.beginFill("gray").drawRoundRect(0, 0, 550, 350, 8);
displaybox.name = "DirectionsBox";
displaybox.x = 125;
displaybox.y = 120;
var label = new createjs.Text("\n" + gameData.Description + "\n\n\nDirections \n \nThere are 3 levels to complete. \nEach level gets a bit faster. \nYour high sccore will automataly be submited to the Arcade. \n\n\nClick here to start sorting.", "bold 20px Arial", "#FFFFFF");
label.textAlign = "center";
label.lineWidth = 550;
label.y = displaybox.y;
label.x = displaybox.x + 275
directionsbox.addChild(displaybox, label);
self.stage.addChild(directionsbox);
var helper = new createjs.ButtonHelper(displaybox, "out", "over", "down", false, displaybox, "hit");
helper.y = displaybox.y;
helper.x = displaybox.x + 275
displaybox.addEventListener("click", handleClick);
function handleClick(event) {
createjs.Sound.play("click");
self.stage.removeChild(directionsbox);
StartInteraction();
}
您的 hitArea 的问题是您正在使用您的实例,因为它明确地是自己的 hitArea。 HitAreas 旨在自动定位到其内容。因为您的 displaybox
已经设置了 x/y,所以它 添加 到 hitArea 的位置,它已经相对于您的可见 displayBox 定位。
在您的示例中,您只需将 ButtonHelper 的 hitArea
参数设置为 null
。这将使 ButtonHelper 使用实际可见的内容作为 hitArea,这工作正常。如果要使用外部实例,可以克隆 DisplayBox,将其 x/y 设置为 0,然后使用它。
// Just use null
var helper = new createjs.ButtonHelper(displaybox, "out", "over", "down", false, null, "hit");
// Use a new instance
var hitbox = displayBox.clone().set({x:0, y:0});
var helper = new createjs.ButtonHelper(displaybox, "out", "over", "down", false, hitbox, "hit");
希望对您有所帮助。