http://www.cnblogs.com/andyque/archive/2011/07/15/2107758.html
http://www.iphonegametutorials.com/2010/09/07/cocos2d-menu-tutorial/#comment-32512
以上博客是介绍cocos2d里菜单的使用第一篇,我照着跑了一遍,发现自己编译后菜单项无法选择。
对每个方法一个个都追溯回去看,中间语法知识不足又上apple的library查了一下selector和block的语法,最后得出结论:
在MenuLayer.m里
1 - (void)onNewGame:(id)sender{ 2 [SceneManager goMenu]; 3 } 4 5 - (void)onCredits:(id)sender{ 6 [SceneManager goMenu];
应该改成
1 - (void)onNewGame:(id)sender{ 2 [SceneManager goPlay]; 3 } 4 5 - (void)onCredits:(id)sender{ 6 [SceneManager goCredits]; 7 8 }
这样再编译运行就没问题了。
但以上两篇博客看的人不少,为什么就没有人发现过这个问题?莫非是我哪里写的不对其实是乱改的?
PS 还有问题没搞懂:menu创建CCMenuItemFont时,响应单击action是怎么实现的?我在往上追溯各个方法的时候
一路查到宏定义NASssert 就看不懂了。
在CCMenuItem.m里 InitWithString: target: selector:这个方法初始化的时候,那个performSelector: 这里是不是就调用了goPlay、goCredits?
在子龙山人建议下对于涉及底层的东西,暂且不刨根问底,先用再说。
今天又仔细研究了一下,发现果然是我搞错情况了。菜单教程第二篇里,将goMenu调用修改成了goPlay、goCredits。虽然是自己搞的小失误,但是这是自己第一次跳出一步步的教程自己深究问题,获益还是不少的。