Results 1 to 6 of 6

Thread: Executive toy, does anyone remember this one?

  1. #1
    wossname
    Guest

    Executive toy, does anyone remember this one?

    About 12 years ago, I remember playing with a simple utility on an Acorn computer. All it was was a bit of string hanging down from the mouse pointer (effectively just a white curve on a black background). When you moved the mouse the string flopped around like you would expect if it was a real bit of string in your hand.

    Does anyone remember this or anything like it?

    I'd love to get my hands on some code too.

  2. #2
    Hyperactive Member
    Join Date
    Feb 2000
    Location
    Sedgefield
    Posts
    337

    Don't remeber it but...

    I've seen similar things done for mouse pointer trailing in DHTML. Look at some sites - I've seen sparkling stars, rubber bands etc. etc. Some are quite neat.

    Dan

    Outside of a dog, a book is a man's best friend.
    Inside of a dog, it's too dark to read.

  3. #3
    wossname
    Guest
    I can't find anything like it on any sites like that.

    Does anyone else have any ideas?

  4. #4
    Hyperactive Member
    Join Date
    Feb 2000
    Location
    Sedgefield
    Posts
    337

    Its not exactly string...

    more like elastic, but could probably be modified...


    http://www.htmlgoodies.com/beyond/mousetrail.html

    Dan

    Outside of a dog, a book is a man's best friend.
    Inside of a dog, it's too dark to read.

  5. #5
    Hyperactive Member
    Join Date
    Feb 2000
    Location
    Sedgefield
    Posts
    337

    Dan

    Outside of a dog, a book is a man's best friend.
    Inside of a dog, it's too dark to read.

  6. #6
    Hyperactive Member thinktank2's Avatar
    Join Date
    Nov 2001
    Location
    Arctic
    Posts
    272
    Code:
    <div id="dot0" style="position: absolute; visibility: hidden; height: 11; width: 11;">
    	<img src="bullet.gif" height=11 width=11>
    </div>
    <div id="dot1" style="position: absolute; height: 11; width: 11;">
    	<img src="bullet.gif" height=11 width=11>
    </div>
    <div id="dot2" style="position: absolute; height: 11; width: 11;">
    	<img src="bullet.gif" height=11 width=11>
    </div>
    <div id="dot3" style="position: absolute; height: 11; width: 11;">
    	<img src="bullet.gif" height=11 width=11>
    </div>
    <div id="dot4" style="position: absolute; height: 11; width: 11;">
    	<img src="bullet.gif" height=11 width=11>
    </div>
    <div id="dot5" style="position: absolute; height: 11; width: 11;">
    	<img src="bullet.gif" height=11 width=11>
    </div>
    <div id="dot6" style="position: absolute; height: 11; width: 11;">
    	<img src="bullet.gif" height=11 width=11>
    </div>
    PHP Code:
    <script LANGUAGE="JavaScript">
    <!-- 
    hide code

    /*
    Elastic Trail script (By Philip Winston @ [email][email protected][/email], URL: [url]http://www.geocities.com/pwinston/[/url])
    Script featured on Dynamicdrive.com
    For this and 100's more DHTML scripts, visit [url]http://dynamicdrive.com[/url]
    */

    var nDots 7;

    var 
    Xpos 0;
    var 
    Ypos 0;

      
    // fixed time step, no relation to real time
    var DELTAT .01;
      
    // size of one spring in pixels
    var SEGLEN 10;
      
    // spring constant, stiffness of springs
    var SPRINGK 10;
      
    // all the physics is bogus, just picked stuff to
      // make it look okay
    var MASS 1;
    // Positive XGRAVITY pulls right, negative pulls left
    // Positive YGRAVITY pulls down, negative up
    var XGRAVITY 0;
    var 
    YGRAVITY 50;
    // RESISTANCE determines a slowing force proportional to velocity
    var RESISTANCE 10;
      
    // stopping criterea to prevent endless jittering
      // doesn't work when sitting on bottom since floor
      // doesn't push back so acceleration always as big
      // as gravity
    var STOPVEL 0.1;
    var 
    STOPACC 0.1;
    var 
    DOTSIZE 11;
      
    // BOUNCE is percent of velocity retained when 
      // bouncing off a wall
    var BOUNCE 0.75;

    var 
    isNetscape navigator.appName=="Netscape";

      
    // always on for now, could be played with to
      // let dots fall to botton, get thrown, etc.
    var followmouse true;

    var 
    dots = new Array();
    init();

    function 
    init()
    {
        var 
    0;
        for (
    0nDotsi++) {
            
    dots[i] = new dot(i);
        }
        
        if (!
    isNetscape) {
            
    // I only know how to read the locations of the 
            // <LI> items in IE
            //skip this for now
            // setInitPositions(dots)
        
    }
        
        
    // set their positions
        
    for (0nDotsi++) {
            
    dots[i].obj.left dots[i].X;
            
    dots[i].obj.top dots[i].Y;
        }
        
        
        if (
    isNetscape) {
            
    // start right away since they are positioned
            // at 0, 0
            
    startanimate();
        } else {
            
    // let dots sit there for a few seconds
            // since they're hiding on the real bullets
            
    setTimeout("startanimate()"1000);
        }
    }



    function 
    dot(i
    {
        
    this.Xpos;
        
    this.Ypos;
        
    this.dx 0;
        
    this.dy 0;
        if (
    isNetscape) {    
            
    this.obj = eval("document.dot" i);
        } else {
            
    this.obj = eval("dot" ".style");
        }
    }


    function 
    startanimate() {    
        
    setInterval("animate()"20);
    }


    // This is to line up the bullets with actual LI tags on the page
    // Had to add -DOTSIZE to X and 2*DOTSIZE to Y for IE 5, not sure why
    // Still doesn't work great
    function setInitPositions(dots)
    {
        
    // initialize dot positions to be on top 
        // of the bullets in the <ul>
        
    var startloc document.all.tags("LI");
        var 
    0;
        for (
    0startloc.length && < (nDots 1); i++) {
            
    dots[i+1].startloc[i].offsetLeft
                startloc
    [i].offsetParent.offsetLeft DOTSIZE;
            
    dots[i+1].startloc[i].offsetTop +
                
    startloc[i].offsetParent.offsetTop 2*DOTSIZE;
        }
        
    // put 0th dot above 1st (it is hidden)
        
    dots[0].dots[1].X;
        
    dots[0].dots[1].SEGLEN;
    }

    // just save mouse position for animate() to use
    function MoveHandler(e)
    {
        
    Xpos e.pageX;
        
    Ypos e.pageY;      
        return 
    true;
    }

    // just save mouse position for animate() to use
    function MoveHandlerIE() {
        
    Xpos window.event.document.body.scrollLeft;
        
    Ypos window.event.document.body.scrollTop;      
    }

    if (
    isNetscape) {
        
    document.captureEvents(Event.MOUSEMOVE);
        
    document.onMouseMove MoveHandler;
    } else {
        
    document.onmousemove MoveHandlerIE;
    }


    function 
    vec(XY)
    {
        
    this.X;
        
    this.Y;
    }

    // adds force in X and Y to spring for dot[i] on dot[j]
    function springForce(ijspring)
    {
        var 
    dx = (dots[i].dots[j].X);
        var 
    dy = (dots[i].dots[j].Y);
        var 
    len Math.sqrt(dx*dx dy*dy);
        if (
    len SEGLEN) {
            var 
    springF SPRINGK * (len SEGLEN);
            
    spring.+= (dx len) * springF;
            
    spring.+= (dy len) * springF;
        }
    }


    function 
    animate() {    
        
    // dots[0] follows the mouse,
        // though no dot is drawn there
        
    var start 0;
        if (
    followmouse) {
            
    dots[0].Xpos;
            
    dots[0].Ypos;    
            
    start 1;
        }
        
        for (
    start nDotsi++ ) {
            
            var 
    spring = new vec(00);
            if (
    0) {
                
    springForce(i-1ispring);
            }
            if (
    < (nDots 1)) {
                
    springForce(i+1ispring);
            }
            
            
    // air resisitance/friction
            
    var resist = new vec(-dots[i].dx RESISTANCE,
                -
    dots[i].dy RESISTANCE);
            
            
    // compute new accel, including gravity
            
    var accel = new vec((spring.resist.X)/MASS XGRAVITY,
                (
    spring.resist.Y)/ MASS YGRAVITY);
            
            
    // compute new velocity
            
    dots[i].dx += (DELTAT accel.X);
            
    dots[i].dy += (DELTAT accel.Y);
            
            
    // stop dead so it doesn't jitter when nearly still
            
    if (Math.abs(dots[i].dx) < STOPVEL &&
                
    Math.abs(dots[i].dy) < STOPVEL &&
                
    Math.abs(accel.X) < STOPACC &&
                
    Math.abs(accel.Y) < STOPACC) {
                
    dots[i].dx 0;
                
    dots[i].dy 0;
            }
            
            
    // move to new position
            
    dots[i].+= dots[i].dx;
            
    dots[i].+= dots[i].dy;
            
            
    // get size of window
            
    var heightwidth;
            if (
    isNetscape) {
                
    height window.innerHeight window.pageYOffset;
                
    width window.innerWidth window.pageXOffset;
            } else {    
                
    height document.body.clientHeight document.body.scrollTop;
                
    width document.body.clientWidth document.body.scrollLeft;
            }
            
            
    // bounce off 3 walls (leave ceiling open)
            
    if (dots[i].>=  height DOTSIZE 1) {
                if (
    dots[i].dy 0) {
                    
    dots[i].dy BOUNCE * -dots[i].dy;
                }
                
    dots[i].height DOTSIZE 1;
            }
            if (
    dots[i].>= width DOTSIZE) {
                if (
    dots[i].dx 0) {
                    
    dots[i].dx BOUNCE * -dots[i].dx;
                }
                
    dots[i].width DOTSIZE 1;
            }
            if (
    dots[i].0) {
                if (
    dots[i].dx 0) {
                    
    dots[i].dx BOUNCE * -dots[i].dx;
                }
                
    dots[i].0;
            }
            
            
    // move img to new position
            
    dots[i].obj.left dots[i].X;            
            
    dots[i].obj.top =  dots[i].Y;        
        }
    }

    // end code hiding -->
    </script
    Attached Images Attached Images  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width