Dokunmatik giriş etkinliklerini işlemek için diziyi okuyun
Oyun döngünüzde motionEvents. Bu
bu dizilerin son temizlenmesinden bu yana gerçekleşen etkinlikleri içerir.
İçeriklerin sayısı motionEventsCount içinde depolanır.
Oyun döngünüzdeki her etkinliği yineleyin ve yönetin. Bu örnekte aşağıdaki kod
motionEventsişlemini yineler ve bunlarıhandle_eventüzerinden işler:for(size_t i = 0; i < mApp->motionEventsCount; ++i) { GameActivityMotionEvent* motionEvent = mApp->motionEvents[i]; int action = motionEvent->action; int actionMasked = action & AMOTION_EVENT_ACTION_MASK; int ptrIndex = (action & AMOTION_EVENT_ACTION_POINTER_INDEX_MASK) >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; struct CookedEvent ev; memset(&ev, 0, sizeof(ev)); if (actionMasked == AMOTION_EVENT_ACTION_DOWN || actionMasked == AMOTION_EVENT_ACTION_POINTER_DOWN) { ev.type = COOKED_EVENT_TYPE_POINTER_DOWN; } else if (actionMasked == AMOTION_EVENT_ACTION_UP || actionMasked == AMOTION_EVENT_ACTION_POINTER_UP) { ev.type = COOKED_EVENT_TYPE_POINTER_UP; } else { ev.type = COOKED_EVENT_TYPE_POINTER_MOVE; } ev.motionPointerId = motionEvent->pointers[ptrIndex].id; ev.motionIsOnScreen = motionEvent->source == AINPUT_SOURCE_TOUCHSCREEN; ev.motionX = GameActivityPointerInfo_getX( &motionEvent->pointers[ptrIndex]); ev.motionY = GameActivityPointerInfo_getY( &motionEvent->pointers[ptrIndex]); if (ev.motionIsOnScreen) { // Use screen size as the motion range. ev.motionMinX = 0.0f; ev.motionMaxX = SceneManager::GetInstance()->GetScreenWidth(); ev.motionMinY = 0.0f; ev.motionMaxY = SceneManager::GetInstance()->GetScreenHeight(); } handle_event(&ev); }İşiniz bittiğinde, az önce tamamladığınız etkinlik sırasını temizlemeyi işlenen:
android_app_clear_motion_events(mApp);