0

cocos2d-js ゲームにシマリス物理エンジンを実装しようとしています。実行すると次のエラーが表示されます。

jsb: エラー: ファイル Y:\Documents\cocos\PrebuiltRuntimeJs\frameworks\js-bindings\bindings\auto\jsb_cocos2dx_auto.cpp: 行: 2143、関数: js_cocos2dx_Node_setPhysicsBody
無効なネイティブ オブジェクト
JS: D:/PROJECTS/cocos/Sliderule/runtime/win32/../../src/app.js:32:エラー: 無効なネイティブ オブジェクト


ここに私が取り組んでいるコードがあります

`init:関数 () {
        this._super();
        var サイズ = cc.winSize;
        this.rect1 = new cc.Sprite(res.null_png,cc.rect(0,0, 200, 25));
        this.rect1.setColor(cc.color(255,50,50,1));
        this.rect1.setPosition(size.width/2, size.height-12.5);
        this.rect1._setAnchorX(0.5);
        this.rect1._setAnchorY(0.5);

        this.rectbody1 = new cp.Body(1,cp.momentForBox(1,this.rect1.getContentSize().width, this.rect1.getContentSize().height));
        this.rectbody1.p = cc.p(size.width/2, size.height-12.5);        
        this.space.addBody(this.rectbody1);
        this.rectshape1 = new cp.BoxShape(this.rectbody1, this.rect1.getContentSize().width - 14, this.rect1.getContentSize().height);
        this.space.addShape(this.rectshape1);
        this.rect1.setPhysicsBody(this.rectbody1);
        this.addChild(this.rect1,1);
`

ボディをスプライトに設定すると問題が発生します。前もって感謝します。

4

1 に答える 1

2

このエラー メッセージは通常、retain() がないために表示されます。スプライトがネイティブ システム (Android、iOS) によって保持されるように明示的に設定する必要があります。そうしないと、しばらくすると無効になります。そして、もう必要ない場合は、解放してください。

試す:

this.rect1.retain()

スプライトを作成した後。その後

this.rect1.release()

必要がなくなったとき。

于 2015-01-26T14:36:44.097 に答える