• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 505  文章 - 1034  trackbacks - 0
            <2006年7月>
            2526272829301
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345


            子曾經(jīng)曰過(guò):編程無(wú)他,唯手熟爾!

            常用鏈接

            留言簿(94)

            隨筆分類(649)

            隨筆檔案(505)

            相冊(cè)

            BCB

            Crytek

            • crymod
            • Crytek's Offical Modding Portal

            Game Industry

            OGRE

            other

            Programmers

            Qt

            WOW Stuff

            搜索

            •  

            積分與排名

            • 積分 - 914431
            • 排名 - 14

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            今天終于把BackSpace鍵刪除不了TextInput里面字符的問(wèn)題給解決了,發(fā)現(xiàn)原因是沒(méi)處理WM_KEYDOWN和WM_KEYUP

            就是這幾行,呵呵,這是GamebryoGFxApp里面的,拿過(guò)來(lái)用就好了
                    // Pass windows key messages to GFx
                    case WM_KEYDOWN:
                    
            case WM_KEYUP:
                    {
                        GFxKey::Code eKeyCode 
            = GFxKey::VoidSymbol;
                        WPARAM wCharCode 
            = pkEventRecord->wParam;

                        
            if (wCharCode >= 'A' && wCharCode <= 'Z')
                        {
                            eKeyCode 
            = (GFxKey::Code) ((wCharCode - 'A'+ 
                                GFxKey::A);
                        }
                        
            else if (wCharCode >= VK_F1 && wCharCode <= VK_F15)
                        {
                            eKeyCode 
            = (GFxKey::Code) ((wCharCode - VK_F1) + 
                                GFxKey::F1);
                        }
                        
            else if (wCharCode >= '0' && wCharCode <= '9')
                        {
                            eKeyCode 
            = (GFxKey::Code) ((wCharCode - '0'+ 
                                GFxKey::Num0);
                        }
                        
            else if (wCharCode >= VK_NUMPAD0 && wCharCode <= VK_DIVIDE)
                        {
                            eKeyCode 
            = (GFxKey::Code) ((wCharCode - VK_NUMPAD0) + 
                                GFxKey::KP_0);
                        }
                        
            else 
                        {
                            
            for (int i = 0; KeyCodeMap[i].winKey != 0; i++)
                            {
                                
            if (wCharCode == (UInt)KeyCodeMap[i].winKey)
                                {
                                    eKeyCode 
            = KeyCodeMap[i].appKey;
                                    
            break;
                                }
                            }
                        }
                        unsigned 
            char asciiCode = 0;
                        
            if (eKeyCode != GFxKey::VoidSymbol) 
                        {
                            
            // get the ASCII code, if possible.
                            UINT uScanCode = 
                                ((UINT)pkEventRecord
            ->lParam >> 16& 0xFF;
                            BYTE ks[
            256];
                            WORD charCode;

                            
            // Get the current keyboard state
                            ::GetKeyboardState(ks);

                            
            if (::ToAscii((UINT)wCharCode, uScanCode, ks, &charCode, 0
                                
            > 0)
                            {
                                asciiCode 
            = LOBYTE (charCode);
                            }
                        }

                        GFxEvent::EventType eEventType 
            = GFxEvent::KeyUp;
                        
            if (pkEventRecord->uiMsg == WM_KEYDOWN) 
                            eEventType 
            = GFxEvent::KeyDown;

                        
            // Send the key event into the Scaleform movie
                        GFxKeyEvent kEvent(eEventType, eKeyCode, asciiCode, 0);
                        m_spGFxManager
            ->HandleInputEvent(kEvent);

            KeyCodeMap

            static struct 
            {
                WPARAM winKey;
                GFxKey::Code appKey;
            } KeyCodeMap[] 
            = 
            {
                {VK_BACK,    GFxKey::Backspace},
                {VK_TAB,     GFxKey::Tab},
                {VK_CLEAR,   GFxKey::Clear},
                {VK_RETURN,  GFxKey::Return},
                {VK_SHIFT,   GFxKey::Shift},
                {VK_CONTROL, GFxKey::Control},
                {VK_MENU,    GFxKey::Alt},
                {VK_PAUSE,   GFxKey::Pause},
                {VK_CAPITAL, GFxKey::CapsLock},
                {VK_ESCAPE,  GFxKey::Escape},
                {VK_SPACE,   GFxKey::Space},
                {VK_PRIOR,   GFxKey::PageUp},
                {VK_NEXT,    GFxKey::PageDown},
                {VK_END,     GFxKey::End},
                {VK_HOME,    GFxKey::Home},
                {VK_LEFT,    GFxKey::Left},
                {VK_UP,      GFxKey::Up},
                {VK_RIGHT,   GFxKey::Right},
                {VK_DOWN,    GFxKey::Down},
                {VK_INSERT,  GFxKey::Insert},
                {VK_DELETE,  GFxKey::Delete},
                {VK_HELP,    GFxKey::Help},
                {VK_NUMLOCK, GFxKey::NumLock},
                {VK_SCROLL,  GFxKey::ScrollLock},

                {VK_OEM_1,     GFxKey::Semicolon},
                {VK_OEM_PLUS,  GFxKey::Equal},
                {VK_OEM_COMMA, GFxKey::Comma},
                {VK_OEM_MINUS, GFxKey::Minus},
                {VK_OEM_PERIOD,GFxKey::Period},
                {VK_OEM_2,     GFxKey::Slash},
                {VK_OEM_3,     GFxKey::Bar},
                {VK_OEM_4,     GFxKey::BracketLeft},
                {VK_OEM_5,     GFxKey::Backslash},
                {VK_OEM_6,     GFxKey::BracketRight},
                {VK_OEM_7,     GFxKey::Quote}
            };

            就是這么個(gè)小問(wèn)題,我好幾天沒(méi)解決了,一直盯著WM_CHAR看,就是沒(méi)看出什么問(wèn)題來(lái),然后就以為是要在flash文件里做什么特殊設(shè)置呢,我靠!flash不熟悉真是痛苦!

            我要繼續(xù)我的痛苦旅程,不經(jīng)歷痛苦就體驗(yàn)不到真正的快樂(lè)啊!嘿嘿,問(wèn)題解決了好爽!

            目前整合GFx的工作指導(dǎo)方針如下,因?yàn)榇蟮募軜?gòu)已經(jīng)建立起來(lái)了,剩下的就是一些完善工作了:

            逢山開路,遇水搭橋,不能追求一步到位,開始用GFx打通流程,在做的過(guò)程中逐步完善

            下一個(gè)待解決的問(wèn)題:
            Q: 如何設(shè)置或判斷flash里面某個(gè)component的focus?因?yàn)槲乙诿艽a輸入框有focus的時(shí)候逐字符加密,防止被某些同學(xué)盜號(hào)……
            A: 我要在c++中設(shè)置或判斷,所以用GFxMovieView::Invoke
                Button_Login.Focus?
                【2008-10-6】今天用Selection.getFocus()老返回null,沒(méi)搞清楚原因;Selection.setFocus()倒是好用。類似這種問(wèn)題太多了,值不值得花費(fèi)這么多時(shí)間在這個(gè)東西上?還是研究如何用在場(chǎng)景里吧!這個(gè)跟Flash本身沒(méi)啥關(guān)系,不用研究Flash里面的東西。





            posted on 2008-10-03 17:40 七星重劍 閱讀(1802) 評(píng)論(1)  編輯 收藏 引用 所屬分類: Flash Scaleform GFx

            FeedBack:
            # re: 比較充實(shí)的一天:GFx整合有進(jìn)展[未登錄](méi) 2011-11-28 11:45 Panda
            您有沒(méi)有做D3D設(shè)備丟失后,scaleform的的相關(guān)處理?  回復(fù)  更多評(píng)論
              
            久久99精品久久久久久hb无码| 久久久久久毛片免费看| 久久久久久精品免费免费自慰| 久久精品国产免费观看| 狠狠色丁香久久综合婷婷| 久久影院午夜理论片无码| 欧美牲交A欧牲交aⅴ久久| 久久精品人妻一区二区三区| 欧美牲交A欧牲交aⅴ久久| 国产精品久久久久一区二区三区 | 国产精品欧美久久久久无广告 | 性做久久久久久久久| 国产精品免费看久久久| 国产精品久久久香蕉| 91精品国产色综久久| 久久精品水蜜桃av综合天堂| 伊人久久亚洲综合影院| 日本精品久久久久中文字幕| 精品人妻久久久久久888| 久久亚洲AV无码精品色午夜| AAA级久久久精品无码区| 狠狠色婷婷久久一区二区三区| 久久久久久国产a免费观看黄色大片| 国产精品久久久久影院色| 久久精品无码专区免费东京热| 日产精品久久久久久久| 四虎影视久久久免费| 久久伊人影视| 久久伊人精品青青草原日本| 国产精品久久久久乳精品爆| 99久久精品免费看国产| 欧美激情精品久久久久| 九九99精品久久久久久| 久久最新精品国产| 99久久精品免费看国产| 精品国产热久久久福利| 久久国产综合精品五月天| 久久无码人妻精品一区二区三区| 国产精品无码久久综合网| 天天影视色香欲综合久久| 欧美日韩精品久久免费|