这段代码是一个方法,名为'moveBy: orTo:',用于移动一个标记(mark)的位置或者删除它。

首先,代码创建了一个变量p,用于存储要移动到的位置。如果传入的aPoint参数为nil,则将p设置为当前标记的位置加上anOffset参数的值。否则,将p设置为传入的aPoint参数的值。

接下来,代码调用了self graph的nodeUnder:方法,传入了p作为参数,以获取位于p位置的图形元素。将返回的图形元素存储在变量graphThing中。

然后,代码检查graphThing的类是否为PCNMark。如果是PCNMark类,则将graphThing的容器(container)存储在graphThing变量中。

接着,代码检查graphThing的类是否为PCNPlaceChart。如果不是PCNPlaceChart类,则弹出一个确认对话框,询问用户是否要删除该标记。如果用户确认要删除,则调用self的goAway方法,即删除该标记,并返回self。

如果graphThing不是self的容器,则调用self的moveToNewContainer:方法,将graphThing作为新的容器,并将p作为位置参数传递给该方法。

如果graphThing是self的容器,则调用super的moveBy: orTo:方法,将anOffset和p作为参数传递给该方法,以实现移动标记的功能。

Smalltalk 代码解释:移动标记或删除标记

原文地址: https://www.cveoy.top/t/topic/f3yS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录