【问题标题】:EaselJS - Stage mouseoverEaselJS - 舞台鼠标悬停
【发布时间】:2014-07-01 01:34:13
【问题描述】:

我最近发现了 EaselJS,我正在尝试制作一个非常简单的画布射击游戏。

我的画布宽度为 500 像素,高度为 500 像素。

当用户的鼠标进入画布时,一个目标会随着鼠标移动,应该可以射击目标(即位图)。

这应该与我们在许多网站上看到的一些广告游戏非常相似 - “使用鼠标并触摸 X 赢!”之类的。

但是,我一直在尝试做一些非常简单的事情——让目标精灵跟随用户的鼠标光标。

如果我忘记或做错了什么非常琐碎的事情,我会提前道歉。这是我的(Javascript)代码:

<script>
window.onload = function()
{
  init();
}

function init() 
{

var canvas = document.getElementById("my_canvas");
var stage = new createjs.Stage(canvas);

//background picture
var background_sky = new createjs.Bitmap("sky.png");
stage.addChild(background_sky);

//target sprite picture
var target_sprite = new createjs.Bitmap("target.png");
stage.addChild(target_sprite);

target_sprite.x = 150;
target_sprite.y = 150;

stage.enableMouseOver(20);

stage.on("mouseover", function(e) 
{
   target_sprite.x = e.stageX;
   target_sprite.y = e.stageY;      
   stage.update();
});

stage.update();

}
</script>

如果我没记错的话,只要鼠标进入画布区域,前面的代码应该让 target_sprite 移动到鼠标的坐标。

但它不起作用。

图片已绘制,鼠标悬停事件触发,但目标精灵有时会四处移动 - 并移动到意外的(随机?)位置。

如果我将鼠标移动到 target_sprite 的位置,它会移动到左下角(递归)。而且我没有为 target_sprite 附加鼠标悬停处理程序 - 仅用于舞台。

是否可以像这样为舞台附加鼠标悬停处理程序?

我做错了什么?

【问题讨论】:

    标签: javascript html canvas easeljs 2d-games


    【解决方案1】:

    我认为你应该使用stagemousemove 事件而不是mouseover

    【讨论】:

    • 就是这样!非常感谢。
    • 请注意,如果您需要特定 DisplayObjects 上的翻转/滚动事件,您应该只在舞台上启用MouseOver。运行起来相当昂贵,这就是默认情况下不启用它的原因。
    猜你喜欢
    • 1970-01-01
    • 2011-08-24
    • 2013-08-30
    • 2013-05-02
    • 2011-08-04
    • 2018-09-03
    • 2015-10-05
    • 1970-01-01
    • 2015-04-22
    相关资源
    最近更新 更多