2.2.4 的bug:Android返回键event == nil

function MainMenuScene:onEnter()
if device.platform == “android” then
– avoid unmeant back
self:performWithDelay(function()
– keypad layer, for android
local layer = display.newLayer()
layer:addNodeEventListener(cc.KEYPAD_EVENT, function(event)
print(“NodeEventListener”)
dump(event)
if event.key == “back” then
app.exit()
end
end)
self:addChild(layer)

        layer:setKeypadEnabled(true)
    end, 0.5)
end

end

安卓按返回键后listener函数会被调用,但是event 是nil

本来想在github上提交,但是密码忘了:12:

是的 是没有传这个参数

int CCLuaEngine::executeLayerKeypadEvent(CCLayer* pLayer, int eventType)
{
m_stack->clean();
CCLuaValueDict event;
event"name"] = CCLuaValue::stringValue(“clicked”);
switch (eventType)
{
case kTypeBackClicked:
event"key"] = CCLuaValue::stringValue(“back”);
break;

    case kTypeMenuClicked:
        event"key"] = CCLuaValue::stringValue("menu");
        break;

    default:
        return 0;
}

m_stack->pushCCLuaValueDict(event);

CCArray *listeners = pLayer->getAllScriptEventListeners();
CCScriptHandlePair *p;
for (int i = listeners->count() - 1; i >= 0; --i)
{
    p = dynamic_cast<CCScriptHandlePair*>(listeners->objectAtIndex(i));
    if (p->event != KEYPAD_EVENT || p->removed) continue;
    m_stack->copyValue(1);
    m_stack->executeFunctionByHandler(p->listener, 1);
    m_stack->settop(1);
}
m_stack->clean();
return 0;

}

函数中少调了红色部分代码 你可以提交一个pr

PS:晚上回去如果你没提交 我就提交

我提交不了,先改自己手上的文件里,3Q:14:

mark,回家之后修改修改。。。。。。。。。。。。