pixi js:拖放圆形
pixi js: drag and drop circle
我开始使用 pixijs. I need drag'n'drop functionality for Graphics circle but can't find info for this. I see only this example 和精灵创建简单的 js 游戏。
对于图形和精灵,拖放操作的方式相同。
var renderer = PIXI.autoDetectRenderer(800, 600, { antialias: true });
document.body.appendChild(renderer.view);
var stage = new PIXI.Container();
stage.interactive = true;
var graphics = new PIXI.Graphics();
graphics.interactive = true;
graphics.lineStyle(0);
graphics.beginFill(0xFFFF0B, 0.5);
graphics.drawCircle(0, 0, 60);
graphics.endFill();
graphics.x = 100;
graphics.y = 100;
stage.addChild(graphics);
// setup events
graphics
.on('mousedown', onDragStart)
.on('touchstart', onDragStart)
.on('mouseup', onDragEnd)
.on('mouseupoutside', onDragEnd)
.on('touchend', onDragEnd)
.on('touchendoutside', onDragEnd)
.on('mousemove', onDragMove)
.on('touchmove', onDragMove);
function onDragStart(event)
{
// store a reference to the data
// the reason for this is because of multitouch
// we want to track the movement of this particular touch
this.data = event.data;
this.alpha = 0.5;
this.dragging = true;
}
function onDragEnd()
{
this.alpha = 1;
this.dragging = false;
// set the interaction data to null
this.data = null;
}
function onDragMove()
{
if (this.dragging)
{
var newPosition = this.data.getLocalPosition(this.parent);
this.position.x = newPosition.x;
this.position.y = newPosition.y;
}
}
// run the render loop
animate();
function animate() {
renderer.render(stage);
requestAnimationFrame( animate );
}
您还需要为该圆圈提供 hitArea
才能将鼠标事件附加到它。 Read This Answer by GoodBoyDigital.
我开始使用 pixijs. I need drag'n'drop functionality for Graphics circle but can't find info for this. I see only this example 和精灵创建简单的 js 游戏。
对于图形和精灵,拖放操作的方式相同。
var renderer = PIXI.autoDetectRenderer(800, 600, { antialias: true });
document.body.appendChild(renderer.view);
var stage = new PIXI.Container();
stage.interactive = true;
var graphics = new PIXI.Graphics();
graphics.interactive = true;
graphics.lineStyle(0);
graphics.beginFill(0xFFFF0B, 0.5);
graphics.drawCircle(0, 0, 60);
graphics.endFill();
graphics.x = 100;
graphics.y = 100;
stage.addChild(graphics);
// setup events
graphics
.on('mousedown', onDragStart)
.on('touchstart', onDragStart)
.on('mouseup', onDragEnd)
.on('mouseupoutside', onDragEnd)
.on('touchend', onDragEnd)
.on('touchendoutside', onDragEnd)
.on('mousemove', onDragMove)
.on('touchmove', onDragMove);
function onDragStart(event)
{
// store a reference to the data
// the reason for this is because of multitouch
// we want to track the movement of this particular touch
this.data = event.data;
this.alpha = 0.5;
this.dragging = true;
}
function onDragEnd()
{
this.alpha = 1;
this.dragging = false;
// set the interaction data to null
this.data = null;
}
function onDragMove()
{
if (this.dragging)
{
var newPosition = this.data.getLocalPosition(this.parent);
this.position.x = newPosition.x;
this.position.y = newPosition.y;
}
}
// run the render loop
animate();
function animate() {
renderer.render(stage);
requestAnimationFrame( animate );
}
您还需要为该圆圈提供 hitArea
才能将鼠标事件附加到它。 Read This Answer by GoodBoyDigital.