0

このコードを使用して、特定の場所からマウスの場所までの線を作成しています。クリックした後、この行を削除しようとしていますが、クリックした後にライブを削除する方法がわかりません。何を変更すればよいですか?

stk:=  (LineMorph from: 100@100 to: 1300@1300 color: Color red width: 2) openInWorld.
handle := HandleMorph new forEachPointDo:  [:newPoint | stk setVertices: {whiteBallinHole position. (newPoint-(10@10)). }.
stk on: #mouseDown send: #value: to:[:evt|
    evt redButtonPressed ifTrue:[  self handlesMouseDown:  evt.

「マウスがクリックした後にスティックを削除してください。これは機能しません。助けてください」

stk color: Color transparent.
stk delete.

""

 ].
    ].
    ]. 
    " (self  currentHand attachMorph: handle)."
    " self currentHand addMorph:handle. "
    self currentHand attachMorph:handle. 
4

1 に答える 1

2

コードは少し混乱しています。場違いなことの1つは、

self handlesMouseDown: evt.

mouseDown: メッセージを受信したい場合は true を返すはずです。ワークスペースでは、その自分は存在しません。そして、結果は決して使用されません。削除するだけです。結果のコードは次のようになります

whiteBallinHole := CircleMorph new openInWorld .
stk := (LineMorph 
    from: 100@100 to: 1300@1300 
    color: Color red 
    width: 4) openInWorld.
handle := HandleMorph new forEachPointDo: [ :newPoint | 
stk setVertices: {whiteBallinHole center. (newPoint-(10@10)). }.
stk on: #mouseDown send: #value: to: [:evt|
    evt redButtonPressed ifTrue:[
        stk color: Color transparent.
        stk delete]]].
self currentHand attachMorph: handle.
于 2015-09-04T23:12:25.250 に答える