远离鼠标的运动

国外一个网站上看到的 500个就很吃CPU了 有没有办法能降低下CPU损耗呢。
 

package
{
import flash.display.BlendMode;
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.BlurFilter;
public class RunAwayFromMouse extends Sprite
{
private var num:int=500;
private var firstPointX:Array=new Array();
private var firstPointY:Array=new Array();

public function RunAwayFromMouse()
{
  for(var i:int=0; i < num; i++)
  {
   var circle:Shape=new Shape();
   circle.graphics.beginFill(Math.random() * 0xFFFFFF);
   circle.graphics.drawCircle(0, 0, Math.random() * 18 + 5);
   circle.graphics.endFill();
   circle.blendMode=BlendMode.ADD;
   circle.cacheAsBitmap=true;
   circle.x=Math.round(Math.random() * stage.stageWidth);
   circle.y=Math.round(Math.random() * stage.stageHeight);
   circle.name="circle" + i.toString();
   circle.filters=[new BlurFilter(10, 10, 1)];
   addChild(circle);

   firstPointX[i]=circle.x;
   firstPointY[i]=circle.y;
  }

  addEventListener(Event.ENTER_FRAME, onFrame);
}


public function onFrame(e:Event):void
{
  for(var i:int=0; i < num; i++)
  {
   var circle:Shape=getChildByName("circle" + i.toString())as Shape;
   var theta:Number=Math.atan2(circle.y - mouseY, circle.x - mouseX);
   var d:Number=1000 / Math.sqrt(Math.pow(mouseX - circle.x, 2) + Math.pow(mouseY - circle.y, 2));

   circle.x+=d * Math.cos(theta) + (firstPointX[i] - circle.x) * 0.1;
   circle.y+=d * Math.sin(theta) + (firstPointY[i] - circle.y) * 0.1;
  }
}
}
}

 

Tags:Particle  AS3.0  

1 Comment so far

  1. spe on 2009-4-27 14:31:05

    参考下粒子
    使用位图渲染形式。


    回复该留言


Leave a reply