as3dmood详解

来源:互联网 发布:推荐好用的防晒知呼 编辑:程序博客网 时间:2024/04/30 00:47

 

下面是各个用法的详细解释,可以直接编译

 

demo : http://3556.8b8b.info/swf/asDom.swf

 

 

package  {
        import org.papervision3d.cameras.CameraType;
        import org.papervision3d.materials.WireframeMaterial;
        import org.papervision3d.objects.primitives.Plane;
        import org.papervision3d.view.BasicView;
        
        import flash.events.Event;      
 //as3dmood 对象
 
  import com.as3dmod.ModifierStack;
  import com.as3dmod.plugins.pv3d.LibraryPv3d;
  import com.as3dmod.modifiers.Noise;
  import com.as3dmod.modifiers.Perlin;
  import com.as3dmod.modifiers.Bend;
  import com.as3dmod.util.Phase;
 
 [SWF(backgroundColor="#000000", frameRate="40", width="1000", height="800")]
        public class Main extends BasicView {
 
                private var plane:Plane;
     private var stack:ModifierStack;
    private var bend:Bend;
    private var phase:Phase ;
                public function Main() {  
    
                        super(800, 600, true, false, CameraType.FREE);
                        var mat:WireframeMaterial = new WireframeMaterial();
                        mat.doubleSided = true;
                        plane = new Plane(mat, 800, 600, 10, 10);
                        plane.rotationX = 45;
                        plane.rotationY = 45;
                        scene.addChild(plane);
      
      
      
      
      //对pv3d库进行修饰 修改对象是plane  它是plane对象的特效栈 ,
    //所有的修饰特效都需要假如到它里面,加入的顺序会对最终的效果产生影响
    stack= new ModifierStack(new LibraryPv3d(),plane);
        
    //创建修饰特效
    var noise:Noise= new Noise(20);//该参数值的范围在 0-200之间  褶皱的程度
    var perlin:Perlin=new Perlin(10);//扭曲 程度  ,一般在enterframe事件里加上 stack.apply() 可以产生动态变化效果
    bend= new Bend(0,0.5);//弯曲    Bend(f:Number = 0, o:Number = .5, a:Number = 0) f 代表force力,o是开始的位置offset ,a是角度,但是现在这个版本已经没有也就是说只有两个参数
    
    
    //工具类,类似flash里的Math类
    phase=new Phase();//该类的最大用途是是 phase.phasedValue的值始终在[-1,1]之间波动,类似于正弦波
    phase.value=0;
    
    
    //将该nose特效加入到特效栈中
    //stack.addModifier(noise);
    stack.addModifier(perlin);
    //stack.collapse(); //该句的作用是让那些修饰特效一个一个的分开执行 ,去掉这句,则所有的特效同时执行  ,它相当于栈的阻隔标志    
    stack.addModifier(bend);
    
    stack.apply();//实施修改,一定要再pv3d引擎渲染之前实施  其他modifiers 库中的特效的用法类似 
      
      
      
      
      
      
      
      
      
      
      
      
      
                        startRendering();
                }
                
                protected override function onRenderTick(event:Event = null):void {
    
    /*if(bend.force<10){
    bend.force+=0.01;}
    else if(bend.force>10){
     bend.force=0;
     
     }
    */
    phase.value+=0.05;
    bend.force = phase.phasedValue;//与上面注释掉的代码类似//phase本质就是一个Math类  只不过 phase.phasedValue的值始终在 [-1,1]这个区间里
    
    stack.apply();
    
    //plane.localRotationY+=5;
                        super.onRenderTick(event);
      
      
      
      
      
      
      
      
      
      
                }
    
    
    
    
    
    
    
    
    
    
    
        }
}