Основные функциональные возможности я буду за это ...EaselJS: добавить ребенка с MouseDown вызвало
Tap (mousedown
) на сцене, чтобы создать и добавить ребенка в этом месте.
* EDIT: Я также пытаюсь решить проблему мультитач, поэтому одновременно можно создавать несколько шаров.
Когда вы удерживаете нажатой клавишу, вы можете перетаскивать (перемещать) этого ребенка вокруг и расти (используя regX/regY/scaleX/scaleY) до тех пор, пока вы не отпустите (pressup
), и в этот момент он падает (используя цикл тикания).
У меня все работает, но я попал в зацепку, в которой я не могу добавить ребенка и немедленно зарегистрировать mousedown
, не отпуская и не нажимая снова.
Есть ли способ ручного запуска mousedown
после добавления или какого-либо другого обхода, который имеет больше смысла? dispatchEvent
, похоже, не работает.
Вот мои события этапа слушатель и сенсорные биты:
stage.enableMouseOver(10);
createjs.Touch.enable(stage, false, false);
stage.preventSelection = false;
stage.addEventListener("stagemousedown", spawnsnowball);
А вот мои функции. В игровой зал входит displayObject
прослушивателей событий, граничащих с отчаянием, но единственный способ, которым я смог заставить пресс-мастерскую и нажатие работать, - это снова нажать на тот же снежок. 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);
}
}
}
}
Удивительное спасибо! Кажется, что это хорошо работает для одного, но я пытаюсь решить проблему multi-touch (у меня было похожее решение, которое просто пошло и нашло всех «шариковых» детей и выпустило их на «stagemouseup»). Тем не менее, некоторые действительно отличные сведения о том, на чем я вращаю колеса. Еще раз спасибо! – Shoany