基本功能我要为是...EaselJS:添加子与鼠标按下舞台上的触发
点击(mousedown
)创建,并在该位置添加一个孩子。
*编辑:我也试图解决多点触控,所以可以在同一时间创建多个球。
当您按住时,您可以拖动(移动)该孩子并使其增长(使用regX/regY/scaleX/scaleY),直到您释放(pressup
),此时它会下降(使用打勾周期)。
我有一切工作,但我碰到了一个障碍,其中我不能添加一个孩子,并立即注册mousedown
没有释放,并再次按下。
添加后有没有办法手动触发mousedown
,或者更有意义的其他解决方法? dispatchEvent
似乎没有工作。
这里是我的舞台事件侦听器和触摸位:
stage.enableMouseOver(10);
createjs.Touch.enable(stage, false, false);
stage.preventSelection = false;
stage.addEventListener("stagemousedown", spawnsnowball);
这里是我的功能。在spawnsnowball包括displayObject
事件监听器在急切的接近,但唯一的办法,我已经能够得到pressmove和新闻的工作是再次点击相同的雪球。 releasesnowball
现在只是释放它们的所有实例(使用'stagemouseup'
侦听器),但是如果我能从pressup
触发,那么我将重写它以仅针对事件目标。
function spawnsnowball(evt){
var ball = new createjs.Bitmap(loader.getResult("snowball"));
ball.crossOrigin="Anonymous";
ball.name="ball";
ball.scaleX = 0.5;
ball.scaleY = ball.scaleX;
ball.regX = ball.image.width/2;
ball.regY = ball.image.height/2;
ball.x = evt.stageX;
ball.y = evt.stageY;
ball.type = balltype;
ball.holding = 1;
ball.velX = 0;
ball.velY = 0;
ball.addEventListener("pressup",releasesnowball);
ball.addEventListener("pressmove",dragsnowball);
ball.onPress = function(mouseEvent) {};
stage.addChild(ball);
ball.dispatchEvent("mousedown");
ball.dispatchEvent("pressdown");
}
function dragsnowball(evt){
evt.target.x = evt.stageX;
evt.target.y = evt.stageY;
}
function releasesnowball(evt){
for(var i=0;i<stage.getNumChildren();i++){
var shape = stage.getChildAt(i);
if(shape.type == balltype){
if(shape.holding){
shape.holding = 0;
var dX = shape.x - shape.oldX;
var dY = shape.y - shape.oldY;
if(Math.abs(dY)>8)
dY = 8*dY/Math.abs(dY);
if(Math.abs(dX)>3)
dX = 3*dX/Math.abs(dX);
}
}
}
}
真棒谢谢你!它似乎适用于单独一个,但我试图解决多点触摸(我有一个类似的解决方案,只是去找到所有“balltype”的孩子,并在'stagemouseup'上发布它们)。 这就是说,一些真正伟大的见解,我在什么车轮上。再次感谢你! – Shoany