Cocos2d android CCMenu对触摸不响应
我刚开始使用cocos2dandroid,但在获取菜单以响应触摸事件时遇到了问题 场景加载并正常运行,但不会对触摸事件做出响应。如果我在ccTouchesEnded中设置断点,我可以截获事件,但从未调用startTouched、Options Touched和helpTouched。据我所知,CCMenu应该内置此功能 cocos2dandroid是从cocos2diphone移植而来的 谁能给我指出正确的方向吗 更新:Cocos2d android CCMenu对触摸不响应,android,cocos2d-android,Android,Cocos2d Android,我刚开始使用cocos2dandroid,但在获取菜单以响应触摸事件时遇到了问题 场景加载并正常运行,但不会对触摸事件做出响应。如果我在ccTouchesEnded中设置断点,我可以截获事件,但从未调用startTouched、Options Touched和helpTouched。据我所知,CCMenu应该内置此功能 cocos2dandroid是从cocos2diphone移植而来的 谁能给我指出正确的方向吗 更新: import org.cocos2d.events.CCTouchDisp
import org.cocos2d.events.CCTouchDispatcher;
import org.cocos2d.layers.CCColorLayer;
import org.cocos2d.layers.CCLayer;
import org.cocos2d.layers.CCScene;
import org.cocos2d.menus.CCMenu;
import org.cocos2d.menus.CCMenuItem;
import org.cocos2d.menus.CCMenuItemImage;
import org.cocos2d.nodes.CCDirector;
import org.cocos2d.types.ccColor4B;
import android.view.MotionEvent;
public class MenuLayer extends CCColorLayer {
public static CCScene scene() {
// Create the scene
CCScene scene = CCScene.node();
// Create a background layer.
CCLayer background = new MenuLayer(ccColor4B.ccc4(255, 255, 255, 255));
scene.addChild(background);
return scene;
}
protected MenuLayer(ccColor4B colour) {
super(colour);
// Create a menu items.
CCMenuItem start = CCMenuItemImage.item("Start.png", "Start.png",
this, "startTouched");
CCMenuItem options = CCMenuItemImage.item("Options.png",
"Options.png", this, "optionsTouched");
CCMenuItem help = CCMenuItemImage.item("Help.png", "Help.png", this,
"helpTouched");
// Create array of CCMenuItem object to add to CCMenu
CCMenuItem[] items = { start, options, help };
// Add menu items to menu
CCMenu menu = CCMenu.menu(items);
// Align items with 150px adding
menu.alignItemsVertically(150);
// Add menu to the scene
addChild(menu);
CCTouchDispatcher.sharedDispatcher().addTargetedDelegate(this, 0, true);
this.setIsTouchEnabled(true);
}
@Override
public boolean ccTouchesBegan(MotionEvent event) {
return true;
}
@Override
public boolean ccTouchesEnded(MotionEvent event) {
return super.ccTouchesEnded(event);
}
/**This method is called when the start menu item is touched**/
public void startTouched() {
CCScene scene = GameLayer.scene();
CCDirector.sharedDirector().pushScene(scene);
}
/**This method is called when the options menu item is touched**/
public void optionsTouched() {
CCScene scene = OptionsLayer.scene();
CCDirector.sharedDirector().replaceScene(scene);
}
/**This method is called when the help menu item is touched**/
public void helpTouched() {
CCScene scene = HelpLayer.scene();
CCDirector.sharedDirector().replaceScene(scene);
}
}
07-21 13:31:17.933:WARN/System.err(6660):java.lang.NoSuchMethodException:startTouched
07-21 13:31:17.933:警告/系统错误(6660):在
findMethodByName(ClassCache.java:247)
07-21 13:31:17.933:警告/系统错误(6660):在
java.lang.Class.getMethod(Class.java:962)
07-21 13:31:17.933:WARN/System.err(6660):位于org.cocos2d.menus.CCMenuItem。
(CCMenuItem.java:54)
...
//对于选项Touched和helpTouched,错误会重复
看起来它没有将选择器参数解析为正确的方法。有人看到startTouched或其他方法有什么问题吗?我通过向回调方法添加一个参数来修复它 例如:
07-21 13:31:17.933: WARN/System.err(6660): java.lang.NoSuchMethodException: startTouched
07-21 13:31:17.933: WARN/System.err(6660): at
java.lang.ClassCache.findMethodByName(ClassCache.java:247)
07-21 13:31:17.933: WARN/System.err(6660): at
java.lang.Class.getMethod(Class.java:962)
07-21 13:31:17.933: WARN/System.err(6660): at org.cocos2d.menus.CCMenuItem.<init>
(CCMenuItem.java:54)
...
// The errors repeat for optionsTouched and helpTouched
我还没有弄明白为什么需要这样做,但它奏效了。尼克,你能帮我吗。。我不熟悉使用cocos2d框架在android上开发游戏。。可以推荐一些教程和示例。很抱歉花了这么长时间才回复您。由于忙于上学,我放弃了这个项目。我把它放在GitHub上,这样你们就可以看到我到了哪里(不远)。嘿,伙计,我开始在android上开发cocos2d,但由于缺乏互联网上的资料,我面临很多困难。你能把我加到gtalk上吗。farhanahmad@gmail.com我们可以互相帮助。。。Thanx in Expectioni将其放在git hub上,因为我记得缺少示例。请查看我对上述问题的评论以获取链接。请随时给我发电子邮件。我已经在我的github帐户上公开了我的电子邮件。祝你好运
public void startTouched(Object sender) {
CCScene scene = GameLayer.scene();
CCDirector.sharedDirector().pushScene(scene);
}