DisplayRunObject routine not called when object leave visible frame from left/top

Welcome to our brand new Clickteam Community Hub! We hope you will enjoy using the new features, which we will be further expanding in the coming months.

A few features including Passport are unavailable initially whilst we monitor stability of the new platform, we hope to bring these online very soon. Small issues will crop up following the import from our old system, including some message formatting, translation accuracy and other things.

Thank you for your patience whilst we've worked on this and we look forward to more exciting community developments soon!

Clickteam.
  • Hi all, I'm trying to display something by extension, but I encountered a strange issue:
    DisplayRunObject routine will not be called when object left visible frame from left/top border (I put a break point in this function and didn't hit it in this case). The strange part is, object displays as usual when leave from right/bottom edge.

    Please check the gif that shows the issue (about 7mb, may take sometime to load):

    Please login to see this picture.

    Please login to see this picture.

    Here follows the source code of the extension:
    Please login to see this link.

    I have check the OEFLAGS, here is the flags I'm now using. But the issue still happens even if I set it exactly the same as simple picture template in SDK.

    Code
    #define	OEFLAGS      			(OEFLAG_VALUES|OEFLAG_SCROLLINGINDEPENDANT|OEFLAG_NEVERKILL|OEFLAG_RUNBEFOREFADEIN|OEFLAG_MANUALSLEEP|OEFLAG_NEVERSLEEP|OEFLAG_SPRITES|OEFLAG_QUICKDISPLAY|OEFLAG_BACKSAVE|OEFLAG_MOVEMENTS)
    #define	OEPREFS      			(OEPREFS_SCROLLINGINDEPENDANT|OEPREFS_INKEFFECTS|OEPREFS_BACKSAVE|OEPREFS_BACKEFFECTS)

    The different part from the simple picture template is, I didn't use GetRunObjectSurface routine, cause it won't handle shaders correctly when part of object is out of visible frame, I use BlitEx (pretty sure I'm running under D3D) in DisplayRunObject to draw to screen manually, and return REFLAG_DISPLAY in HandleRunObject routine when object's img is changed.

    Code
    //rdPtr->Display is a flag to control display feature on/off, passed from edPtr->Display that get value from properties.
    if ((rdPtr->Display) && (rdPtr->rc.rcChanged)) {		
    		return REFLAG_DISPLAY;
    	}
    	else {
    		return 0;
    	}

    I have been researching this for a week but didn't make any progress......

  • Hi,
    I had this issue by Spriter extension at the beginning. It has something to do with the "Destroy if too far from frame" property. I cannot remember if I just unchecked the property in edit time in CF2.5 or if I did something special in code.

    Damien

  • Hi,
    I had this issue by Spriter extension at the beginning. It has something to do with the "Destroy if too far from frame" property. I cannot remember if I just unchecked the property in edit time in CF2.5 or if I did something special in code.

    Thanks, but in this case the culprit is not "Destroy if too far from frame".
    After re-reading simple picture's code and comparing to my code line by line carefully, I found that I forgot to update rdPtr->rHo.hoImgWidth and rdPtr->rHo.hoImgHeight when loading images during runtime, which causes the issue.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!