KineticJSを使用して、円と4つの長方形だけを持つグループを作成しようとしましたが、クリックすると、長方形が周囲に表示され(オプションの場合)、次のクリックで非表示になります。それらはうまく作成されており(私は思う?)、長方形だけを選択したところまで到達できますが、メインの円をクリックして状態を確認するときに、RectオブジェクトのsetVisible()関数を使用する必要があります。
function makePlayer(xPos, yPos) {
var bufferSize = 15;
var player = new Kinetic.Group();
var ball = new Kinetic.Circle({
x: xPos,
y: yPos,
radius: 40,
fill: 'black',
stroke: 'black',
strokeWidth: 1
});
player.add(ball);
ball.setAttr("menuShow", false);
for (var i = 0; i < 4; i++) {
var menuBox = new Kinetic.Rect({
x: ball.getX(),
y: ball.getY(),
width: 50,
height: 50,
visible: false
});
if (i == 0) {
menuBox.setFill('red');
menuBox.setOffset(menuBox.getWidth() / 2, ball.getHeight() + bufferSize);
menuBox.on("click tap", function () { alert("red box clicked/tapped") });
} else if (i == 1) {
menuBox.setFill('blue');
menuBox.setOffset(((ball.getWidth() / 2) * -1) - bufferSize, menuBox.getHeight() / 2);
menuBox.on("click tap", function () { alert("blue box clicked/tapped") });
} else if (i == 2) {
menuBox.setFill('yellow');
menuBox.setOffset(menuBox.getWidth() / 2, ((ball.getHeight() / 2) * -1) - bufferSize);
menuBox.on("click tap", function () { alert("yellow box clicked/tapped") });
} else if (i == 3) {
menuBox.setFill('white');
menuBox.setOffset(ball.getWidth() + bufferSize, menuBox.getHeight() / 2);
menuBox.on("click tap", function () { alert("white box clicked/tapped") });
}
menuBox.setAttr("menu", true);
player.add(menuBox);
}
ball.on("click tap", function () {
var menuPopup = ball.getAttrs();
if (menuPopup.menuShow == false) {
for (var i = 1; i <= 4; i++) {
var menuBox = player.get('Rect');
menuBox.setVisible(true);
}
}
});
円は通常どおりに生成されますが、クリックされるたびに、前述のように、コードがsetVisibleでクラップスされます。
これは私が得るjavascriptエラーです:Uncaught TypeError:Object [object Object]、[object Object]、[object Object]、[objectObject]にはメソッド'setVisible'がありません