2011-12-30 7 views
4

私はGUIを使ってhaskellプログラムを書いています。私は以下のコードを書くときBTNを押すハスケルのイベントオーバーライド

onClicked btn $ do 
      print 1 

    onClicked btn $ do 
      print 2 

は、私は最後の定義は、最初のものと版画2のみ

背景に取って代わるような関数定義をオーバーライドすることができますどのように同時に を1と2の印刷になりました:私は掃海艇の試合を書いています。ボタンに爆発する鉱山がある場合、私は再びプレイして同じボタンを定義して鉱山をクリアしようとしますが、最初の定義のために鉱山を再び爆発させます。

おかげ

答えて

6

イベントハンドラの登録を解除するonClickedによって返された接続を使用します。また

print1Handler <- onClicked btn (print 1) 
signalDisconnect print1Handler 
print2Handler <- onClicked btn (print 2) 

を、onClicked推奨されていません。可能であれば、新しいonメカニズムを使用する必要があります。その使用は非常によく似ています:

print1Handler <- on buttonActivated btn (print 1) 
signalDisconnect print1Handler 
print2Handler <- on buttonActivated btn (print 2)