1、获得鼠标坐标

在鼠标事件中,我们可以获得鼠标坐标,也就是鼠标指针坐标位置x、y的值

示例

  1. bg.interactive = true;
  2. bg.on("mousemove", movePlane);
  3. function movePlane(event) {
  4. var pos = event.data.getLocalPosition(app.stage);
  5. var a = pos.x;
  6. var b = pos.y;
  7. }

代码讲解

1、允许图片接收控制

bg.interactive = true;

2、给图片bg添加mousemove事件

bg.on("mousemove", movePlane);

3、定义movePlane函数,获得鼠标坐标

function movePlane(event) {    
var pos = event.data.getLocalPosition(app.stage);    
var a = pos.x;    
var b = pos.y;    
}
    event:代表当前鼠标的事件,该事件中存储了鼠标的相关信息    <br />var pos = event.data.getLocalPosition(app.stage):在应用程序的舞台上,通过event获得鼠标信息,并存储到pos变量中    <br />            var a = pos.x:通过pos获得鼠标指针的x坐标    <br />        var b = pos.y:通过pos获得鼠标指针的y坐标    <br />        注:任何一个鼠标事件,都可以通过上述代码获得鼠标坐标    



2、设置锚点

显示元素的锚点,也可以叫做定位点。
当我们通过x、y设置显示元素位置时,显示元素是以哪个点来对应的,那么对应的点,就是锚点。

显示元素默认的锚点位置,是显示元素的左上角。如下图:
获取鼠标位置,鼠标跟随 - 图1
当我们指定图片位置为 x=200;y=100; 时,实际是图片左上角对应 x=200; y=100;

我们可以通过代码,来设置显示元素的锚点位置。代码如下:
plane.anchor.x = 值:设置x方向锚点位置
plane.anchor.y = 值:设置y方向锚点位置
或者
plane.anchor.set(值,值):同时设置x、y方向锚点位置



锚点的取值是有一定范围的。如下图:
获取鼠标位置,鼠标跟随 - 图2
图片左上角对应锚点位置:plane.anchor.x=0,plane.anchor.y=0 或 plane.anchor.set(0,0)
图片右上角对应锚点位置:plane.anchor.x=1,plane.anchor.y=0 或 plane.anchor.set(1,0)
图片左下角对应锚点位置:plane.anchor.x=0,plane.anchor.y=1 或 plane.anchor.set(0,1)
图片右下角对应锚点位置:plane.anchor.x=1,plane.anchor.y=1 或 plane.anchor.set(1,1)
图片中心点对应锚点位置:plane.anchor.x=0.5,plane.anchor.y=0.5 或 plane.anchor.set(0.5,0.5)
注意:锚点的位置并不是固定的,可以任意给值,但锚点的范围是0到1之间



3、鼠标跟随

鼠标跟随,就是控制显示元素,跟随鼠标指针一起移动

示例

var app=newPIXI.Application(400,400);
document.body.appendChild(app.view);
var bg=newPIXI.Sprite.fromImage("res/plane/bg/img_bg_level_3.jpg");
app.stage.addChild(bg);
var plane=newPIXI.Sprite.fromImage("res/plane_blue_01.png");
plane.anchor.set(0.5,0.5);
app.stage.addChild(plane);
bg.interactive=true;
bg.on("mousemove",movePlane);
functionmovePlane(event){
    var pos=event.data.getLocalPosition(app.stage);
    plane.x=pos.x;
    plane.y=pos.y;
}

代码讲解

1、设置飞机plane图片的锚点

plane.anchor.set(0.5,0.5);
设置plane图片的锚点,将锚点位置设置到图片的中心点

2、设置飞机plane图片,鼠标跟随

var pos = event.data.getLocalPosition(app.stage);
plane.x = pos.x;
plane.y = pos.y;
var pos = event.data.getLocalPosition(app.stage):获得鼠标相关信息
plane.x = pos.x:将鼠标的x坐标赋给飞机图片的x坐标
plane.y = pos.y:将鼠标的y坐标赋给飞机图片的y坐标

4.mousemove事件的特殊性

mousemove 事件,是一个非常特殊的鼠标事件(只有这一个有特殊性)。
因为不管把 mousemove 事件添加给舞台上哪一个显示元素,最终都是由应用程序窗口,响应该事件。

var app = new PIXI.Application(500,500);
document.body.appendChild(app.view);

var btn = new PIXI.Sprite.fromImage("res/plane/ui/ui_new_battle_png_03.png");
btn.anchor.set(0.5,0.5);
btn.x = 250;
btn.y = 250;
app.stage.addChild(btn); 

var plane = new PIXI.Sprite.fromImage("res/plane/main/img_plane_enemy_04.png");
app.stage.addChild(plane);

btn.interactive = true;
btn.on("mousemove",movePlane);
function movePlane(event){
    plane.y += 1;
}