2013-04-02 2 views
0

Getting предметной ошибку при прохождении через: http://www.cocos2d-x.org/reference/html5-js/symbols/cc.htmlCocos2d html5 не может установить свойство ГКЗА нуля

Обратите внимания, что я использую 2.1.2 бета-версию, так что я знаю, что будет разница в учебнике. Вот код, я до сих пор:

(function() { 
    var AppLayer = cc.LayerColor.extend({ 
    init: function() { 
     this._super(new cc.Color4B(0, 0, 0, 255)); 
     var size = cc.Director.getInstance().getWinSize(); 
     this._jetSprite = new JetSprite(); 
     this.setTouchEnabled(true); 
     this.setKeyboardEnabled(true); 
     this.setPosition(new cc.Point(0, 0)); 

     this.addChild(this._jetSprite); 
     this._jetSprite.setPosition(new cc.Point(size.width/2, size.height/2)); 
     this._jetSprite.scheduleUpdate(); 
     this.schedule(this.update); 
     return true; 
    }, 
    _jetSprite: null, 
    onEnter: function() { 
     this._super(); 
    }, 
    onKeyDown: function(e) { 
     this._jetSprite.handleKey(e); 
    }, 
    onKeyUp: function() { 

    }, 
    onTouchesEnded: function(pTouch, pEvent) { 
     this._jetSprite.handleTouch(pTouch[0].getLocation()); 
    }, 
    onTouchesMoved: function(pTouch, pEvent) { 
     this._jetSprite.handleTouchMove(pTouch[0].getLocation()); 
    }, 
    update: function(dt) { 

    } 
    }); 


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

var JetSprite = cc.Sprite.extend({ 
    _currentRotation:0, 
    ctor: function() { 
    this.initWithFile("images/jet.png"); 
    }, 
    handleKey: function(e) { 
    if(e == cc.KEY.left) { 
     this._currentRotation--; 
    } 
    else if(e == cc.KEY.right) { 
     this._currentRotation++; 
    } 

    if(this._currentRotation < 0) { 
     this._currentRotation = 360; 
    } 
    if(this._currentRotation > 360) { 
     this._currentRotation = 0; 
    } 
    }, 
    handleTouch: function(touchLocation) { 
    if(touchLocation.x < 300) { 
     this._currentRotation = 0; 
    } 
    else { 
     this._currentRotation = 180; 
    } 
    }, 
    handleTouchMove: function(touchLocation) { 
    var angle = Math.atan2(touchLocation.x - 300, touchLocation.y - 300); 

    angle = angle * (180/Math.PI); 
    this._currentRotation = angle; 
    }, 
    update: function(dt) { 
    this.setRotation(this._currentRotation); 
    } 
}); 

Вот ошибка более подробно:

Uncaught TypeError: Cannot set property 'src' of null CCSprite.js:2209 
cc.SpriteWebGL.cc.Node.extend.initWithTexture CCSprite.js:2209 
(anonymous function) CCSprite.js:2161 

ответ

2

Похож учебником я был следующим пропускал линию. Для функции ctor требуется this._super(), чтобы все правильно инициализировалось.

var JetSprite = cc.Sprite.extend({ 
    _currentRotation:0, 
    ctor: function() { 
    this._super(); 
    this.initWithFile("images/jet.png"); 
    },