首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cocos2D中的Html5鼠标移动事件-html5

Cocos2D中的Html5鼠标移动事件-html5
EN

Stack Overflow用户
提问于 2013-08-06 20:42:38
回答 2查看 1.5K关注 0票数 2

这是一个使用cocos2d-html5的网页游戏。

我有一个游戏层,我想在里面处理鼠标悬停事件:

代码语言:javascript
复制
var GameLayer = cc.Layer.extend({
    init:function () {
        // ......
        this.curPosition = null;
        if( 'mouse' in sys.capabilities ) {
            //this.setMouseEnabled(true);
            this.mouseCaptured = false;
            canvas = document.getElementById('gameCanvas');
            canvas.addEventListener('mousemove', function(evt) {
                var rect = document.getElementById('gameCanvas').getBoundingClientRect();
                var curPos = new cc.Point();
                curPos.x = evt.clientX - rect.left;
                curPos.y = evt.clientY - rect.top; 

                // the problem is here,  this is wrong since "this" stands for canvas here
                this.curPosition = curPos
                // also wrong
                this.updatePosition(curPos);
            }, false);
        }
        // ......
    },
    updatePosition:function (position) {
        this.currentPosition = position;
        // ......
    }
});

var HelloWorldScene = cc.Scene.extend({
    onEnter:function () {
        this._super();
        var layer = new GameLayer();
        layer.init();
        this.addChild(layer);
    }
});

我想要的只是调用函数或在侦听器中设置类变量。

希望有人能给点提示,谢谢:)

EN

回答 2

Stack Overflow用户

发布于 2013-08-06 21:30:29

您可以使用

代码语言:javascript
复制
init:function () {
    var self=this;
    //......

然后,您可以使用以下命令调用侦听器中的类函数

代码语言:javascript
复制
canvas.addEventListener('mousemove', function(evt) {
            self.updatePosition(1);
            // .... 
票数 1
EN

Stack Overflow用户

发布于 2014-01-28 10:10:46

Cocos2d-html5支持鼠标悬停事件。您需要在init函数中添加以下内容

代码语言:javascript
复制
if( 'mouse' in sys.capabilities ) {
    this.setMouseEnabled(true);
}

然后向您的层添加一个onMouseMoved委托函数。

代码语言:javascript
复制
onMouseMoved: function(event) {
    var pos = event.getLocation();
    console.log("onMouseMoved at: " + pos.x + " " + pos.y );
}

要查看事件委托系统是如何工作的:http://cocos2d-x.org/npm/cctouch/index.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18080504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档