-
loppesdanLikes 0Problem Description
Hi,
I’m studying cocos2D-JS, and I make a small project example.
The project work in plataform web, but when I run it in debug mode for Android, I get an error to click on MenuItem that start the game.
The error:
16:07:49 Starting simulator...
16:09:02 Start LaunchActivity broup.cocos.terx/org.cocos2dx.javascript.AppActivity
16:09:05 Uploading resources ...
16:09:06 Uploading resources ...
16:09:07 cocos2d: fullPathForFilename: No file found at script/jsb_boot.jsc. Possible missing file.
16:09:07 create rendererRecreatedListener for GLProgramState
16:09:07 debug server : client connected
16:09:07 JS: asyncListen....
16:09:07 (evaluatedOK == JS_FALSE)
16:12:15 JS: /data/data/broup.cocos.terx/files/debugruntime/src/app.js:37:ReferenceError: PlayScene is not definedThe main.js:
/** * A brief explanation for "project.json": * Here is the content of project.json file, this is the global configuration for your game, you can modify it to customize some behavior. * The detail of each field is under it. { "project_type": "javascript", // "project_type" indicate the program language of your project, you can ignore this field "debugMode" : 1, // "debugMode" possible values : // 0 - No message will be printed. // 1 - cc.error, cc.assert, cc.warn, cc.log will print in console. // 2 - cc.error, cc.assert, cc.warn will print in console. // 3 - cc.error, cc.assert will print in console. // 4 - cc.error, cc.assert, cc.warn, cc.log will print on canvas, available only on web. // 5 - cc.error, cc.assert, cc.warn will print on canvas, available only on web. // 6 - cc.error, cc.assert will print on canvas, available only on web. "showFPS" : true, // Left bottom corner fps information will show when "showFPS" equals true, otherwise it will be hide. "frameRate" : 60, // "frameRate" set the wanted frame rate for your game, but the real fps depends on your game implementation and the running environment. "id" : "gameCanvas", // "gameCanvas" sets the id of your canvas element on the web page, it's useful only on web. "renderMode" : 0, // "renderMode" sets the renderer type, only useful on web : // 0 - Automatically chosen by engine // 1 - Forced to use canvas renderer // 2 - Forced to use WebGL renderer, but this will be ignored on mobile browsers "engineDir" : "frameworks/cocos2d-html5/", // In debug mode, if you use the whole engine to develop your game, you should specify its relative path with "engineDir", // but if you are using a single engine file, you can ignore it. "modules" : ["cocos2d"], // "modules" defines which modules you will need in your game, it's useful only on web, // using this can greatly reduce your game's resource size, and the cocos console tool can package your game with only the modules you set. // For details about modules definitions, you can refer to "../../frameworks/cocos2d-html5/modulesConfig.json". "jsList" : [ ] // "jsList" sets the list of js files in your game. } * */ cc.game.onStart = function(){ if(!cc.sys.isNative && document.getElementById("cocosLoading")) //If referenced loading.js, please remove it document.body.removeChild(document.getElementById("cocosLoading")); // Pass true to enable retina display, disabled by default to improve performance cc.view.enableRetina(false); // Adjust viewport meta cc.view.adjustViewPort(true); // Setup the resolution policy and design resolution size cc.view.setDesignResolutionSize(480, 320, cc.ResolutionPolicy.SHOW_ALL); // The game will be resized when browser size change cc.view.resizeWithBrowserSize(true); //load resources cc.LoaderScene.preload(g_resources, function () { cc.director.runScene(new MenuScene()); }, this); }; cc.game.run();
The app.js:
var MenuLayer = cc.Layer.extend({ ctor : function(){ //1. call super class's ctor function this._super(); }, init:function(){ //call super class's super function this._super(); //2. get the screen size of your game canvas var winsize = cc.director.getWinSize(); //3. calculate the center point var centerpos = cc.p(winsize.width / 2, winsize.height / 2); //4. create a background image and set it's position at the center of the screen var spritebg = new cc.Sprite(res.BackGround_png); spritebg.setPosition(centerpos); this.addChild(spritebg); //5. cc.MenuItemFont.setFontSize(60); //6.create a menu and assign onPlay event callback to it var menuItemPlay = new cc.MenuItemSprite( new cc.Sprite(res.BtnPlay_png), // normal state image new cc.Sprite(res.BtnPlay_png), // select state image // new cc.Sprite(res.BtnPlay_png), // disabled state image this.onPlay, this); var menu = new cc.Menu(menuItemPlay); //7. create the menu menu.setPosition(centerpos); this.addChild(menu); }, onPlay : function(){ cc.director.runScene(new PlayScene()); } }); var MenuScene = cc.Scene.extend({ onEnter:function () { this._super(); var layer = new MenuLayer(); layer.init(); this.addChild(layer); } });
The PlayScene.js:
var PlayScene = cc.Scene.extend({ space: null, gameLayer:null, shapesToRemove :[], // init space of chipmunk initPhysics:function() { //1. new space object this.space = new cp.Space(); //2. setup the Gravity this.space.gravity = cp.v(0, -800); // 3. set up Walls var wallBottom = new cp.SegmentShape(this.space.staticBody, cp.v(0, g_groundHeight),// start point cp.v(4294967295, g_groundHeight),// MAX INT:4294967295 0);// thickness of wall this.space.addStaticShape(wallBottom); this.space.addCollisionHandler(SpriteTag.runner, SpriteTag.cactus, this.collisionCactusBegin.bind(this), null, null, null); }, collisionCactusBegin:function (arbiter, space) { // cc.log("==game over"); cc.audioEngine.playEffect(res.Reached_mp3); var highScore = this.getChildByTag(TagOfLayer.Status).getHighScore(); if(g_score > highScore){ this.getChildByTag(TagOfLayer.Status).updateHighScore(g_score); } g_contMetters = 0; cc.director.pause(); this.addChild(new GameOverLayer()); }, onEnter:function () { this.shapesToRemove = []; this._super(); this.initPhysics(); this.gameLayer = new cc.Layer(); //add Background layer and Animation layer to gameLayer this.gameLayer.addChild(new BackgroundLayer(this.space), 0, TagOfLayer.background); this.gameLayer.addChild(new AnimationLayer(this.space), 0, TagOfLayer.Animation); this.addChild(this.gameLayer); this.addChild(new StatusLayer(), 0, TagOfLayer.Status); this.scheduleUpdate(); }, update:function (dt) { // chipmunk step this.space.step(dt); var animationLayer = this.gameLayer.getChildByTag(TagOfLayer.Animation); var eyeX = animationLayer.getEyeX(); this.gameLayer.setPosition(cc.p(-eyeX,0)); } });
Any ideia?
I’m sorry for my english.
Thanks!!
-
Sonar Systems adminLikes 0
How are you running it on Android?
-
loppesdanLikes 0
I’m running with cocos IDE debug… using “Android ADB Mode” in Run/Debug Configurations.
When I compile it via console and install the apk in my device, the game don’t leave the menu too.
-
Sonar Systems adminLikes 0
What version of Cocos2d-JS are you using?
-
loppesdanLikes 0
I’m using v3.6.1.
-
Sonar Systems adminLikes 0
Try running it from Eclipse to see if it works?
-
loppesdanLikes 0
But, as I said, if I compile it via console and install it in my device, doesn’t work too.
-
Sonar Systems adminLikes 0
Does a new project work?
-
loppesdanLikes 0
Nop! Same error.
I followed the “Parkour game tutorial”, in the cocos site.
The full code:
-
Sonar Systems adminLikes 0
Have you followed our videos for creating a project?
-
loppesdanLikes 0
Yes! Whe I create a project following your tutorials, I get a black screen in the android device.
-
Sonar Systems adminLikes 0
What OS are you using to develop on?
-
loppesdanLikes 0
I’m using Windows 8.1.
-
Sonar Systems adminLikes 0
I know this will be annoying but try setting up Cocos2d-JS from scratch up again as that can fix many problems.
Login to reply