JNIEXPORT jboolean JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeKeyDown(JNIEnv * env, jobject thiz, jint keyCode) { Director* pDirector = Director::getInstance(); switch (keyCode) { case KEYCODE_BACK: if (pDirector->getKeypadDispatcher()->dispatchKeypadMSG(kTypeBackClicked)) return JNI_TRUE; break; case KEYCODE_MENU: if (pDirector->getKeypadDispatcher()->dispatchKeypadMSG(kTypeMenuClicked)) return JNI_TRUE; break; default: return JNI_FALSE; } return JNI_FALSE; }
/// Callbacks void Layer::onEnter() { Director* pDirector = Director::getInstance(); // register 'parent' nodes first // since events are propagated in reverse order if (_touchEnabled) { this->registerWithTouchDispatcher(); } // then iterate over all the children Node::onEnter(); // add this layer to concern the Accelerometer Sensor if (_accelerometerEnabled) { pDirector->getAccelerometer()->setDelegate(CC_CALLBACK_1(Layer::didAccelerate, this)); } // add this layer to concern the keypad msg if (_keypadEnabled) { pDirector->getKeypadDispatcher()->addDelegate(this); } }
/// isKeypadEnabled setter void Layer::setKeypadEnabled(bool enabled) { if (enabled != _keypadEnabled) { _keypadEnabled = enabled; if (_running) { Director* pDirector = Director::getInstance(); if (enabled) { pDirector->getKeypadDispatcher()->addDelegate(this); } else { pDirector->getKeypadDispatcher()->removeDelegate(this); } } } }
void Layer::onExit() { Director* pDirector = Director::getInstance(); if( _touchEnabled ) { pDirector->getTouchDispatcher()->removeDelegate(this); } // remove this layer from the delegates who concern Accelerometer Sensor if (_accelerometerEnabled) { pDirector->getAccelerometer()->setDelegate(nullptr); } // remove this layer from the delegates who concern the keypad msg if (_keypadEnabled) { pDirector->getKeypadDispatcher()->removeDelegate(this); } Node::onExit(); }