A Flash Developer Resource Site

Results 1 to 2 of 2

Thread: make snow fall inside a movieclip

  1. #1
    Junior Member
    Join Date
    Nov 2009
    Posts
    3

    make snow fall inside a movieclip

    Hi,

    I have some code which makes snow fall perfectly, but I want it to only happen inside a movieclip (a snowglobe to be exact). Any ideas how I could make this happen?

    var speed:Number = 5;
    var total_snow:Number = 200;
    var snow_per_second:Number = 3
    var hit_target:MovieClip = gazing_mc
    //
    var holder:Sprite = new Sprite();
    var target_shake:Boolean = false;
    //
    addChild(holder);
    //
    hit_target.mainX=hit_target.x;
    hit_target.mainY=hit_target.y;
    //
    function createSnow() {
    var snow:MovieClip = new MovieClip();
    snow.graphics.beginFill(0xFFFFFF);
    snow.graphics.drawCircle(0,0,Math.random()*2);
    reset(snow);
    addBlur(snow);
    snow.addEventListener(Event.ENTER_FRAME,fall);
    holder.addChild(snow);
    }
    function reset(s:MovieClip) {
    s.hit=s.shake=false;
    s.y=0;
    s.x=Math.random()*800;
    s.xspeed=Math.random()*speed-(speed/2);
    s.yspeed=Math.random()*speed+1;
    }
    function init(e:Event) {
    for(var i=0; i<snow_per_second; i++) {
    createSnow();
    }
    snow_id++;
    if(snow_id>total_snow) {
    removeEventListener(Event.ENTER_FRAME,init);
    }
    }
    function addBlur(s:MovieClip) {
    var blurX:Number = Math.random()*2+3;
    var blurY:Number = Math.random()*2+3;
    var filter:BitmapFilter = new BlurFilter(blurX, blurY, BitmapFilterQuality.LOW);
    var myFilters:Array = new Array();
    myFilters.push(filter);
    s.filters = myFilters;
    }
    function fall(e:Event) {
    if (!e.target.hit) {
    e.target.x+=e.target.xspeed;
    e.target.y+=e.target.yspeed;
    if (e.target.y>600) {
    reset(MovieClip(e.target));
    }
    if(!e.target.shake) {
    if (hit_target.hitTestPoint(e.target.x,e.target.y,tru e)) {
    e.target.hit=true;
    }
    }
    }else{
    if(target_shake) {
    e.target.hit=false
    e.target.shake=true;
    }
    }
    }
    function shake_int(e:TimerEvent) {
    hit_target.x=hit_target.mainX+Math.random()*5-2.5;
    hit_target.y=hit_target.mainY+Math.random()*5-2.5;
    }
    var shake_timer:Timer = new Timer(2,100);
    shake_timer.addEventListener(TimerEvent.TIMER,shak e_int);
    shake_timer.addEventListener(TimerEvent.TIMER_COMP LETE,shake_fnish);
    function shake_fnish(e:TimerEvent) {
    target_shake=false;
    }
    //
    hit_target.addEventListener(MouseEvent.CLICK,shake _start);
    function shake_start(e:Event) {
    target_shake=true;
    shake_timer.reset();
    shake_timer.start();
    }
    //
    var snow_id:int = 0
    addEventListener(Event.ENTER_FRAME,init);

  2. #2
    Senior Member
    Join Date
    Jan 2008
    Posts
    150
    For keeping it inside the visible area of the globe you should apply a mask to it.

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

HTML5 Development Center