cocos2d / cocos2d-html5

Cocos2d for Web Browsers. Built using JavaScript.
https://www.cocos.com
3.06k stars 903 forks source link

cc.MenuItemImage + 4 arguments (3 images + callback) #2883

Open metalim opened 9 years ago

metalim commented 9 years ago

MenuItemSprite works properly (sorry, coffeescript code):

images = ['#a.png','#b.png','#c.png']
sprites = (new cc.Sprite img for img in images)
button = new cc.MenuItemSprite sprites...,->console.log 'click!'

MenuItemImage fails to set arguments properly and fails on mouseclick:

images = ['#a.png','#b.png','#c.png']
button = new cc.MenuItemImage images...,->console.log 'click!'
...
pandamicro commented 9 years ago

What does your coffee script code correspond as JS ?

metalim commented 9 years ago

This works:

var images = ['#a.png','#b.png','#c.png'];
var button = new cc.MenuItemSprite(new cc.Sprite(images[0]),new cc.Sprite(images[1]),new cc.Sprite(images[2]),function(){console.log 'click!'});

and this fails:

var images = ['#a.png','#b.png','#c.png'];
var button = new cc.MenuItemImage(images[0],images[1],images[2],function(){console.log 'click!'});
pandamicro commented 9 years ago

What is the error message

pandamicro commented 9 years ago

@jianglong0156 Please test this issue

metalim commented 9 years ago

When you click MenuItemImage, error is:

Uncaught TypeError: a[b] is not a function
cc.MenuItem.cc.Node.extend.activate @ cocos2d-js-v3.6-min.js:1526
cc.Menu.cc.Layer.extend._onTouchEnded @ cocos2d-js-v3.6-min.js:1561
cc.eventManager._onTouchEventCallback @ cocos2d-js-v3.6-min.js:267
cc.eventManager._dispatchEventToListeners @ cocos2d-js-v3.6-min.js:271
cc.eventManager._dispatchTouchEvent @ cocos2d-js-v3.6-min.js:269
cc.eventManager.dispatchEvent @ cocos2d-js-v3.6-min.js:280
cc.inputManager.handleTouchesEnd @ cocos2d-js-v3.6-min.js:201
(anonymous function) @ cocos2d-js-v3.6-min.js:208

because it set it's constructor arguments incorrectly, if there's function (4th argument), but target (5th argument) is undefined.