私は行くよ基本的な機能がある...EaselJS:マウスダウンで子を追加で作成し、その位置に子を追加するために、ステージ上で
タップ(mousedown
)を引き起こしました。
*編集:私はマルチタッチでも解決しようとしているので、同時に複数のボールを作成することもできます。
あなたが押さえている間に、その子供をドラッグして(pressmove)、(pressup
)をリリースするまで(regx/regY/scaleX/scaleYを使用して)成長します。
私は何事も働いていますが、私は子供を追加することができず、ただちにmousedown
を解放して再度押すことなく登録してください。
追加後に手動でmousedown
をトリガーする方法はありますか、他の回避策が理にかなっていますか? dispatchEvent
は機能していないようです。
は、ここに私のステージイベントリスナーとタッチビットです:
stage.enableMouseOver(10);
createjs.Touch.enable(stage, false, false);
stage.preventSelection = false;
stage.addEventListener("stagemousedown", spawnsnowball);
そして、ここでは私の関数です。 spawnsnowballにはdisplayObject
というイベントリスナーが必死になっていますが、私がpressmoveとpressupを手に入れる唯一の方法は同じスノーボールを再びクリックすることです。 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);
}
}
}
}
ありがとうございました!私はマルチタッチのために解決しようとしています(私はちょうど行って、すべての "ボール型"の子供を見つけて、それらをstagemouseupですべてリリースした同様のソリューションを持っていました)。 それは、私が車輪を回転させていることについてのいくつかの本当に素晴らしい洞察だ。ありがとうございました! – Shoany