저는 Sikuli IDE와 jython에서의 쓰기를 사용하고 있다고 가정합니다.
우선 작은 영역을 사용해보십시오. find().right()
은 다소 큰 영역을 만듭니다 (화면 끝까지 확장 됨). 새로 생성 된 영역의 작은 크기를 지정하여 계산 능력을 낮추면 도움이 될 수 있습니다. 관찰자를 사용할 때.
둘째, 관찰자에게 필요한 스캔 속도를 지정하고 (효율성 및 계산에 필요한 전력에 영향을 미침) 스크립트의 시작 부분에있는 설정은 관찰 된 영역에서 수행되는 초당 스캔 수를 정의합니다. 코드 줄은 다음과 같습니다 : Settings.ObserveScanRate = 10
, 이것은 초당 10 회의 스캔을 수행합니다.
는 그런 다음 예를 들어있는 관찰자 시작하는 두 줄의 코드 해주기. reg.onchange(50,onchangedFunction)
50 reg.onChange(50,onchangedFunction)
및 reg.observe(10,background=False)
가 변경되면 함수 onchangedFunction
구현 될 것이라는 픽셀 수를, (50은 가능한 가장 작은 수이며, 텍스트의 변경을 감지 할 때 사용하는 것이 좋습니다)
reg.observe(10,background=False)
의 경우 변경 사항을 감지하기위한 영역을 관찰하기 시작합니다. 10은 시스템이 감지 한 시간 지역을 관측하고 두 번째 인수는 true 또는 false인지 여부 background(true)
에서 스캔을 실행하거나 스캔이 끝날 때까지 코드가 중지되도록 (거짓)합니다.
def onchangedFunction(event):
click(img) #and the rest of the algorithm to be implemented on change
을하지만 reg.onchange()
하여 사용하기 전에해야하는 기능의 구현으로 돌봐 :
는 다음 기능 onchangedFunction
(이 그냥 이름) 구현해야합니다,이 같이 갈 수도 그것이 호출 될 수있는 범위에서.
Settings.ObserveScanRate = 10
def onchangedFunction(event):
click(img2)
reg= Region(find(img1).right())
reg.onChange(50,onchangedFunction)
reg.observe(10,background=False)
reg.stopObserver()
확인, 내가 이전에 코딩이 있었는지와 올바른 트랙에 있던 :
마지막으로reg.stopObserver()
난 당신이 코드 같은 것을해야한다고 생각 호출합니다. 그러나, 나는 당신의 예제에 따라 최소한의 예제를 코딩 할 때'ClassCastException'을 얻는다 :'[error] java.lang.ClassCastException (java.lang.ClassCastException : org.python.core.PyFunction은 org.sikuli로 형변환 될 수 없다. script.SikuliEventObserver)'를 호출하십시오. 이것은 onChange()를 호출하는 라인에서 발생한다. –
@ NathanS.Watson-Haigh find()의 반환 값이 지역 객체가 아닌 일치이기 때문입니다. 이것은 단순히 reg = find (img1) .right()를 reg = Region (find (img1) .right())로 바꾸면 해결할 수 있습니다. –