2009-12-21 94 views
1

我在C#Winform應用程序中使用Piccolo 2D ZUI libraryC#Piccolo ZUI - 僅當CTRL扭動時纔會出現波形嗎?

庫顯示的一個示例是在畫布上添加一個squiggle(線條圖)處理程序。

問題是,如果啓用squiggle處理程序並允許畫布拖動,則兩個事件同時發生。

我想要做的是繼承PDragEventhandler,以便它只在未按下CTRL時運行。然後當CTRL鍵被按下時,擺動器將運行(我明白了這一點)。

代碼用於拖動處理程序是:

InitializeComponent(); 
//add input event listener    
pCanvas1.AddInputEventListener(new PDragEventHandler()); 

我可以繼承PDragEventhandler,然後說,只有當沒有按下CTRL運行?或者是否需要重新編譯Piccolo庫以啓用此功能?

+1

它總是讓我很高興看到其他人使用piccolo :) – slimbo 2010-01-07 06:01:30

回答

3

對於java它是非常直的前進。在初始化你將要進行以下更改:

public void mouseDragged(PInputEvent e) { 
    super.mouseDragged(e); 

    // Update the squiggle while dragging. 
    updateSquiggle(e); 
} 

public void mouseDragged(PInputEvent e) { 
    super.mouseDragged(e); 
    if (e.isControlDown()) { 
     updateSquiggle(e); 
    } 
} 


Explanantion:這是可能的,因爲PInputEvent繼承了Java事件,因此具有isControlDown()選項。在C#中,情況並非如此,您需要手動擴展或添加它。在下面的第3部分中有關於如何爲C#(我不太熟悉)的描述如下:tutorial


對於C#我會假設聽衆看起來應該像下面這樣:

protected void squiggle_ControlDown(object sender, PInputEventArgs e) { 
    PNode node = (PNode)sender; 
    switch (e.KeyCode) { 
      case Keys.Control: 
        updateSquiggle(); 
        break; 
    } 

}

我希望這可以幫助,我希望它不是這麼長時間,因爲我'用C#或者我可以給你一個更具體的答案。

0

您可以重寫acceptEvent()方法來控制事件分派。例如,只接受帶有控制鍵修飾符的事件:

public class DragHandler extends PDragEventhandler { 
    @Override 
    public boolean acceptsEvent(PInputEvent event, int type) { 
     return super.acceptsEvent(event, type) && event.isControlDown(); 
    } 
} 
相關問題