derrida
asked on
a range for a random animation AS3
Hi
i am using an animation which uses the random property for the x and the y. the problem: it uses the space beyond the stage.
i need to create a range that limits the randomness of the animation. tries several things but its not working.
i attach my code.
best regards
ron
i am using an animation which uses the random property for the x and the y. the problem: it uses the space beyond the stage.
i need to create a range that limits the randomness of the animation. tries several things but its not working.
i attach my code.
best regards
ron
import caurina.transitions.*;
var holder_mc:Sprite = new Sprite();
holder_mc.alpha =0;
var widthRange:Number = 200;
var heightRange:Number = 200;
function dropPics ():void {
for(var i:int =0 ; i < 8; i++){
holder_mc = new Sprite();
holder_mc.graphics.beginFill(0x000000);
holder_mc.graphics.drawRect(0,0, stage.stageWidth + 200,stage.stageHeight + 200);
holder_mc.graphics.endFill();
//trace(i);
holder_mc.name = "holder" + i;
Tweener.addTween(holder_mc,{height: 200,width:200 ,alpha: 1,time: 1,transition: "easeOut"});
var ds:DropShadowFilter = new DropShadowFilter(5,45,0x999999,0.5,4,4,1,5);
holder_mc.filters = [ds];
addChild(holder_mc);
holder_mc.buttonMode = true;
if(x < widthRange && y < heightRange){
y += y+ Math.random();
x += x+ Math.random();
holder_mc.x -= x+ Math.random()* 380;
holder_mc.y -= y+ Math.random()* 250;
}
holder_mc.addEventListener(MouseEvent.CLICK ,tellname);
}
}
dropPics();
function tellname (e:MouseEvent):void {
trace(e.target.name);
}
ASKER
hi
thanks for the answer, but it does not work. i tried to play with the code you gave (which specify more the boundaries than my code) but i cannot make it work.
any suggestion?
ron
thanks for the answer, but it does not work. i tried to play with the code you gave (which specify more the boundaries than my code) but i cannot make it work.
any suggestion?
ron
Could you upload the swf so that we can see the effect without my code? :)
Are you sure that this line is OK?
holder_mc.graphics.drawRec t(0,0, stage.stageWidth + 200,stage.stageHeight + 200);
This means every Sprite you create will be 200 pixels bigger than your movie entire width and height, thus always being outside. (Aside from the random x and y positions)
-V
holder_mc.graphics.drawRec
This means every Sprite you create will be 200 pixels bigger than your movie entire width and height, thus always being outside. (Aside from the random x and y positions)
-V
Ah, nevermind, I suppose that the custom Tweener class makes an effect so they're 200x200.
Knowing that, I think you'll need a onMotionFinished handler and then check the x and y positions with the code SamuelRostol provided.
-V
Knowing that, I think you'll need a onMotionFinished handler and then check the x and y positions with the code SamuelRostol provided.
-V
ASKER
hi
first of all,you are right about the tween. i have entered that code on the onComplete but it still does not limit itself to the stage size. i played with the code again and again, it all looks so reasonable but it will not work.
i uploaded the files (fla and swf) here:
https://filedb.experts-exchange.com/incoming/ee-stuff/7179-TweenerGallery.zip
thanks for the help
best regards
ron
first of all,you are right about the tween. i have entered that code on the onComplete but it still does not limit itself to the stage size. i played with the code again and again, it all looks so reasonable but it will not work.
i uploaded the files (fla and swf) here:
https://filedb.experts-exchange.com/incoming/ee-stuff/7179-TweenerGallery.zip
thanks for the help
best regards
ron
Maybe something like the following will do the trick:
(I used the normal Tween class you can safely replace those two Tweens for your custom Tweener class)
<code>
-V
(I used the normal Tween class you can safely replace those two Tweens for your custom Tweener class)
<code>
-V
//import caurina.transitions.*;
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;
var holder_mc:Sprite = new Sprite();
holder_mc.alpha =0;
var widthRange:Number = 200;
var heightRange:Number = 200;
function dropPics ():void {
for(var i:int =0 ; i < 8; i++){
holder_mc = new Sprite();
holder_mc.graphics.beginFill(0x000000);
holder_mc.graphics.drawRect(0,0, stage.stageWidth + 200,stage.stageHeight + 200);
holder_mc.graphics.endFill();
//trace(i);
holder_mc.name = "holder" + i;
y = Math.random()*200;
x = Math.random()*200;
holder_mc.x = x;//+ Math.random()* 500;
holder_mc.y = y;//+ Math.random()* 500;
holder_mc.x > 240 ? holder_mc.x -= widthRange : false;
holder_mc.y > 120 ? holder_mc.y -= heightRange : false;
holder_mc.x < 0 ? holder_mc.x = 0 : false;
holder_mc.y < 0 ? holder_mc.y = 0 : false;
var heightTween:Tween = new Tween(holder_mc, "height", Strong.easeOut, holder_mc.height, 100, 1, true);
var widthTween:Tween = new Tween(holder_mc, "width", Strong.easeOut, holder_mc.width, 100, 1, true);
//Tweener.addTween(holder_mc,{height: 100,width:100 ,alpha: 1,time: 1,transition: "easeOut",onComplete:rangeit()});
var ds:DropShadowFilter = new DropShadowFilter(5,45,0x999999,0.5,4,4,1,5);
holder_mc.filters = [ds];
addChild(holder_mc);
holder_mc.buttonMode = true;
holder_mc.addEventListener(MouseEvent.CLICK ,tellname);
}
}
dropPics();
function tellname (e:MouseEvent):void {
trace(e.target.name);
}
ASKER
Hi
thanks for the help. it does scatter and does not cross the stage, but i want a bigger scattering and when i add to the:
y = Math.random()*450;
x = Math.random()*300;
it allow for a bigger scattering but then again, goes beyond the boundaries of the stage.
so how can i widen the scattering without losing the stage?
i guess we are right before solving it, i hope:)
thanks for your help
best regards
ron
thanks for the help. it does scatter and does not cross the stage, but i want a bigger scattering and when i add to the:
y = Math.random()*450;
x = Math.random()*300;
it allow for a bigger scattering but then again, goes beyond the boundaries of the stage.
so how can i widen the scattering without losing the stage?
i guess we are right before solving it, i hope:)
thanks for your help
best regards
ron
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
thanks :)
You're welcome, glad it worked for you ;)
-V
-V
I don't have time to test it - but the solution should be something like:
<code snippet>
Try it out :)
Kindly,
Samuel
Open in new window