/// declare type ccMenuItemCallback = (mi:cc.Node)=>void; declare namespace cc { //////////////////////////////////////////////////////////////////////////////// // File: cocos2d/menus/CCMenu.js //////////////////////////////////////////////////////////////////////////////// /** * @constant * @type Number */ export const MENU_STATE_WAITING:number; /** * @constant * @type Number */ export const MENU_STATE_TRACKING_TOUCH:number; /** * @constant * @type Number */ export const MENU_HANDLER_PRIORITY:number; /** * @constant * @type Number */ export const DEFAULT_PADDING:number; /** * Features and Limitation: * - You can add MenuItem objects in runtime using addChild: * - But the only accepted children are MenuItem objects * @class * @extends cc.Layer * @param {...cc.MenuItem|null} menuItems} * @example * var layer = new cc.Menu(menuitem1, menuitem2, menuitem3); */ export class Menu extends Layer { /** * Constructor of cc.Menu override it to extend the construction behavior, remember to call "this._super()" in the extended "ctor" function. * @param {...cc.MenuItem|null} menuItems */ public constructor(...menuItems:MenuItem[]); /** * initializes a cc.Menu with it's items * @param {Array} menuItems * @return {Boolean} */ public initWithItems(...menuItems:MenuItem[]):boolean; public initWithArray(menuItems:MenuItem[]):boolean; /** * return whether or not the menu will receive events * @return {Boolean} */ public isEnabled():boolean; /** * set whether or not the menu will receive events * @param {Boolean} enabled */ public setEnabled(enabled:boolean):void; /** * add a child for cc.Menu * @param {cc.Node} child * @param {Number|Null} [zOrder=] zOrder for the child * @param {Number|Null} [tag=] tag for the child */ public addChild(child:MenuItem, zOrder?:number, tag?:number):void; /** * align items vertically with default padding */ public alignItemsVertically():void; /** * align items vertically with specified padding * @param {Number} padding */ public alignItemsVerticallyWithPadding(padding:number):void; /** * align items horizontally with default padding */ public alignItemsHorizontally():void; /** * align items horizontally with specified padding * @param {Number} padding */ public alignItemsHorizontallyWithPadding(padding:number):void; /** * align items in columns * @example * // Example * menu.alignItemsInColumns(3,2,3)// this will create 3 columns, with 3 items for first column, 2 items for second and 3 for third * * menu.alignItemsInColumns(3,3)//this creates 2 columns, each have 3 items */ public alignItemsInColumns(...args:Number[]):void; /** * align menu items in rows * @param {Number} args Arguments * @example * // Example * menu.alignItemsInRows(5,3)//this will align items to 2 rows, first row with 5 items, second row with 3 * * menu.alignItemsInRows(4,4,4,4)//this creates 4 rows each have 4 items */ public alignItemsInRows(...args:Number[]):void; } //////////////////////////////////////////////////////////////////////////////// // File: cocos2d/menus/CCMenuItem.js //////////////////////////////////////////////////////////////////////////////// /** * Subclass cc.MenuItem (or any subclass) to create your custom cc.MenuItem objects. * @class * @extends cc.Node * @param {function|String} callback * @param {cc.Node} target */ export class MenuItem extends Node { public enabled:boolean; /** * Constructor of cc.MenuItem * @param {function|String} callback * @param {cc.Node} target */ public constructor(callback:string|ccMenuItemCallback, target:Node); public ctor(callback?:string|ccMenuItemCallback, target?:Node); /** * return whether MenuItem is selected * @return {Boolean} */ public isSelected():boolean; /** * return whether MenuItem is Enabled * @return {Boolean} */ public isEnabled():boolean; /** * set enable value of MenuItem * @param {Boolean} enable */ public setEnabled(enable:boolean):void; /** * initializes a cc.MenuItem with callback * @param {function|String} callback * @param {cc.Node} target * @return {Boolean} */ public initWithCallback(callback:ccMenuItemCallback, target:Node):boolean; /** * return rect value of cc.MenuItem * @return {cc.Rect} */ public rect():Rect; /** * set the cc.MenuItem selected same as setIsSelected(true) */ public selected():void; /** * set the cc.MenuItem unselected same as setIsSelected(false) */ public unselected():void; /** * set the callback to the menu item * @param {function|String} callback * @param {cc.Node} target */ public setCallback(callback:ccMenuItemCallback, target:Node):void; /** * call the selector with target */ public activate():void; } /** * Any cc.Node that supports the cc.LabelProtocol protocol can be added. * Supported nodes: * - cc.BitmapFontAtlas * - cc.LabelAtlas * - cc.LabelTTF * @class * @extends cc.MenuItem * @param {cc.Node} label * @param {function|String} selector * @param {cc.Node} target * @example * var menuitemLabel = new cc.MenuItemLabel(label,selector,target); * * @property {String} string - Content string of label item * @property {cc.Node} label - Label of label item * @property {cc.Color} disabledColor - Color of label when it's disabled */ export class MenuItemLabel extends MenuItem { public string:string; public disabledColor:Color; public label:Node; /** * Constructor of cc.MenuItemLabel * @param {cc.Node} label * @param {function|String} callback * @param {cc.Node} target */ public constructor(label:Node, callback?:string|ccMenuItemCallback, target?:Node); /** * initializes a cc.MenuItemLabel with a label * @param {cc.Node} label * @param {function|String} callback * @param {cc.Node} target * @return {Boolean} */ public initWithLabel(label:Node, callback:string|ccMenuItemCallback, target:Node):boolean; /** * return the disable color for this cc.MenuItemLabel * @return {cc.Color} */ public getDisabledColor():Color; /** * set the disable color for this cc.MenuItemLabel * @param {cc.Color} color */ public setDisabledColor(color:Color):void; /** * return label of cc.MenuItemLabel * @return {cc.Node} */ public getLabel():Node; /** * set a label for cc.MenuItemLabel * @param {cc.Node} label */ public setLabel(label:Node):void; /** * set the string for cc.MenuItemLabel * @param {String} label */ public setString(label:string):void; /** * return the string of cc.MenuItemLabel * @returns {*|string|_p.string|ret.string|q.string|String} */ public getString():string; } /** * Helper class that creates a MenuItemLabel class with a LabelAtlas * @class * @extends cc.MenuItemLabel * @param {String} value * @param {String} charMapFile * @param {Number} itemWidth * @param {Number} itemHeight * @param {String} startCharMap a single character * @param {function|String|Null} callback * @param {cc.Node|Null} target * @example * var menuItem = new cc.MenuItemAtlasFont(param1,param2...); */ export class MenuItemAtlasFont extends MenuItemLabel { /** * the contructor of cc.MenuItemAtlasFont * @param {String} value * @param {String} charMapFile * @param {Number} itemWidth * @param {Number} itemHeight * @param {String} startCharMap a single character * @param {function|String|Null} callback * @param {cc.Node|Null} target */ public constructor(value:string, charMapFile:string, itemWidth:number, itemHeight:number, startCharMap:string, callback?:string|ccMenuItemCallback, target?:Node); /** * initializes a cc.MenuItemAtlasFont with string * @param {String} value * @param {String} charMapFile * @param {Number} itemWidth * @param {Number} itemHeight * @param {String} startCharMap a single character * @param {function|String|Null} callback * @param {cc.Node|Null} target * @return {Boolean} */ public initWithString(value:string, charMapFile:string, itemWidth:number, itemHeight:number, startCharMap:string, callback?:string|ccMenuItemCallback, target?:Node):boolean; } /** * Helper class that creates a CCMenuItemLabel class with a Label * @class * @extends cc.MenuItemLabel * @param {String} value text for the menu item * @param {function|String} callback * @param {cc.Node} target * @example * var menuItem = new cc.MenuItemFont(value, callback, target); * * @property {Number} fontSize - Font size of font item * @property {String} fontName - Font name of font item */ export class MenuItemFont extends MenuItemLabel { public fontName:string; public fontSize:number; /** * Constructor of cc.MenuItemFont * @param {String} value text for the menu item * @param {function|String} callback * @param {cc.Node} target */ public constructor(value:string, callback?:string|ccMenuItemCallback, target?:Node); /** * initializes cc.MenuItemFont with string * @param {String} value text for the menu item * @param {function|String} callback * @param {cc.Node} target * @return {Boolean} */ public initWithString(value:string, callback?:string|ccMenuItemCallback, target?:Node):boolean; /** * set the font size for cc.MenuItemFont * @param {Number} size */ public setFontSize(size:number):void; /** *return the font size of cc.MenuItemFont * @return {Number} */ public getFontSize():number; /** * set the font name for cc.MenuItemFont * @param {String} name */ public setFontName(name:string):void; /** * return the font name for cc.MenuItemFont * @return {String} */ public getFontName():string; } /** * CCMenuItemSprite accepts CCNode objects as items. * The images has 3 different states: * - unselected image * - selected image * - disabled image * @class * @extends cc.MenuItem * @param {Image|Null} normalSprite normal state image * @param {Image|Null} selectedSprite selected state image * @param {Image|cc.Node|Null} three disabled state image OR target node * @param {String|function|cc.Node|Null} four callback function name in string or actual function, OR target Node * @param {String|function|Null} five callback function name in string or actual function * * @example * var item = new cc.MenuItemSprite(normalImage)//create a menu item from a sprite with no functionality * var item = new cc.MenuItemSprite(normalImage, selectedImage)//create a menu Item, nothing will happen when clicked * var item = new cc.MenuItemSprite(normalImage, SelectedImage, disabledImage)//same above, but with disabled state image * var item = new cc.MenuItemSprite(normalImage, SelectedImage, 'callback', targetNode)//create a menu item, when clicked runs targetNode.callback() * var item = new cc.MenuItemSprite(normalImage, SelectedImage, disabledImage, targetNode.callback, targetNode) * //same as above, but with disabled image, and passing in callback function * * @property {cc.Sprite} normalImage - Sprite in normal state * @property {cc.Sprite} selectedImage - Sprite in selected state * @property {cc.Sprite} disabledImage - Sprite in disabled state */ export class MenuItemSprite extends MenuItem { public normalImage:Sprite; public selectedImage:Sprite; public disabledImage:Sprite; /** * Constructor of cc.MenuItemSprite * @param {Image|Null} normalSprite normal state image * @param {Image|Null} selectedSprite selected state image * @param {Image|cc.Node|Null} three disabled state image OR target node * @param {String|function|cc.Node|Null} four callback function name in string or actual function, OR target Node * @param {String|function|Null} five callback function name in string or actual function */ public constructor(normalSprite:Sprite, selectedSprite:Sprite, three?:Node|ccMenuItemCallback, four?:string|ccMenuItemCallback|Node, five?:Node); /** * initializes cc.MenuItemSprite with a cc.Sprite * @param {cc.Node} normalSprite * @param {cc.Node} selectedSprite * @param {cc.Node} disabledSprite * @param {function|String} callback * @param {cc.Node} target * @return {Boolean} */ public initWithNormalSprite(normalSprite:Sprite, selectedSprite:Sprite, disabledSprite:Sprite, callback:string|ccMenuItemCallback, target:Node):boolean; /** * return the normal status image(cc.Sprite) * @return {cc.Sprite} */ public getNormalImage():Sprite; /** * set the normal status image(cc.Sprite) * @param {cc.Sprite} normalImage */ public setNormalImage(normalImage:Sprite):void; /** * return the selected status image(cc.Sprite) of cc.MenuItemSprite * @return {cc.Sprite} */ public getSelectedImage():Sprite; /** * set the selected status image(cc.Sprite) * @param {cc.Sprite} selectedImage */ public setSelectedImage(selectedImage:Sprite):void; /** * return the disabled status of cc.MenuItemSprite * @return {cc.Sprite} */ public getDisabledImage():Sprite; /** * set the disabled status image(cc.Sprite) * @param {cc.Sprite} disabledImage */ public setDisabledImage(disabledImage:Sprite):void; } /** * cc.MenuItemImage accepts images as items. * The images has 3 different states: * - unselected image * - selected image * - disabled image * * For best results try that all images are of the same size * @class * @extends cc.MenuItemSprite * @param {string|null} normalImage * @param {string|null} selectedImage * @param {string|null} disabledImage * @param {function|string|null} callback * @param {cc.Node|null} target * @example * var menuItem = new cc.MenuItemImage(normalImage, selectedImage, three, four, five); */ export class MenuItemImage extends MenuItemSprite { /** * Constructor of cc.MenuItemImage * @param {string|null} normalImage * @param {string|null} selectedImage * @param {string|null} disabledImage * @param {function|string|null} callback * @param {cc.Node|null} target */ public constructor(normalImage?:string, selectedImage?:string, disabledImage?:string, callback?:string|ccMenuItemCallback, target?:Node); /** * initializes a cc.MenuItemImage * @param {string|null} normalImage * @param {string|null} selectedImage * @param {string|null} disabledImage * @param {function|string|null} callback * @param {cc.Node|null} target * @returns {boolean} */ public initWithNormalImage(normalImage?:string, selectedImage?:string, disabledImage?:string, callback?:string|ccMenuItemCallback, target?:Node):boolean; /** * sets the sprite frame for the normal image * @param {cc.SpriteFrame} frame */ public setNormalSpriteFrame(frame:SpriteFrame):void; /** * sets the sprite frame for the selected image * @param {cc.SpriteFrame} frame */ public setSelectedSpriteFrame(frame:SpriteFrame):void; /** * sets the sprite frame for the disabled image * @param {cc.SpriteFrame} frame */ public setDisabledSpriteFrame(frame:SpriteFrame):void; } /** * A simple container class that "toggles" it's inner items * The inner items can be any MenuItem * @class * @extends cc.MenuItem * * @property {Array} subItems - Sub items * @property {Number} selectedIndex - Index of selected sub item * *@example * // Example * //create a toggle item with 2 menu items (which you can then toggle between them later) * var toggler = new cc.MenuItemToggle( new cc.MenuItemFont("On"), new cc.MenuItemFont("Off"), this.callback, this) * //Note: the first param is the target, the second is the callback function, afterwards, you can pass in any number of menuitems * * //if you pass only 1 variable, then it must be a cc.MenuItem * var notYetToggler = new cc.MenuItemToggle(cc.MenuItemFont("On"));//it is useless right now, until you add more stuff to it * notYetToggler.addSubItem(new cc.MenuItemFont("Off")); * //this is useful for constructing a toggler without a callback function (you wish to control the behavior from somewhere else) */ export class MenuItemToggle extends MenuItem { public selectedIndex:number; public subItems:MenuItem[]; /** * Constructor of cc.MenuItemToggle */ //public constructor(...args:MenuItem[]); public constructor(); public ctor(...args:MenuItem[]); public ctor(); /** * initializes a cc.MenuItemToggle with items * @param {cc.MenuItem} args[0...last-2] the rest in the array are cc.MenuItems * @param {function|String} args[last-1] the second item in the args array is the callback * @param {cc.Node} args[last] the first item in the args array is a target * @return {Boolean} */ public initWithItems(...args:MenuItem[]):boolean; /** * return the index of selected * @return {Number} */ public getSelectedIndex():number; /** * set the seleceted index for cc.MenuItemToggle * @param {Number} selectedIndex */ public setSelectedIndex(selectedIndex:number):void; /** * similar to get children,return the sumItem array. * @return {Array} */ public getSubItems():MenuItem[]; /** * set the subitem for cc.MenuItemToggle * @param {cc.MenuItem} subItems */ public setSubItems(...subItems:MenuItem[]):void; /** * add the subitem for cc.MenuItemToggle * @param {cc.MenuItem} item */ public addSubItem(item:MenuItem):void; /** * returns the selected item (deprecated in -x, please use getSelectedItem instead.) * @return {cc.MenuItem} */ public selectedItem():MenuItem; /** * returns the selected item. * @return {cc.MenuItem} */ public getSelectedItem():MenuItem; } }