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();
}
},
....
];