//键盘的排列是4*3 int _XPasswardPad::init(const _XVector2& position,_XPasswardPadTexture *tex,const _XFontUnicode& font,const _XPasswardPadData& data) { if(m_isInited != 0) return 1; if(tex == NULL) return 0; m_texture = tex; m_passwardPadData = data; if(m_caption.setACopy(font) == 0) return 0; m_caption.setPosition(m_passwardPadData.captionPosition.x,m_passwardPadData.captionPosition.y); //if(m_buttonTexture.set(m_texture->buttonNormal,m_texture->buttonDown,m_texture->buttonOn,m_texture->buttonDisable) == 0) return 0; //初始化按钮 m_button[0].init(m_passwardPadData.bottonOffsetPosition,_XRect(0,0,m_passwardPadData.bottonEffectArea.x,m_passwardPadData.bottonEffectArea.y), m_texture->m_bottomTex,"0",m_caption,1.0f,m_passwardPadData.bottonTextPosition); m_button[0].setPosition(m_passwardPadData.bottonOffsetPosition); for(int i = 1;i < 12;++ i) { m_button[i].setACopy(m_button[0]); m_button[i].setPosition(m_passwardPadData.bottonOffsetPosition.x + (i % 3) * m_passwardPadData.bottonDistance.x, m_passwardPadData.bottonOffsetPosition.y + (int)(i / 3) * m_passwardPadData.bottonDistance.y); } m_button[0].setCaptionText("0"); m_button[0].setCallbackFun(NULL,NULL,NULL,NULL,btnFunc00,this); m_button[1].setCaptionText("1"); m_button[1].setCallbackFun(NULL,NULL,NULL,NULL,btnFunc01,this); m_button[2].setCaptionText("2"); m_button[2].setCallbackFun(NULL,NULL,NULL,NULL,btnFunc02,this); m_button[3].setCaptionText("3"); m_button[3].setCallbackFun(NULL,NULL,NULL,NULL,btnFunc03,this); m_button[4].setCaptionText("4"); m_button[4].setCallbackFun(NULL,NULL,NULL,NULL,btnFunc04,this); m_button[5].setCaptionText("5"); m_button[5].setCallbackFun(NULL,NULL,NULL,NULL,btnFunc05,this); m_button[6].setCaptionText("6"); m_button[6].setCallbackFun(NULL,NULL,NULL,NULL,btnFunc06,this); m_button[7].setCaptionText("7"); m_button[7].setCallbackFun(NULL,NULL,NULL,NULL,btnFunc07,this); m_button[8].setCaptionText("8"); m_button[8].setCallbackFun(NULL,NULL,NULL,NULL,btnFunc08,this); m_button[9].setCaptionText("9"); m_button[9].setCallbackFun(NULL,NULL,NULL,NULL,btnFunc09,this); m_button[10].setCaptionText("确定"); m_button[10].setCallbackFun(NULL,NULL,NULL,NULL,btnFunc10,this); m_button[10].setCaptionPosition(m_passwardPadData.bottonTextPosition); m_button[11].setCaptionText("取消"); m_button[11].setCallbackFun(NULL,NULL,NULL,NULL,btnFunc11,this); m_button[11].setCaptionPosition(m_passwardPadData.bottonTextPosition); m_sprite.init(m_texture->backGround->texture.m_w,m_texture->backGround->texture.m_h,1); m_sprite.setPosition(0.0f,0.0f); m_position = position; setPosition(position); m_isInited = 1; return 1; }
_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; }
int main(int argc, char **argv) { int stepTime; //两次调用之间的时间差 if(initWindow(1280,720,"Xiajia") == NULL) {//建立窗体 printf("Window init error!\n"); return 0; } //_XLogbook::GetInstance().initLog("Log.txt"); #if WITH_OBJECT_MANAGER _XObjectManager::GetInstance().init(); #endif //初始化字体 _XFontUnicode FontUnicode; FontUnicode.init("pic/Font/FontUnicode30_T000.png",_XVector2I(30,30),_XVector2I(34,34),4); #if WITH_OBJECT_MANAGER _XObjectManager::GetInstance().decreaseAObject(&FontUnicode); #endif //初始化按钮 _XButtonTexture ButtonTexture; ButtonTexture.init("pic/Button/B_00.png","pic/Button/B_01.png","pic/Button/B_02.png","pic/Button/B_03.png"); Button.init(_XVector2(0.0f,30.0f),_XRect(10.0f,7.0f,119.0f,58.0f),ButtonTexture,"xiajia",FontUnicode,0.5f,_XVector2(64.0f,32.0f)); Button.setCallbackFun(NULL,NULL,cbMouseOn,cbMouseDown,cbMouseUp,NULL); Button.setSize(1.0f,1.0f); Button.setCaptionText("你好啊"); Button.setHotKey(SDLK_0); ButtonCopy.setACopy(Button); ButtonCopy.setPosition(0.0f,100.0f); ButtonCopy.setCaptionText("你好个屁"); ButtonCopy.disable(); _XButtonTexture ButtonTextureEx; ButtonTextureEx.init("pic/ButtonEx/B_00.png","pic/ButtonEx/B_01.png","pic/ButtonEx/B_02.png","pic/ButtonEx/B_03.png"); _XVector2 ButtonExArea[6]; ButtonExArea[0].set(38.0f,20.0f); ButtonExArea[1].set(13.0f,64.0f); ButtonExArea[2].set(38.0f,109.0f); ButtonExArea[3].set(91.0f,109.0f); ButtonExArea[4].set(116.0f,64.0f); ButtonExArea[5].set(91.0f,20.0f); ButtonEx.init(_XVector2(150.0f,30.0f),ButtonExArea,6,ButtonTextureEx,"静",1.0f,_XVector2(64.0f,64.0f),FontUnicode); ButtonExCopy.setACopy(ButtonEx); ButtonExCopy.setPosition(280.0f,30.0f); ButtonExCopy.setCaptionText("忍"); //初始化复选框 _XCheckTexture CheckTexture; CheckTexture.init("pic/Check/C_00.png","pic/Check/C_01.png","pic/Check/CD_00.png","pic/Check/CD_01.png"); Check.init(_XVector2(0.0f,160.0f),_XRect(18.0f,19.0f,42.0f,43.0f),CheckTexture,"复选框",FontUnicode,1.0f,_XVector2(45.0f,32.0f)); CheckCopy.setACopy(Check); CheckCopy.setPosition(150.0f,160.0f); CheckCopy.setText("复选个蛋"); CheckCopy.setSize(0.5f,0.5f); //初始化右键菜单 _XMouseRightButtonMenuTexture MouseRightButtonMenuTexture; MouseRightButtonMenuTexture.init("pic/RightButtonMenu/00.png","pic/RightButtonMenu/01.png","pic/RightButtonMenu/02.png","pic/RightButtonMenu/03.png"); MouseRightButtonMenu.init(4,_XVector2(0.0f,0.0f),_XRect(8.0f,2.0f,252.0f,49.0f),MouseRightButtonMenuTexture,FontUnicode,1.0,_XVector2(133.0f,25.0f)); MouseRightButtonMenu.setText("剪切(T)",0); MouseRightButtonMenu.setText("复制(C)",1); MouseRightButtonMenu.setText("粘贴(V)",2); MouseRightButtonMenu.setText("撤销(S)",3); MouseRightButtonMenu.setHotKey(SDLK_t,0); MouseRightButtonMenu.setHotKey(SDLK_c,1); MouseRightButtonMenu.setHotKey(SDLK_v,2); MouseRightButtonMenu.setHotKey(SDLK_s,3); //MouseRightButtonMenu.setCallbackFun(NULL,NULL); MouseRightButtonMenu.setSize(0.5f,0.5f); _XControlManager::GetInstance().decreaseAObject(&MouseRightButtonMenu); #if WITH_OBJECT_MANAGER _XObjectManager::GetInstance().decreaseAObject(&MouseRightButtonMenu); #endif //初始化输入框 _XEditTexture EditTexture; EditTexture.init("pic/Edit/E_back.png","pic/Edit/E_disable.png","pic/Edit/E_Select.png","pic/Edit/E_Insert.png","pic/Edit/E_upon.png"); FontUnicode.setAlignmentModeX(_FONT_ALIGNMENT_MODE_X_LEFT); //设置字体左对齐 FontUnicode.setColor(0.0f,0.0f,0.0f,1.0f); Edit.init(_XVector2(400.0f,50.0f),_XRect(12.0f,2.0f,509.0f,38.0f),EditTexture,"Test",FontUnicode,1.0f,&MouseRightButtonMenu); //Edit.disable(); //Edit.setCallbackFun(NULL,eInputOver,&Edit); Edit.setString("This is a test for setString()."); EditCopy.setACopy(Edit); EditCopy.setPosition(400.0f,100.0f); EditCopy.setSize(0.5f,0.5f); EditCopy.setTextColor(_XFColor(1.0f,1.0f,1.0f,1.0f)); //初始化滑动条 _XSliderTexture SliderTexture; //垂直滑动条 //SliderTexture.init("pic/Slider/BLH_00.png","pic/Slider/BLH_01.png","pic/Slider/BLH_02.png","pic/Slider/BLH_03.png", //"pic/Slider/BH_00.png","pic/Slider/BH_01.png","pic/Slider/BH_02.png","pic/Slider/BH_03.png"); //Slider.init(_XVector2(50.0f,250.0f),_XRect(6.0f,11.0f,32.0f,506.0f),_XRect(5.0f,4.0f,27.0f,26.0f),SliderTexture,_XSLIDER_TYPE_VERTICAL,100.0f,0.0f); //水平滑动条 SliderTexture.init("pic/Slider/BL_00.png","pic/Slider/BL_01.png","pic/Slider/BL_02.png","pic/Slider/BL_03.png", "pic/Slider/B_00.png","pic/Slider/B_01.png","pic/Slider/B_02.png","pic/Slider/B_03.png"); Slider.init(_XVector2(0.0f,250.0f),_XRect(11.0f,0.0f,506.0f,26.0f),_XRect(4.0f,5.0f,27.0f,26.0f),SliderTexture,_XSLIDER_TYPE_HORIZONTAL,100.0f,0.0f); Slider.setCallbackFun(NULL,NULL,NULL,NULL,NULL,sliderChange,NULL,&Slider); Slider.setNowValue(55.0f); SliderCopy.setACopy(Slider); SliderCopy.setPosition(0.0f,300.0f); SliderCopy.setSize(0.5f,0.5f); //下面是单选框 Radios.init(5,_XVector2(0.0f,35.0f),_XVector2(00.0f,350.0f),_XRect(18.0f,19.0f,42.0f,43.0f),&CheckTexture,FontUnicode,1.0f,_XVector2(45.0f,32.0f)); Radios.setRadioText("我真的很蛋疼",0); Radios.setRadioText("我蛋疼而且要爆了",1); Radios.setRadioText("我要爆了",2); Radios.setRadioText("我已经爆了",3); Radios.setRadioText("I have a boom!",4); Radios.setChoosed(3); RadiosCopy.setACopy(Radios); RadiosCopy.setPosition(300.0f,350.0f); RadiosCopy.setRadioSum(8); RadiosCopy.setSize(0.5f,0.5f); RadiosCopy.setRadioText("蛋完美了",0); RadiosCopy.setRadioText("蛋好了",1); RadiosCopy.setRadioText("蛋开始好了",2); RadiosCopy.setRadioText("蛋没变化",3); RadiosCopy.setRadioText("蛋变坏了",4); RadiosCopy.setRadioText("蛋变胀痛",5); RadiosCopy.setRadioText("蛋要爆了",6); RadiosCopy.setRadioText("蛋已经爆了",7); //下面是进度条 _XNumber Number; Number.init("pic/Number.png",_XVector2I(15,30),_XVector2I(8,2)); #if WITH_OBJECT_MANAGER _XObjectManager::GetInstance().decreaseAObject(&Number); #endif _XProgressTexture ProgressTexture; ProgressTexture.init("pic/Progress/PB_00.png","pic/Progress/PM_00.png","pic/Progress/PU_00.png"); Progress.init(_XVector2(0.0f,550.0f),_XRect(2.0f,0.0f,509.0f,30.0f),ProgressTexture,&Number,1.0f,_XVector2(256.0f,3.0f)); Progress.setValue(25.0f); ProgressCopy.setACopy(Progress); ProgressCopy.setPosition(0.0f,600.0f); ProgressCopy.setSize(0.5f,0.5f); ProgressCopy.setColor(_XFColor(1.0f,1.0f,1.0f,0.5f)); //下面是多行文本显示 _XSliderTexture SliderTextureH; SliderTextureH.init("pic/MutiText/SliderH/BL_00.png","pic/MutiText/SliderH/BL_01.png","pic/MutiText/SliderH/BL_02.png","pic/MutiText/SliderH/BL_03.png", "pic/MutiText/SliderH/B_00.png","pic/MutiText/SliderH/B_01.png","pic/MutiText/SliderH/B_02.png","pic/MutiText/SliderH/B_03.png"); _XSlider SliderH; SliderH.init(_XVector2(200.0f,200.0f),_XRect(0.0f,0.0f,512.0f - 40.0f,32.0f),_XRect(0.0f,0.0f,32.0f,32.0f),SliderTextureH,_XSLIDER_TYPE_HORIZONTAL,100.0f,0.0f); _XControlManager::GetInstance().decreaseAObject(&SliderH); #if WITH_OBJECT_MANAGER _XObjectManager::GetInstance().decreaseAObject(&SliderH); #endif _XSliderTexture SliderTextureV; SliderTextureV.init("pic/MutiText/SliderV/BLH_00.png","pic/MutiText/SliderV/BLH_01.png","pic/MutiText/SliderV/BLH_02.png","pic/MutiText/SliderV/BLH_03.png", "pic/MutiText/SliderV/BH_00.png","pic/MutiText/SliderV/BH_01.png","pic/MutiText/SliderV/BH_02.png","pic/MutiText/SliderV/BH_03.png"); _XSlider SliderV; SliderV.init(_XVector2(200.0f,200.0f),_XRect(0.0f,0.0f,32.0f,512.0f - 40.0f),_XRect(0.0f,0.0f,32.0f,32.0f),SliderTextureV,_XSLIDER_TYPE_VERTICAL,100.0f,0.0f); _XControlManager::GetInstance().decreaseAObject(&SliderV); #if WITH_OBJECT_MANAGER _XObjectManager::GetInstance().decreaseAObject(&SliderV); #endif char tempTest[] = "0 :jiashenghua\n1 :123456789012345678901234567890123456789\n2 :PI = 3.141592653589793\n3 :\n\n5 :don`t use Chinese\n6 :It is not supply for Chinese at now!\n7 :\n8 :\n9 :\n10:\n11:\n12:\n13:\n14:\n15:\n16:"; _XMultiTextTexture MutiTextTexture; MutiTextTexture.init("pic/MutiText/E_back.png","pic/MutiText/E_disable.png","pic/MutiText/E_Select.png","pic/MutiText/E_Insert.png","pic/MutiText/E_up.png"); MutiText.init(_XVector2(520.0f,150.0f),_XRect(4.0f,4.0f,508.0f,508.0f),MutiTextTexture,tempTest,FontUnicode,1.0f/*,MouseRightButtonMenu*/,SliderV,SliderH); MutiText.setSize(0.5f,0.5f); MutiTextCopy.setACopy(MutiText); MutiTextCopy.setSize(0.5f,0.5f); MutiTextCopy.setPosition(790.0f,150.0f); MutiTextCopy.setTextColor(_XFColor(1.0f,1.0f,1.0f,1.0f)); MutiTextCopy.disActive(); MutiTextCopy.disVisiable(); //多列列表框 _XSliderTexture SliderTextureHX; SliderTextureHX.init("pic/MutiList/SliderH/BL_00.png","pic/MutiList/SliderH/BL_01.png","pic/MutiList/SliderH/BL_02.png","pic/MutiList/SliderH/BL_03.png", "pic/MutiList/SliderH/B_00.png","pic/MutiList/SliderH/B_01.png","pic/MutiList/SliderH/B_02.png","pic/MutiList/SliderH/B_03.png"); _XSlider SliderHX; SliderHX.init(_XVector2(200.0f,200.0f),_XRect(0.0f,0.0f,512.0f - 40.0f,32.0f),_XRect(0.0f,0.0f,32.0f,32.0f),SliderTextureHX,_XSLIDER_TYPE_HORIZONTAL,100.0f,0.0f); _XControlManager::GetInstance().decreaseAObject(&SliderHX); #if WITH_OBJECT_MANAGER _XObjectManager::GetInstance().decreaseAObject(&SliderHX); #endif _XSliderTexture SliderTextureVX; SliderTextureVX.init("pic/MutiList/SliderV/BLH_00.png","pic/MutiList/SliderV/BLH_01.png","pic/MutiList/SliderV/BLH_02.png","pic/MutiList/SliderV/BLH_03.png", "pic/MutiList/SliderV/BH_00.png","pic/MutiList/SliderV/BH_01.png","pic/MutiList/SliderV/BH_02.png","pic/MutiList/SliderV/BH_03.png"); _XSlider SliderVX; SliderVX.init(_XVector2(200.0f,200.0f),_XRect(0.0f,0.0f,32.0f,512.0f - 40.0f),_XRect(0.0f,0.0f,32.0f,32.0f),SliderTextureVX,_XSLIDER_TYPE_VERTICAL,100.0f,0.0f); _XControlManager::GetInstance().decreaseAObject(&SliderVX); #if WITH_OBJECT_MANAGER _XObjectManager::GetInstance().decreaseAObject(&SliderVX); #endif _XMultiListTexture MutiListTexture; MutiListTexture.init("pic/MutiList/E_back.png","pic/MutiList/E_disable.png","pic/MutiList/E_Select.png","pic/MutiList/E_move.png","pic/MutiList/E_Title.png","pic/MutiList/E_TitleEnd.png"); MutiList.init(_XVector2(610.0f,450.0f),_XRect(4.0f,4.0f,508.0f,508.0f),MutiListTexture,FontUnicode,1.0f,3,24/*,MouseRightButtonMenu*/,SliderVX,SliderHX); char tempChar[] = "Boxxx"; for(int i = 0;i < 24;++ i) { for(int j = 0; j < 3;++ j) { tempChar[3] = (i * 4 + j) /10 + '0'; tempChar[4] = (i * 4 + j) %10 + '0'; MutiList.setBoxStr(tempChar,i,j); } } MutiList.setTileStr("贾Title00",0); MutiList.setRowWidth(100,0); MutiList.setTileStr("Title胜",1); MutiList.setRowWidth(120,1); MutiList.setTileStr("Title02华",2); MutiList.setRowWidth(150,2); MutiList.exportData(); //MutiList.importData(); MutiList.setPosition(610,450); MutiList.setSize(0.5,0.5); //初始化下拉菜单 _XComboTexture ComboTexture; ComboTexture.init("pic/Combo/C_back.png","pic/Combo/C_disable.png", "pic/Combo/RightButton/C_rightButtomEnable.png","pic/Combo/RightButton/C_rightButtomOn.png", "pic/Combo/RightButton/C_rightButtomDown.png","pic/Combo/RightButton/C_rightButtomDisable.png", "pic/Combo/MenuUpButton/C_downMenuUpEnable.png","pic/Combo/MenuUpButton/C_downMenuUpOn.png", "pic/Combo/MenuUpButton/C_downMenuUpDown.png","pic/Combo/MenuUpButton/C_downMenuUpDisable.png", "pic/Combo/MenuButton/C_downMenuEnable.png","pic/Combo/MenuButton/C_downMenuOn.png", "pic/Combo/MenuButton/C_downMenuDown.png","pic/Combo/MenuButton/C_downMenuDisable.png", "pic/Combo/MenuDownButton/C_downMenuDownEnable.png","pic/Combo/MenuDownButton/C_downMenuDownOn.png", "pic/Combo/MenuDownButton/C_downMenuDownDown.png","pic/Combo/MenuDownButton/C_downMenuDownDisable.png"); Combo.init(ComboTexture,_XVector2(250.0f,190.0f),_XRect(8.0f,1.0f,217.0f,43.0f),_XRect(6.0f,1.0f,48.0f,43.0f),_XRect(8.0f,1.0f,261.0f,23.0f), _XRect(8.0f,1.0f,261.0f,39.0f),_XRect(8.0f,1.0f,261.0f,23.0f),10,5,FontUnicode,1.0f); Combo.setMenuStr("This input is long",0); Combo.setMenuStr("蛋疼!",1); Combo.setMenuStr("蛋巨疼!",2); Combo.setMenuStr("蛋碎了!",3); Combo.setMenuStr("蛋爆了!",4); ComboCopy.setACopy(Combo); ComboCopy.setPosition(250.0f,160.0f); ComboCopy.setSize(_XVector2(0.5,0.5)); printf("Now ctrl sum:%d\n",_XControlManager::GetInstance().getObjSum()); #if WITH_OBJECT_MANAGER printf("Now obj sum:%d\n",_XObjectManager::GetInstance().getNowObjectSum()); #endif int frameOrder = 0; while(!SDL_event()) { stepTime = getFrameTiming(); //_XLogbook::GetInstance().addLogInfoNull("NO %d Frame Time:%d\n",frameOrder,interval); engineMove(stepTime); //引擎的更新内容 clearScreen(); //清除屏幕 updateScreen(); //更新屏幕的内容 ++ frameOrder; SDL_Delay(1); } //_XLogbook::GetInstance().releaseLog(); releaseSDL(); return 0; }