New question #266820 on Sikuli:
https://answers.launchpad.net/sikuli/+question/266820

I am relatively new to Sikuli and python.I am running Sikuli on a MAC 10.9.5.
I am having trouble getting onVanish to work. I have extracted the relevant 
code to highlight the problem. The code is monitoring a game. As part of the 
game there is an image that moves periodically from one position to another. 
First consider the following 



def imageMoved(event):
        self.monitor = False
        event.region.stopObserver()


self.monitor = True
image = Image()
currentImageRegion = image.region()   # currentImageRegion redundant in this 
first version
if currentImageRegion.exists(imageScreenShot):

        onVanish(imageScreenShot, imageMoved) # THE CHANGED LINE

        observe(background = True)
        while self.monitor == True:
                currentImageRegion.highlight(1)
                # monitoring stuff

Here currentImageRegion is redundant. Here I assume "onVanish(imageScreenShot, 
imageMoved)" is applied to the whole screen as the region. While running the 
game, as the image moves, onVanish is not triggered which I sort of would have 
expected.If I then minimise the game onVanish is triggered which I also would 
expect.

Now for the problem:- 


def imageMoved(event):
        self.monitor = False
        event.region.stopObserver()


self.monitor = True
image = Image()
currentImageRegion = image.region()
if currentImageRegion.exists(imageScreenShot):

        currentImageRegion.onVanish(imageScreenShot, imageMoved) # THE CHANGED 
LINE

        observe(background = True)
        while self.monitor == True:
                currentImageRegion.highlight(1)
                # monitoring stuff


In this piece of code onVanish is applied to the region currentImageRegion. 
This is a small region around the initial position of the image. I know that it 
is as I can see it due to the "currentImageRegion.highlight(1)" statement. 
However, when the image moves out of this region the onVanish is not triggered 
(this is what I want). Further, if I minimise the game the onVanish is still 
not triggered. 

In conclusion it seems that onVanish is only working when applied to the whole 
screen and not a more specific region of the screen. Am I doing something 
wrong? Thanks in anticipation of any help.

-- 
You received this question notification because you are a member of
Sikuli Drivers, which is an answer contact for Sikuli.

_______________________________________________
Mailing list: https://launchpad.net/~sikuli-driver
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~sikuli-driver
More help   : https://help.launchpad.net/ListHelp

Reply via email to