【发布时间】:2015-05-22 20:56:19
【问题描述】:
我在一个 Canvas 上有一个舞台和一个容器。
在舞台中,我添加了一个Container,其中包含两个矩形。我将一个函数绑定到舞台的stagemousedown 事件,该事件通过getObjectUnderPoint 函数返回事件发生的坐标下的形状。
HTML:
<body onload="init();">
<canvas id="canvas" width="300" height="200">
</canvas>
<button onclick="zoom()">zoom it</button>
</body>
初始化舞台、容器和两个矩形的函数:
function init() {
stage = new createjs.Stage("canvas");
container = new createjs.Container();
var rect1 = new createjs.Shape();
rect1.graphics.beginFill("#ff0000").drawRect(10, 10, 100, 100);
container.addChild(rect1);
var rect2 = new createjs.Shape();
rect2.graphics.beginFill("#00ff00").drawRect(120, 10, 100, 100);
container.addChild(rect2);
stage.on('stagemousedown', onClick);
stage.addChild( container );
stage.update();
}
返回stagemousedown事件下项的函数:
function onClick(e) {
alert(stage.getObjectUnderPoint(e.stageX, e.stageY));
}
在我通过zoom function 将zoom: 2 CSS 放入正文之前,这很顺利。一旦我点击矩形的边缘,我就没有得到对象。
function zoom(){
document.body.style.zoom = 2;
container.scaleX = container.scaleY = 2;
}
我read,EaselJS 不适用于缩放的画布。所以我把这个:
container.scaleX = container.scaleY = 2;
这部分有效,因为仍有部分区域无法点击:
黑色矩形区域之外的所有内容都不会触发stagemousedown 事件。
我怎样才能做到这一点?
注意:我需要使用stage.on 方法而不是container.addEventListener
http://jsfiddle.net/vqq8dxw7/1/
编辑:谢谢,但我需要缩放,因为整个事情的目的是为了响应目的而缩放整个应用程序(而不缩放每个 html 元素)。
所以,我缩放身体,一切都像这样缩放:
【问题讨论】:
标签: javascript css easeljs createjs