1. Menu自适应显示
moveMenu:function (delta) {
var newY = this._itemMenu.y + delta.y;
if (newY < 0)
newY = 0;
if (newY > ((DenshionTests.length + 1) * LINE_SPACE - winSize.height))
newY = ((DenshionTests.length + 1) * LINE_SPACE - winSize.height);
this._itemMenu.y = newY;
}
2. 加入一系列菜单
for (var i = 0; i < DenshionTests.length; i++) {
var label = cc.LabelTTF.create(DenshionTests[i].title, "Arial", 24);
var menuItem = cc.MenuItemLabel.create(label, this.onMenuCallback, this);
this._itemMenu.addChild(menuItem, i + 10000);
menuItem.x = winSize.width / 2;
menuItem.y = winSize.height - (i + 1) * LINE_SPACE;
}
this._testCount = i;
this._itemMenu.width = winSize.width;
this._itemMenu.height = (this._testCount + 1) * LINE_SPACE;
this._itemMenu.x = 0;
this._itemMenu.y = 0;
this.addChild(this._itemMenu);
3. 加入监听
if( 'touches' in cc.sys.capabilities ) {
cc.eventManager.addListener({
event: cc.EventListener.TOUCH_ALL_AT_ONCE,
onTouchesMoved: function (touches, event) {
event.getCurrentTarget().moveMenu(touches[0].getDelta());
}
}, this);
} else if ('mouse' in cc.sys.capabilities )
cc.eventManager.addListener({
event: cc.EventListener.MOUSE,
onMouseMove: function(event){
event.getCurrentTarget().moveMenu(event.getDelta());
}
}, this);
onMenuCallback:function (sender) {
var idx = sender.zIndex - 10000;
// create the test scene and run it
var scene = DenshionTests[idx].playFunc();
},