1.tests-main.js
1.TestScene
var TestScene = cc.Scene.extend({ });
其他例子的 scene 基本都继承 TestScene,功能:Main Menu 按钮,按按钮跳转到菜单界面TestController
继承于TestScene 的scene
TestScene
var TestScene = cc.Scene.extend({ ctor:function (bPortrait) { this._super(); this.init(); }, onEnter:function () { this._super(); var label = cc.LabelTTF.create("Main Menu", "Arial", 20); var menuItem = cc.MenuItemLabel.create(label, this.onMainMenuCallback, this); var menu = cc.Menu.create(menuItem); menu.setPosition(0,0); menuItem.setPosition(winSize.width - 50, 25); this.addChild(menu, 1); }, onMainMenuCallback:function () { var scene = cc.Scene.create(); var layer = new TestController(); scene.addChild(layer); var transition = cc.TransitionProgressRadialCCW.create(0.5,scene); director.replaceScene(transition); }, runThisTest:function () { } });
TestController
var TestController = cc.LayerGradient.extend({ _itemMenu:null, _beginPos:0, isMouseDown:false, ctor:function() { this._super(); this.init( cc.c4b(0,0,0,255), cc.c4b(0x46,0x82,0xB4,255)); //全局变量初始化 director = cc.Director.getInstance(); winSize = director.getWinSize(); //关闭按钮 var closeItem = cc.MenuItemImage.create(s_pathClose, s_pathClose, this.onCloseCallback, this); closeItem.setPosition(winSize.width - 30, winSize.height - 30); //组合按钮 var subItem1 = cc.MenuItemFont.create("Automated Test: Off"); subItem1.setFontSize(18); var subItem2 = cc.MenuItemFont.create("Automated Test: On"); subItem2.setFontSize(18); var toggleAutoTestItem = cc.MenuItemToggle.create(subItem1, subItem2); toggleAutoTestItem.setCallback(this.onToggleAutoTest, this); toggleAutoTestItem.setPosition(winSize.width-90, 20); if( autoTestEnabled ) toggleAutoTestItem.setSelectedIndex(1); var menu = cc.Menu.create(closeItem, toggleAutoTestItem);//pmenu is just a holder for the close button menu.setPosition(0,0); this.addChild(menu, 1); //菜单按钮 this._itemMenu = cc.Menu.create();//item menu is where all the label goes, and the one gets scrolled for (var i = 0, len = testNames.length; i < len; i++) { var label = cc.LabelTTF.create(testNames[i].title, "Arial", 24); var menuItem = cc.MenuItemLabel.create(label, this.onMenuCallback, this); this._itemMenu.addChild(menuItem, i + 10000); menuItem.setPosition(winSize.width / 2, (winSize.height - (i + 1) * LINE_SPACE)); //判断平台设置触摸 if ( sys.platform == 'browser') { if( 'opengl' in sys.capabilities ){ menuItem.setEnabled( (testNames[i].platforms & PLATFORM_HTML5) | (testNames[i].platforms & PLATFORM_HTML5_WEBGL) ); }else{ menuItem.setEnabled( testNames[i].platforms & PLATFORM_HTML5 ); } } else { menuItem.setEnabled( testNames[i].platforms & PLATFORM_JSB ); } } //设置菜单按钮容器大小 this._itemMenu.setContentSize(cc.size(winSize.width, (testNames.length + 1) * LINE_SPACE)); this._itemMenu.setPosition(curPos); this.addChild(this._itemMenu); //浏览器支持性 if( 'touches' in sys.capabilities )//不支持 this.setTouchEnabled(true); //onTouchesMoved else if( 'mouse' in sys.capabilities )//支持 this.setMouseEnabled(true); //onMouseDragged、onScrollWheel }, onEnter:function(){ this._super(); var pos = this._itemMenu.getPosition(); this._itemMenu.setPosition(pos.x, TestController.YOffset); }, //菜单按钮 onMenuCallback:function (sender) { TestController.YOffset = this._itemMenu.getPosition().y; var idx = sender.getZOrder() - 10000; autoTestCurrentTestName = testNames[idx].title; //加载对应的scene var testCase = testNames[idx]; var res = testCase.resource || []; cc.Loader.preload(res, function () { var scene = testCase.testScene(); if (scene) { scene.runThisTest(); } }, this); }, //关闭按钮 onCloseCallback:function () { history.go(-1); }, //两个切换按钮 onToggleAutoTest:function() { autoTestEnabled = !autoTestEnabled; }, onTouchesMoved:function (touches, event) { cc.log("onTouchesMoved"); var delta = touches[0].getDelta(); this.moveMenu(delta); return true; }, //拖拽鼠标 onMouseDragged : function( event ) { cc.log("onMouseDragged"); var delta = event.getDelta(); this.moveMenu(delta); return true; }, //滑动鼠标轮 onScrollWheel:function(event){ cc.log("onScrollWheel"); var delta = event.getWheelDelta();//滑动的速度 this.moveMenu({y:-delta}); return true; }, //根据滑动行走的大小,去移动menu从而移动了菜单 moveMenu:function(delta) { var current = this._itemMenu.getPosition(); cc.log("moveMenu" + current.y + " " + delta.y); var newY = current.y + delta.y; if (newY < 0 ) newY = 0; if( newY > ((testNames.length + 1) * LINE_SPACE - winSize.height)) newY = ((testNames.length + 1) * LINE_SPACE - winSize.height); this._itemMenu.setPosition(current.x, newY); } });
testNames数组
/*scene * testScene:function () { return new ActionManagerTestScene(); } * */ //这些scene基本都是继承TestScene TestController.YOffset = 0; var testNames = [ { title:"ActionManager Test", platforms: PLATFORM_ALL, testScene:function () { return new ActionManagerTestScene(); } }, .... ];