gpt4 book ai didi

javascript - 如何与 Pixijs 中的形状交互?

转载 作者:行者123 更新时间:2023-11-29 16:12:12 24 4
gpt4 key购买 nike

我正在尝试获取鼠标当前悬停的形状的 ID。

我的形状在一个容器里

// creating the layers
gridLayer = new PIXI.DisplayObjectContainer ();
gridLayer.setInteractive(true);
stage.addChild(gridLayer);

我正在像这样创建每个形状;

function drawHexagon(x,y, size, gap,scale, color, iterI, iterJ, type) {
var shape = new PIXI.Graphics();
// set a fill and line style
shape.beginFill(color);
shape.lineStyle(1, 0xa0a0a0, 1);
size = size-gap;

for (i = 0; i < 7; i++) {
angle = 2 * Math.PI / 6 * (i + 0.5);
var x_i = x + size * Math.cos(angle);
var y_i = y + size * Math.sin(angle);


if (i === 0) {
shape.moveTo(x_i, scale *y_i)
}
else {
shape.lineTo(x_i, scale * y_i)
}
};

shape.endFill();

// calculate and save the axial coordinates
var cX = iterJ - (iterI - (iterI&1)) / 2;
var cZ = iterI;
var cY = -1*(cX+cZ);

shape.hexId = cX + "x" + cY + "y" + cZ + "z";
shape.hexPosX = x;
shape.hexPosY = y;

shape.setInteractive(true);
shape.mouseover = function(mouseData){
console.log("MOUSE OVER " + shape.hexId);
}
shape.click = function(mouseData){
console.log("MOUSE CLICK " + shape.hexId);
}
gridLayer.addChild(shape);
}

但是,单击任何形状或将鼠标悬停在其上不会在控制台中显示任何内容。我做错了什么?

我都试过了

shape.setInteractive(true)

shape.interactive = true

但似乎都不适合我。

编辑:我添加了一个 jsfiddle。它不起作用(我不知道如何在 jsfiddle 中链接东西)但是你可以在那里看到我的整个代码。 http://jsfiddle.net/9aqHz/1/

最佳答案

要使 PIXI.Graphics 对象具有交互性,您需要设置一个 hitArea 形状(它可以是矩形、圆形或多边形):

shape.hitArea = new PIXI.Polygon([
new PIXI.Point(/* first point */),
new PIXI.Point(/* second point */),
new PIXI.Point(/* third point */),
new PIXI.Point(/* fourth point */),
new PIXI.Point(/* fifth point */)
]);

另一种方法是从形状生成纹理并使用 Sprite,但命中区域将是六边形的整个矩形边界:

var texture = shape.generateTexture();
var sprite = new PIXI.Sprite(texture);
sprite.setInteractive(true);
sprite.anchor.set(0.5, 0.5);

Fiddle with this applied to your example

关于javascript - 如何与 Pixijs 中的形状交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24852588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com