Javascript 带有可重复鼠标事件的KineticJS问题
我这里没有什么问题(我显然错过了一些东西)。我通过更大的应用程序简化了它: 当我单击蓝色矩形时,我将另一层添加到包含红色矩形的舞台(可单击),当我单击此红色矩形时,它将删除带有红色矩形的第二层 问题:当我第二次单击blue rect时,什么也没发生:(即,应用程序只工作一次,我需要重复添加/删除第二层(使用红色rect)。怎么了?:) 你可以在这里看到,小提琴 代码:Javascript 带有可重复鼠标事件的KineticJS问题,javascript,html,canvas,mouseevent,kineticjs,Javascript,Html,Canvas,Mouseevent,Kineticjs,我这里没有什么问题(我显然错过了一些东西)。我通过更大的应用程序简化了它: 当我单击蓝色矩形时,我将另一层添加到包含红色矩形的舞台(可单击),当我单击此红色矩形时,它将删除带有红色矩形的第二层 问题:当我第二次单击blue rect时,什么也没发生:(即,应用程序只工作一次,我需要重复添加/删除第二层(使用红色rect)。怎么了?:) 你可以在这里看到,小提琴 代码: 身体{ 边际:0px; 填充:0px; } 帆布{ 边框:1px实心#9C9898; } window.onload=函数()
身体{
边际:0px;
填充:0px;
}
帆布{
边框:1px实心#9C9898;
}
window.onload=函数(){
var阶段=新的动力学阶段({
容器:'容器',
宽度:578,
身高:200
});
var layerBlue=新的dynamic.Layer();
var layerRed=新的动能.Layer();
var rectBlue=新的动能.Rect({
x:100,
y:75,
宽度:100,
身高:50,
填充:“蓝色”,
笔画:“黑色”,
冲程宽度:4
});
var rectRed=新的动能.Rect({
x:300,
y:75,
宽度:100,
身高:50,
填充:“红色”,
笔画:“黑色”,
冲程宽度:4
});
//鼠标事件
rectBlue.on('click',function()){
阶段。添加(分层);
stage.draw();
});
rectRed.on('click',function(){
layerRed.remove();
stage.draw();
});
//将形状添加到层中
layerBlue.add(矩形蓝色);
layerRed.add(矩形);
//将层添加到舞台
阶段。添加(图层蓝色);
};
要隐藏和显示形状,可以使用hide()和show()方法。试试这个JSFIDDLE。您可以看到下面的示例代码
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
canvas {
border: 1px solid #9C9898;
}
</style>
<script src="http://www.html5canvastutorials.com/libraries/kinetic-v4.0.3.js"></script>
<script>
var layerBlue;
var layerRed;
var rectBlue;
var rectRed;
window.onload = function() {
var stage = new Kinetic.Stage({
container: 'container',
width: 578,
height: 200
});
layerBlue = new Kinetic.Layer();
layerRed = new Kinetic.Layer();
rectBlue = new Kinetic.Rect({
x: 100,
y: 75,
width: 100,
height: 50,
fill: 'blue',
stroke: 'black',
strokeWidth: 4
});
rectRed = new Kinetic.Rect({
x: 300,
y: 75,
width: 100,
height: 50,
fill: 'red',
stroke: 'black',
strokeWidth: 4
});
// mouse events
rectBlue.on('click', function() {
rectRed.show();
stage.draw();
});
rectRed.on('click', function() {
rectRed.hide();
stage.draw();
});
// add the shape to the layer
layerBlue.add(rectBlue);
layerRed.add(rectRed);
// add the layer to the stage
stage.add(layerBlue);
stage.add(layerRed);
rectRed.hide();
stage.draw();
};
</script>
</head>
<body>
<div id="container"></div>
</body>
</html>
身体{
边际:0px;
填充:0px;
}
帆布{
边框:1px实心#9C9898;
}
var layerBlue;
var分层;
蓝色变种;
变直;
window.onload=函数(){
var阶段=新的动力学阶段({
容器:'容器',
宽度:578,
身高:200
});
layerBlue=新的动能.Layer();
layerRed=新的动能层();
rectBlue=新的动能.Rect({
x:100,
y:75,
宽度:100,
身高:50,
填充:“蓝色”,
笔画:“黑色”,
冲程宽度:4
});
rectRed=新的动力学.Rect({
x:300,
y:75,
宽度:100,
身高:50,
填充:“红色”,
笔画:“黑色”,
冲程宽度:4
});
//鼠标事件
rectBlue.on('click',function()){
rectRed.show();
stage.draw();
});
rectRed.on('click',function(){
rectRed.hide();
stage.draw();
});
//将形状添加到层中
layerBlue.add(矩形蓝色);
layerRed.add(矩形);
//将层添加到舞台
阶段。添加(图层蓝色);
阶段。添加(分层);
rectRed.hide();
stage.draw();
};
请参考此url以了解HTML5画布隐藏和显示形状要隐藏和显示形状,我们可以使用Hide()和Show()方法。试试这个JSFIDDLE。您可以看到下面的示例代码
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
canvas {
border: 1px solid #9C9898;
}
</style>
<script src="http://www.html5canvastutorials.com/libraries/kinetic-v4.0.3.js"></script>
<script>
var layerBlue;
var layerRed;
var rectBlue;
var rectRed;
window.onload = function() {
var stage = new Kinetic.Stage({
container: 'container',
width: 578,
height: 200
});
layerBlue = new Kinetic.Layer();
layerRed = new Kinetic.Layer();
rectBlue = new Kinetic.Rect({
x: 100,
y: 75,
width: 100,
height: 50,
fill: 'blue',
stroke: 'black',
strokeWidth: 4
});
rectRed = new Kinetic.Rect({
x: 300,
y: 75,
width: 100,
height: 50,
fill: 'red',
stroke: 'black',
strokeWidth: 4
});
// mouse events
rectBlue.on('click', function() {
rectRed.show();
stage.draw();
});
rectRed.on('click', function() {
rectRed.hide();
stage.draw();
});
// add the shape to the layer
layerBlue.add(rectBlue);
layerRed.add(rectRed);
// add the layer to the stage
stage.add(layerBlue);
stage.add(layerRed);
rectRed.hide();
stage.draw();
};
</script>
</head>
<body>
<div id="container"></div>
</body>
</html>
身体{
边际:0px;
填充:0px;
}
帆布{
边框:1px实心#9C9898;
}
var layerBlue;
var分层;
蓝色变种;
变直;
window.onload=函数(){
var阶段=新的动力学阶段({
容器:'容器',
宽度:578,
身高:200
});
layerBlue=新的动能.Layer();
layerRed=新的动能层();
rectBlue=新的动能.Rect({
x:100,
y:75,
宽度:100,
身高:50,
填充:“蓝色”,
笔画:“黑色”,
冲程宽度:4
});
rectRed=新的动力学.Rect({
x:300,
y:75,
宽度:100,
身高:50,
填充:“红色”,
笔画:“黑色”,
冲程宽度:4
});
//鼠标事件
rectBlue.on('click',function()){
rectRed.show();
stage.draw();
});
rectRed.on('click',function(){
rectRed.hide();
stage.draw();
});
//将形状添加到层中
layerBlue.add(矩形蓝色);
layerRed.add(矩形);
//将层添加到舞台
阶段。添加(图层蓝色);
阶段。添加(分层);
rectRed.hide();
stage.draw();
};
请参考此url了解HTML5画布隐藏和显示形状是的,我也考虑过这一举措。如果移除和隐藏图层没有实际的区别,那么这个可以工作。谢谢你的回复!隐藏层不起作用:当我隐藏层时,背景层忽略所有鼠标事件:(是的,我也考虑过这个动作。如果移除层和隐藏层没有实际区别,这个可以起作用。感谢您的回复!隐藏层不起作用:当我隐藏层时,背景层忽略所有鼠标事件:(