package com.ddd
{
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, 0xffffff);
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 com.ddd
{
import flash.display.Sprite;
import flash.display.StageScaleMode;
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 num:int=100;
private var fl:Number=250;
private var vpX:Number=stage.stageWidth / 2;
private var vpY:Number=stage.stageHeight / 2;
private var float:Number=50;
private var fir:Number=.98;
private var vz:Number=0;
public function Trees()
{
super();
stage.scaleMode=StageScaleMode.NO_SCALE;
init();
}
private function init():void
{
var tree:Tree;
for (var i:int=0; i < num; i++)
{
tree=new Tree;
trees.push(tree);
tree.xpos=Math.random() * 2000 - 1000;
tree.ypos=float;
tree.zpos=Math.random() * 1000;
this.addChild(tree);
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown)
this.addEventListener(Event.ENTER_FRAME, onEnterFrame)
}
private function onEnterFrame(e:Event):void
{
for (var i:int=0; i < num; i++)
{
var tree:Tree=trees[i];
move(tree);
}
vz*=fir;
sortZ();
}
private function move(tree:Tree):void
{
// tree.vy+=g;
//
// tree.xpos+=tree.vx;
// tree.ypos+=tree.vy;
tree.zpos+=vz;
// if (tree.ypos > float)
// {
// tree.ypos=float;
// tree.vy*=bounce;
// }
if (tree.zpos < -fl)
{
tree.zpos+=10000;
}
if (tree.zpos > 10000 - fl)
{
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;
}
private function sortZ():void
{
trees.sortOn("zpos", Array.DESCENDING | Array.NUMERIC);
for (var i:int=0; i < num; i++)
{
setChildIndex(trees[i], i);
}
}
private function onKeyDown(e:KeyboardEvent):void
{
if (e.keyCode == Keyboard.DOWN)
{
vz+=1;
}
else if (e.keyCode == Keyboard.UP)
{
vz-=1;
}
}
}
}
package com.ddd
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
[SWF(backgroundColor="0x0")]
public class Trees2 extends Sprite
{
private var trees:Array=[];
private var fl:Number=250;
private var num:int=100;
private var vpx:Number=stage.stageWidth / 2;
private var vpy:Number=stage.stageHeight / 2;
private var ax:Number=0;
private var ay:Number=0;
private var az:Number=0;
private var vx:Number=0;
private var vy:Number=0;
private var vz:Number=0;
private var float:Number=50;
private var fir:Number=.98;
private var g:Number=.3;
public function Trees2()
{
super();
init();
}
private function init():void
{
for (var i:int=0; i < num; i++)
{
var tree:Tree=new Tree;
this.addChild(tree);
trees.push(tree);
tree.xpos=Math.random() * 2000 - 1000;
tree.ypos=float;
tree.zpos=Math.random() * 10000;
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
this.addEventListener(Event.ENTER_FRAME, onEnterFrame)
}
private function onEnterFrame(e:Event):void
{
vx+=ax;
vy+=ay;
vz+=az;
vy-=g;
for (var i:int=0; i < num; i++)
{
var tree:Tree=trees[i];
move(tree);
}
vx*=fir;
vy*=fir;
vz*=fir;
}
private function sortZ():void
{
trees.sortOn("zpos", Array.DESCENDING | Array.NUMERIC);
for (var i:int=0; i < num; i++)
{
var tree:Tree=trees[i];
this.setChildIndex(tree, i);
}
}
private function move(tree:Tree):void
{
tree.xpos+=vx;
tree.ypos+=vy;
tree.zpos+=vz;
if (tree.ypos < float)
{
tree.ypos=float;
}
if (tree.zpos < -fl)
{
tree.zpos+=10000;
}
if (tree.zpos > 10000 - fl)
{
tree.zpos-=10000;
}
var scale:Number=fl / (fl + tree.zpos);
tree.x=vpx + tree.xpos * scale;
tree.y=vpy + tree.ypos * scale;
tree.alpha=scale;
}
private function onKeyDown(e:KeyboardEvent):void
{
switch (e.keyCode)
{
case Keyboard.DOWN:
ay=1;
break;
case Keyboard.UP:
ay=-1;
break;
case Keyboard.LEFT:
ax=-1;
break;
case Keyboard.RIGHT:
ax=1;
break;
case Keyboard.SPACE:
az=1;
break;
}
}
private function onKeyUp(e:KeyboardEvent):void
{
switch (e.keyCode)
{
case Keyboard.DOWN:
az=0
break;
case Keyboard.RIGHT:
ax=0
break;
case Keyboard.SPACE:
ay=0
break;
}
}
}
}