[Skill]记录第一次让virtuoso卡死

2020-03-08  本文已影响0人  YEUNGCHIE

卡死了,甚至还没法正常退出,只能去kill掉。。。

周末写了一个小功能,想让两段接近的垂直path能够自己自动snap,并且希望这个功能能够循环调用。这样当我有一堆path需要操作的时候,就不需要每次snap都要按一下按键了。

procedure(AutoSnapLoop()    ;绑定给一个快捷键,让它循环调用下面的AutoSnap()。
    prog(()
        while(t
            AutoSnap()
        )
    )
)
procedure(AutoSnap()
    prog((/*省略一堆变量*/)
        ep = enterPoint()   ;能够让这个循环终止的关键点就是这里。
        ;省略一堆代码。
    )
)

这么用不会让软件卡死,但按下esc试图退出编辑状态的时候会让ep的值为空,因此后续的程序会报出error,总之不是一个正常的操作。

procedure(AutoSnapLoop()    ;绑定给一个快捷键,让它循环调用下面的AutoSnap()。
    prog(()
        while(t
            AutoSnap()
        )
    )
)
procedure(AutoSnap()
    prog((/*省略一堆变量*/)
        unless(ep = enterPoint()    ;当按下esc的时候enterPoint()会返回nil,因此程序得以正常的return出去。
            return("esc")
        )
        ;省略一堆代码。
    )
)

就是这一步让virtuoso卡死了,因为上面的AutoSnapLoop死循环了,因为AutoSnapLoop中while的条件始终是t,它就不会停止。必须让它发生一些事情return出去。

procedure(AutoSnapLoop()    ;绑定给一个快捷键,让它循环调用下面的AutoSnap()。
    prog(()
        while(t
            if(AutoSnap() == "esc" then
                return(nil)
            )
        )
    )
)
procedure(AutoSnap()
    prog((/*省略一堆变量*/)
        unless(ep = enterPoint()    ;当按下esc的时候enterPoint()会返回nil,因此程序得以正常的return出去。
            return("esc")
        )
        ;省略一堆代码。
    )
)
上一篇下一篇

猜你喜欢

热点阅读