var HelloWorldLayer = cc.Layer.extend({ sprite:null, ctor:function () { this._super(); var size = cc.winSize; //添加背景 var bg=new cc.Sprite(res.Background_png); bg.setPosition(cc.p(size.width/2,size.height/2)); this.addChild(bg); //增加菜单选择 var placeLabel=new cc.LabelBMFont("Place",res.fnt2_fnt); var placeMenu=new cc.MenuItemLabel(placeLabel,this.onMenuCallBack,this); placeMenu.tag=ActionType.PLACE_TAG; var flipXLabel=new cc.LabelBMFont("FlipX",res.fnt2_fnt); var flipXMenu=new cc.MenuItemLabel(flipXLabel,this.onMenuCallBack,this); flipXMenu.tag=ActionType.FLIPX_TAG; var flipYLabel=new cc.LabelBMFont("FlipY",res.fnt2_fnt); var flipYMenu=new cc.MenuItemLabel(flipYLabel,this.onMenuCallBack,this); flipYMenu.tag=ActionType.FLIPY_TAG; var hideLabel=new cc.LabelBMFont("Hide or Show",res.fnt2_fnt); var hideMenu=new cc.MenuItemLabel(hideLabel,this.onMenuCallBack,this); hideMenu.tag=ActionType.HIDE_SHOW_TAG; var toggleLabel=new cc.LabelBMFont("Toggle",res.fnt2_fnt); var toggleMenu=new cc.MenuItemLabel(toggleLabel,this.onMenuCallBack,this); toggleMenu.tag=ActionType.TOGGLE_TAG; var menu=new cc.Menu(placeMenu,flipXMenu,flipYMenu,hideMenu,toggleMenu); menu.alignItemsVertically(); this.addChild(menu); return true; }, onMenuCallBack:function(sender){ cc.log("tag="+sender.tag); }});
var HelloWorldScene = cc.Scene.extend({ onEnter:function () { this._super(); var layer = new HelloWorldLayer(); this.addChild(layer); }});
var ActionType={ PLACE_TAG:102, FLIPX_TAG:103, FLIPY_TAG:104, HIDE_SHOW_TAG:105, TOGGLE_TAG:106};
代码如上,就是一个菜单的点击测试,实际结果发现点击的位置比实际生效的触摸位置低了大概20个像素,如下图:
用的环境是cocos2d-js 3.6.1版本的,测试过3.6的结果也一样,有人碰到过此类问题么?求解答
