zoukankan      html  css  js  c++  java
  • 简单的3D森林

    package { 
    
    import flash.display.Sprite; 
    
    public class Tree extends Sprite { 
    
       public var xpos:Number = 0; 
    
    public var ypos:Number = 0; 
    
       public var zpos:Number = 0; 
    
       public function Tree() { 
    
    init(); 
    
       } 
    
       public function init():void { 
    
    graphics.lineStyle(0, 0x00ff00); // 树的颜色
    
    graphics.lineTo(0, -140 - Math.random() * 20);   // 树干
    
    graphics.moveTo(0, -30 - Math.random() * 30); 
    
    graphics.lineTo(Math.random() * 80 - 40, // 随机生成的树枝
    
    -100 - Math.random() * 40); 
    
    graphics.moveTo(0, -60 - Math.random() * 40); 
    
    graphics.lineTo(Math.random() * 60 - 30, 
    
    -110 - Math.random() * 20); 
    
       } 
    
    } 
    
    } 
    ------------------------------------------------------------------------------
    // 利用简单树组成的森林
    
    
    
    package { 
    
    import flash.display.Sprite; 
    
    import flash.events.Event; 
    
    import flash.events.KeyboardEvent; 
    
    import flash.ui.Keyboard; 
    
    [SWF(backgroundColor=0x000000)];   // 设置背景为黑色,但不知为什么无效
    
    public class Trees extends Sprite { 
    
        private var trees:Array; // 存放所有的树
    
        private var numTrees:uint = 100;    // 定义100颗够了
    
        private var fl:Number = 250; // 屏幕距离眼睛一般设置为200--300
    
        private var vpX:Number = stage.stageWidth / 2; // 物体太小后消失点
    
        private var vpY:Number = stage.stageHeight / 2; 
    
        private var floor:Number = 50; // 水平面高度
    
        private var vz:Number = 0; // Z轴透视深度速度
    
        private var friction:Number = 0.98; // 阻尼系数
    
        public function Trees() { 
    
       init(); 
    
        } 
    
        private function init():void { 
    
       trees = new Array(); 
    
       for (var i:uint = 0; i < numTrees; i++) { 
    
    var tree:Tree = new Tree(); // 生成树
    
    trees.push(tree); 
    
    tree.xpos = Math.random() * 2000 - 1000; 
    
    tree.ypos = floor; 
    
    tree.zpos = Math.random() * 10000; 
    
    addChild(tree); // 
    
       } 
    
       addEventListener(Event.ENTER_FRAME, onEnterFrame); 
    
       stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); 
    
        } 
    
        private function onEnterFrame(event:Event):void { 
    
       for (var i:uint = 0; i < numTrees; i++) { 
    
    var tree:Tree = trees; 
    
    move(tree); 
    
       } 
    
       vz *= friction; // 阻尼后的Z轴方向的速度
    
       sortZ(); // Z轴消隐
    
        } 
    
        private function onKeyDown(event:KeyboardEvent):void {   // 加减速控制
    
       if (event.keyCode == Keyboard.UP) { 
    
    vz -= 1; 
    
       } else if (event.keyCode == Keyboard.DOWN) { 
    
    vz += 1; 
    
       } 
    
        } 
    
    
    
        private function move(tree:Tree):void { 
    
       tree.zpos += vz; // 更新移动距离(速度)
    
       if (tree.zpos < -fl) { // 如果树走到眼睛后面,则移动到远处
    
    tree.zpos += 10000; 
    
       } 
    
       if (tree.zpos > 10000 - fl) {   // 如果树太远,大于屏幕外1000则移回
    
    tree.zpos -= 10000; 
    
       } 
    
       var scale:Number = fl / (fl + tree.zpos);   // 计算透视深度系数
    
       tree.scaleX = tree.scaleY = scale; 
    
       tree.x = vpX + tree.xpos * scale; 
    
       tree.y = vpY + tree.ypos * scale; 
    
       tree.alpha =   scale * .7 + .3; // 不同距离用不同的alpha混色,显示大气透视(朦胧感)
    
        } 
    
        private function sortZ():void { 
    
       trees.sortOn("zpos", Array.DESCENDING | Array.NUMERIC); 
    
       for (var i:uint = 0; i < numTrees; i++) { 
    
    var tree:Tree = trees; 
    
    setChildIndex(tree, i); 
    
       } 
    
        } 
    
    } 
    
    }
    

      

  • 相关阅读:
    软件测试面试技巧-面试问题大全
    软件测试--实际项目的实际操作过程--免费资料
    知乎问:小白转行学软件测试;能就业吗?
    软件测试面试-如何高质量提交缺陷bug?
    如何自学软件测试--最真实的回答
    软件测试面试必问--bug交互流程
    苹果手机安装未上线App操作流程-实际公司-Dotest董浩
    Python自动化之下拉框,隐藏标签定位 代码&报错解决
    ​Linux环境下搭建禅道管理工具-包含软件资源
    Python自动化报错:IndentationError-unindent does not match any outer indentation level
  • 原文地址:https://www.cnblogs.com/fengziwu/p/11406242.html
Copyright © 2011-2022 走看看