2010-04-23 80 views
1

flex中的按鈕可以用空格鍵按下,但客戶端想要按Enter而不是空格。這可以通過編程每個按鈕來實現,但這將非常耗時。在flex中,使用返回鍵按下所有按鈕

有沒有人有一個想法如何在較少的時間內做到這一點?

謝謝。

回答

2

我創建了一個KeyPressForwarder說,「轉發」鍵按一次點擊:

package com.sophware.backend 
{ 
    import flash.events.IEventDispatcher; 
    import flash.events.KeyboardEvent; 
    import flash.events.MouseEvent; 
    import flash.ui.Keyboard; 

    public class KeyPressForwarder 
    { 

     public function dispatchAsClickEvent(evt:KeyboardEvent):void 
     {  
      if(evt.keyCode == Keyboard.ENTER) 
      {   
       var dispatcher:IEventDispatcher = evt.target as IEventDispatcher; 
       dispatcher.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); 
      }   
     }  

    } 
} 

然後建立一個綁定:

<mx:Button 
    id="Name" 
    keyUp="_keyPressForwarder.dispatchAsClickEvent(event)" 
    click="addOrModifyEntry(event)" 
    /> 

你可以消滅階級,只是使用功能這個概念是通用的。只要確保你有一個click處理程序來處理轉發的事件。

+0

我想沒有轉義的代碼添加到每個按鈕,謝謝 – sergiogx 2010-04-23 22:08:27

+0

我相信有一種方法。你應該能夠[猴子補丁](http://en.wikipedia.org/wiki/Monkey_patch)按鈕類(即複製它的源文件到你的項目,然後改變它),然後添加轉發器按照以上。這意味着Flex會在你的Button類在標準庫中找到它之前拾取它。它從來不漂亮,但可能適合你。 – 2010-04-23 22:15:32

+0

是的,我想擴展按鈕,並找到/替換所有的按鈕,但我更喜歡你的想法,我會先試試。謝謝 – sergiogx 2010-04-23 22:42:26

相關問題