0

cocos2d-js v3.0 を使用しており、EventListener で this.sprite オブジェクトを使用しようとしています。ただし、 this.sprite は未定義です。

init 関数で var スプライトを作成し、スプライトを渡すだけで問題なく動作します。しかし、init 関数の外で var スプライトを作成し、this.sprite を使用すると、未定義になります。

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の問題です。

4

2 に答える 2

-1

まず、この行は間違っていると思います

this.sprite = new cc.Sprite.create("#player-stand-f-0");

「新しい」は不要です

あなたが「init関数の外」と言ったとき、私はそれがどこにあるのかわかりません。ctor 関数が最初に呼び出されるため、使用する前に作成しないと未定義になります。あなたが試すことができます

sprite:cc.Sprite.create("player-stand-f-0")
于 2014-09-18T02:34:50.680 に答える