首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cocos2d-js将sprite对象传递到EventListener中。

cocos2d-js将sprite对象传递到EventListener中。
EN

Stack Overflow用户
提问于 2014-09-17 19:49:57
回答 2查看 3K关注 0票数 0

我正在使用cocos2d-jsv3.0,并试图在this.sprite中使用EventListener对象。但是,我知道this.sprite是未定义的。

如果我在init函数中创建var sprite,并且只传递sprite,它就会工作得很好。但是,当我在init函数之外创建var sprite并使用this.sprite时,就会得到未定义的信息。

代码语言:javascript
复制
var roomMap = cc.Layer.extend({

sprite:null


ctor:function(){
    this._super();
    this.init();
},

init: function () {
    this._super();
    //create tile map
    this.mainMap = cc.TMXTiledMap.create(res.Main_tmx);

    var cache = cc.spriteFrameCache;
    cache.addSpriteFrames(res.player_plist, res.player_png);

    this.sprite = new cc.Sprite.create("#player-stand-f-0");
    this.sprite.setPosition(new cc.Point(300,300));
    this.addChild(this.sprite);

    var listener = cc.EventListener.create({

        event: cc.EventListener.MOUSE,

        onMouseUp: function (event){
            var sprite_action = cc.MoveTo(2,cc.p(event.getLocationX(),event.getLocationY()));
            console.log(this.sprite);
            //this.sprite.runAction(sprite_action);
            //this.addChild(sprite_action);

        }
    });

    cc.eventManager.addListener(listener, this.sprite);

这更像是我遇到的javascript问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-18 14:46:29

之所以发生这种情况,是因为事件侦听器内部的this指的是事件侦听器本身,而不是层。

试试这个:

代码语言:javascript
复制
var target = event.getCurrentTarget();
console.log(target);
console.log(target.sprite);

这将使您清楚地了解正在发生的事情:如果您单击sprite对象,那么target应该等于sprite (因此target.sprite将是未定义的),如果您单击该层,则target将是该层,而target.sprite将是您所期望的。

我回顾一下这篇文章,以进一步了解cocos2d v3中的新事件管理器。

票数 3
EN

Stack Overflow用户

发布于 2014-09-18 02:34:50

首先,我认为这句话错了

代码语言:javascript
复制
this.sprite = new cc.Sprite.create("#player-stand-f-0");

“新”是不必要的

当你说“在init功能之外”的时候,我不知道它在哪里。因为ctor函数将首先被调用,一旦您在使用之前没有创建它,那么它将是未定义的。你可以试试

代码语言:javascript
复制
sprite:cc.Sprite.create("player-stand-f-0")
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25899154

复制
相关文章

相似问题

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