svghmi/widget_animate.ysl2
author Edouard Tisserant
Wed, 01 Dec 2021 09:54:02 +0100
branchRuntimeLists
changeset 3394 9ea29ac18837
parent 3232 7bdb766c2a4d
permissions -rw-r--r--
RUNTIME: Variable trace now uses limited list and buffer instead of flags in instance tree that was requiring systematical instance tree traversal, and worst size buffer. Forcing and retain still use tree traversal.
// widget_animate.ysl2

widget_class("Animate") {
    ||
        frequency = 5;
        speed = 0;
        start = false;
        widget_center = undefined;

        dispatch(value) {
            this.speed = value / 5;

            //reconfigure animation
            this.request_animate();
        }

        animate(){
           // change animation properties
           for(let child of this.element.children){
                if(child.nodeName.startsWith("animate")){
                    if(this.speed != 0 && !this.start){
                        this.start = true;
                        this.element.beginElement();
                    }

                    if(this.speed > 0){
                        child.setAttribute("dur", this.speed+"s");
                    }
                    else if(this.speed < 0){
                        child.setAttribute("dur", (-1)*this.speed+"s");
                    }
                    else{
                        this.start = false;
                        this.element.endElement();
                    }
                }
           }
        }

        init() {
            let widget_pos = this.element.getBBox();
            this.widget_center = [(widget_pos.x+widget_pos.width/2), (widget_pos.y+widget_pos.height/2)];
        }
    ||
}