unplugged_web Posted April 7, 2009 Share Posted April 7, 2009 I wonder if somebody could help me please.I'm working on a site that I want to have letters floating about in, but I'm not sure exactly how to do it. I want the letters to smoothly float around a restriced area.I've got: m.onEnterFrame = function() { var maxMoveValue=50; this._x += (Math.random()-0.5)*maxMoveValue; this._y +=(Math.random()-0.5)*maxMoveValue};i.onEnterFrame = function() { var maxMoveValue=50; this._x += (Math.random()-0.5)*maxMoveValue; this._y +=(Math.random()-0.5)*maxMoveValue};s.onEnterFrame = function() { var maxMoveValue=50; this._x += (Math.random()-0.5)*maxMoveValue; this._y +=(Math.random()-0.5)*maxMoveValue};h.onEnterFrame = function() { var maxMoveValue=50; this._x += (Math.random()-0.5)*maxMoveValue; this._y +=(Math.random()-0.5)*maxMoveValue};m2.onEnterFrame = function() { var maxMoveValue=50; this._x += (Math.random()-0.5)*maxMoveValue; this._y +=(Math.random()-0.5)*maxMoveValue};a.onEnterFrame = function() { var maxMoveValue=50; this._x += (Math.random()-0.5)*maxMoveValue; this._y +=(Math.random()-0.5)*maxMoveValue};o.onEnterFrame = function() { var maxMoveValue=50; this._x += (Math.random()-0.5)*maxMoveValue; this._y +=(Math.random()-0.5)*maxMoveValue};u.onEnterFrame = function() { var maxMoveValue=50; this._x += (Math.random()-0.5)*maxMoveValue; this._y +=(Math.random()-0.5)*maxMoveValue};l.onEnterFrame = function() { var maxMoveValue=50; this._x += (Math.random()-0.5)*maxMoveValue; this._y +=(Math.random()-0.5)*maxMoveValue}; and it works in so much as the letters randomly move, but they move around the whole of the screen and move in a jagged way. I'd like them to move around an area that is 650 pixels wide by 220 pixel height, but am a bit lost on how to be that precise so would appreciate any help.Thanks Link to comment Share on other sites More sharing options...
Shade Posted April 8, 2009 Share Posted April 8, 2009 I assume you have a finite number of letters here ( 9 I guess), and AS 2.0> make a MovieClip which shows letters ( need not to be a textfield, can be anything, you can draw something letter and covert to movieclip)> double click it to go inside it, click its first frame, and use the following code: var vx = 1; //x direction 1 or -1var vy = 1; //y direction 1 or -1var speedx = 0; //x speedvar speedy = 0; //y speedvar theta = Math.random()*6.38; // angle bw 0 and 2piethis._x = Math.random()*Stage.width; // place this thing randomly on stagethis._y = Math.random()*Stage.height;this.onEnterFrame = function() { if(theta==6.38){theta = 0;} // theta cycles from 0 to 2pie else {theta += 0.01;} // in steps of 0.01, you can vary it but carefully // reverse direction(vx and vy) when near edges if(this._x > Stage.width || this._x < 0 ){ vx = vx*-1;} // x bounce, limits: 0 to stage width if(this._y > Stage.height || this._y < 0 ){ vy = vy*-1;} // y bounce, limits: 0 to stage height speedx = Math.sin(theta); // x speed is varied sinusoidally speedy = Math.cos(theta); // y speed is varied sinusoidally this._x = this._x + vx*speedx; // update x pos this._y = this._y + vy*speedy; // update y pos} you can set other limits than Stage.width etc.now this clip should float around (quite randomly ) . make all your letters this way.In fact, you can put this code inside any MovieClip and it will float randomly.In case you need to create many similar things floating around , create a single movieclip like above and in main timeline ( NOT inside the clip) use the following code : var i = 0;this.onLoad = function() { for(i = 0; i<= 10; i++){ duplicateMovieClip(this.mymovie,"mymoviecopy" + i,this.getNextHighestDepth()); }} here mymovie is instance name of the first clip. Link to comment Share on other sites More sharing options...
unplugged_web Posted April 16, 2009 Author Share Posted April 16, 2009 thanks for that, it works great Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.