void getNextSound(int x, int y) { if(hold && getControlID() != CONTROL_R) return; if(sndMode == TYPE_PLS) { nextPlaylistField(); return; } getNextSoundInternal(true); }
void calendarMoveCursor(int x, int y) { switch(getControlID()) { case 0: // up button if(curDay > 7) { curDay -= 7; } break; case 1: // down button if(curDay < daysInMonth(curMonth-1,curYear)-6) { curDay += 7; } break; case 2: // left button --curDay; if(curDay < 1) { curDay = 1; } break; case 3: // right button ++curDay; if(curDay > daysInMonth(curMonth-1,curYear)) { curDay = daysInMonth(curMonth-1,curYear); } break; case 4: // edit up button moveKBCursorAbsolute(getPositionAbove()); break; case 5: // edit down button moveKBCursorAbsolute(getPositionBelow()); break; case 6: // edit left button if(getKBCursor() > 0) { moveKBCursorRelative(CURSOR_BACKWARD); } break; case 7: // edit right button if(!isReminderEnd(getKBCursor())) { moveKBCursorRelative(CURSOR_FORWARD); } break; } }
_XBool _XSliderEx::initWithoutTex(const _XRect& area,float max,float min, _XSliderType type,const _XVector2 &fontPosition) { if(m_isInited) return XFalse; //防止重复初始化 if(!m_mainSld.initWithoutTex(area,max,min,type,fontPosition)) return false; if(m_mainSld.m_typeVorH == SLIDER_TYPE_HORIZONTAL) {//水平模式 m_secondarySld.initWithoutTex(_XRect(0.0f,0.0f,area.getWidth(),area.getHeight()),max,min,type); m_chooseBtn.initWithoutTex("+",XEE::systemFont,1.0f,_XRect(0.0f,0.0f,area.getHeight(),area.getHeight()), _XVector2(area.getHeight() * 0.5f,area.getHeight() * 0.5f)); }else {//垂直模式 m_secondarySld.initWithoutTex(_XRect(0.0f,0.0f,area.getWidth(),area.getHeight()),max,min,type); m_chooseBtn.initWithoutTex("+",XEE::systemFont,1.0f,_XRect(0.0f,0.0f,area.getWidth(),area.getWidth()), _XVector2(area.getWidth() * 0.5f,area.getWidth() * 0.5f)); } m_mainSld.setCallbackFun(NULL,NULL,sliderExSldOnProc,sliderExSldProc,sliderExSldUpProc,sliderExSldChangeProc,sliderExSldMoveProc,this); m_secondarySld.disVisiable(); m_secondarySld.setCallbackFun(NULL,NULL,NULL,NULL,NULL,sliderExSldProc,sliderExSldProc,this); m_chooseBtn.disVisiable(); m_chooseBtn.setCallbackFun(NULL,NULL,NULL,NULL,sliderExBtnProc,this); if(m_funInit != NULL) m_funInit(m_pClass,getControlID()); m_isVisiable = XTrue; m_isEnable = XTrue; m_isActive = XTrue; #if WITH_OBJECT_MANAGER _XObjectManager::GetInstance().decreaseAObject(&m_mainSld); _XObjectManager::GetInstance().decreaseAObject(&m_secondarySld); _XObjectManager::GetInstance().decreaseAObject(&m_chooseBtn); #endif _XControlManager::GetInstance().addAObject(this,CTRL_OBJ_SLIDER); //在物件管理器中注册当前物件 #if WITH_OBJECT_MANAGER _XObjectManager::GetInstance().addAObject(this,OBJ_CONTROL); #endif m_isInited = XTrue; setPosition(0.0f,0.0f); return XTrue; }
void getPrevSound(int x, int y) { if(hold && getControlID() != CONTROL_L) return; if(sndMode == TYPE_PLS) { previousPlaylistField(); return; } if(soundMode == SOUND_ONESHOT) return; destroySound(); switch(soundMode) { case SOUND_NEXTFILE: if(getPrevSong()) // if there is a prev song soundLoaded = false; else { exitSound(0,0); } break; case SOUND_RANDFILE: int tmpCur = 0; if(prevRandomList(getFileName(), &tmpCur)) { moveCursorAbsolute(tmpCur); soundLoaded = false; } else { destroyRandomList(); exitSound(0,0); } break; } }
// onETouchEvent // update touch event bool CUIDPad::onEvent( const SEvent& gameEvent) { if ( (m_controlID != -1 && m_controlID != gameEvent.EventControlID) || m_isEnable == false ) return false; if ( gameEvent.EventType == EET_MOUSE_INPUT_EVENT ) { // check mouse hit this button core::position2di mousePos(gameEvent.MouseInput.X,gameEvent.MouseInput.Y); // check mouse over on button m_mouseOver = m_rect.isPointInside(mousePos); float fw = 1.0f, fh = 1.0f; CMenuFx *menuFx = m_flashObj.getMenu(); menuFx->getFxScaleRatio( &fw, &fh ); // delta drag const float k_maxMove = 100.0f*fw; if (gameEvent.MouseInput.Event == EMIE_LMOUSE_PRESSED_DOWN && m_mouseOver == true ) { // press m_controlID = gameEvent.EventControlID; // set flag CGameControl::getInstance()->setTouchIDStatus(m_controlID, 1); // set position m_dpadBasePos = mousePos; m_dpadMovePos = mousePos; // show flash obj m_dpadBase.setVisible( true ); m_dpadMove.setVisible( true ); // position ref to flash core::position2df flashMousePos(mousePos.X/fw, mousePos.Y/fh); m_dpadBase.setAbsolutePosition( (int)flashMousePos.X, (int)flashMousePos.Y ); m_dpadMove.setAbsolutePosition( (int)flashMousePos.X, (int)flashMousePos.Y ); } else if ( gameEvent.MouseInput.Event == EMIE_MOUSE_MOVED && getControlID() != -1 ) { // move core::position2di delta = mousePos - m_dpadBasePos; core::position2df moveVec((float)delta.X, (float)delta.Y); float length = moveVec.getLength(); if ( length > k_maxMove ) length = k_maxMove; // calc run angle moveVec.normalize(); // run event float f = length/k_maxMove; if ( f >= 0.3f ) { CGameControl::getInstance()->setRunParameter( f, (float)moveVec.getAngle() - 90.0f); CGameControl::getInstance()->setRunMode(true); } else CGameControl::getInstance()->setRunMode(false); // recalc touch pos to render moveVec *= length; m_dpadMovePos = m_dpadBasePos + core::position2di((int)moveVec.X, (int)moveVec.Y); // set position core::position2df flashMousePos(m_dpadMovePos.X/fw, m_dpadMovePos.Y/fh); m_dpadMove.setAbsolutePosition( (int)flashMousePos.X, (int)flashMousePos.Y ); } else if ( gameEvent.MouseInput.Event == EMIE_LMOUSE_LEFT_UP ) { // set flag if ( m_controlID != -1 ) CGameControl::getInstance()->setTouchIDStatus(m_controlID, 0); // release m_controlID = -1; // hide flash obj m_dpadBase.setVisible( false ); m_dpadMove.setVisible( false ); // stop CGameControl::getInstance()->setRunMode(false); } } return false; }