forked from: flash on 2012-7-18

by hacker_cobulht0 forked from flash on 2012-7-18 (diff: 229)
(整理していない)
♥2 | Line 240 | Modified 2012-12-25 10:46:01 | MIT License
play

ActionScript3 source code

/**
 * Copyright hacker_cobulht0 ( http://wonderfl.net/user/hacker_cobulht0 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/yvK4
 */

package{ //(整理していない)
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.filters.BlurFilter;
    import flash.geom.Point;
    import flash.geom.Matrix;
    
    import org.papervision3d.objects.primitives.*;
    
    import org.papervision3d.objects.special.*;
    import org.papervision3d.materials.*;
    import org.papervision3d.materials.special.*;
    import org.papervision3d.view.*;
    import org.papervision3d.objects.*;
    
    import org.papervision3d.typography.*;
    import org.papervision3d.typography.fonts.*;
    import org.papervision3d.materials.special.*;
    
    import org.papervision3d.typography.*;
    import org.papervision3d.typography.fonts.*;

    public class ChristmasTree extends BasicView {
        
        private var rootNode  : DisplayObject3D; 
        private var ptclF:ParticleField;    
        
        private var bitmap:BitmapData;
        private var blur:BlurFilter = new BlurFilter(2, 2, 1);
        private var point:Point = new Point();
        
        //
        private var pNum:uint=40;
        private var arr1=[0xFFCC66,0xCDC5C2,0xFF5349,0xBAB86C,0x74bb71,0x1FCECB,0x1F75FE];
        private var _List:Array=new Array();
        
        //
        private var kazari:Vector.<Sphere>=new Vector.<Sphere>();
        
        public function ChristmasTree() {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void {
            
            rootNode = new DisplayObject3D();
            scene.addChild( rootNode );
            
            bitmap = new BitmapData(460,460, false, 0);
            stage.addChild(new Bitmap(bitmap));
            
            //Ptcl//////////////////////////////////////////////////
            var material:ParticleMaterial = new ParticleMaterial(0xFFFFFF, 1, 1, 3);
            ptclF = new ParticleField(material, pNum, 2, 700, 700, 700);
            rootNode.addChild(ptclF);
            
            for(var q:int=0; q < pNum; q++){
                var rd=Math.floor(Math.random()*5);
                ptclF.particles[q].material = new ParticleMaterial(arr1[rd], 1, 1, 3);
                ptclF.particles[q].x=0;
                ptclF.particles[q].y=200;//-200
                ptclF.particles[q].z=0;
                
                _List.push({_obj:ptclF.particles[q],_velX:Math.random() * 20-10,_velY:Math.random() * 10+5,_velZ:Math.random() * 20-10});
            }
            ///////////////////////////////////////////
            
            //床//////////////////////////////////////////////////
            var wmt:WireframeMaterial = new WireframeMaterial(0xFFC2A5,0.02);//0x9FE2BF
            var floor:Plane = new Plane(wmt, 500, 500,5,5);
            floor.y=-200;
            floor.pitch(90);
            rootNode.addChild(floor);
            ///////////////////////////////////////////
            
              //木//////////////////////////////////////////////////
            var tr_mat: ColorMaterial = new ColorMaterial(0x1CAC78);
            var tree1:Cone=new Cone(tr_mat, 50, 80);
            rootNode.addChild(tree1);
            
            var tree2:Cone=new Cone(tr_mat, 80, 100);
            tree2.y=-80;
            rootNode.addChild(tree2);
            
            var tr_mat2: ColorMaterial = new ColorMaterial(0xD68A59);
            var stem:Cylinder = new Cylinder(tr_mat2, 20, 40,20,20);
            stem.y=-160;
            rootNode.addChild(stem);
            
            ///////////////////////////////////////////
            
            //飾り//////////////////////////////////////////////////
            for(q=0; q < arr1.length; q++){
                var sph:Sphere = new Sphere(new ColorMaterial(arr1[q]),10);
                rootNode.addChild(sph);
                kazari.push(sph);
            }
            
            kazari[0].x=50;//gold
            kazari[0].y=-20;
            kazari[1].z=-50;//silver
            kazari[1].y=-10;
            kazari[2].x=-80;//aka
            kazari[2].y=-80;
            kazari[3].z=60;//olive
            kazari[3].y=-80;
            kazari[4].x=-60;//green
            kazari[4].y=-20;
            kazari[5].x=90;//blue
            kazari[5].y=-100;
            
            kazari[6].z=-90;//Indigo
            kazari[6].y=-120;
            ///////////////////////////////////////////
            
            //★//////////////////////////////////////////////////
            var bmdS:BitmapData = new BitmapData(40,40,true,0x00FFFFFF);
            var shS:star=new star();
            bmdS.draw(shS);
            var matS: BitmapMaterial = new BitmapMaterial(bmdS);
            matS.doubleSided=true;
            var topStar:Plane=new Plane(matS,40*2,40*2);
            rootNode.addChild(topStar);
            topStar.y=80;
            ///////////////////////////////////////////
            
            //message//////////////////////////////////////////////////
            var letterMat = new Letter3DMaterial(0xFF6E4A);
            letterMat.doubleSided=true;
            var strCo = new Text3D("M e r r y  C h r i s t m a s ! !", new HelveticaBold(), letterMat);
            strCo.y=-180;
            strCo.z=-150;
            strCo.scaleX=strCo.scaleY=0.5;
            strCo.pitch(60);
            rootNode.addChild( strCo );
            ///////////////////////////////////////////
            
            //chick//////////////////////////////////////////////////
            var bmdC:BitmapData = new BitmapData(200,200,true,0x00FFFFFF);
            var shC:mainChick=new mainChick();
            bmdC.draw(shC);
            var matC: BitmapMaterial = new BitmapMaterial(bmdC);
            matC.doubleSided=true;
            var _chk:Plane=new Plane(matC,200,200);
            rootNode.addChild(_chk);
            _chk.x=-100;_chk.y=-200;_chk.z=150;
            ///////////////////////////////////////////
            
            camera.y = 400;
            camera.focus =10;
            
            startRendering();                
            stage.addEventListener(KeyboardEvent.KEY_DOWN, key_Dw);//キーボード沈下
            addEventListener(Event.ENTER_FRAME, loop);
        }
        
        private function loop(e:Event):void {
            
        rootNode.rotationY += 0.2;
            
            var _grav=1.2;
            for (var q:int=0; q < _List.length; q++) {
                var pt = _List[q];
                
                pt._obj.x += pt._velX;
                pt._obj.y += pt._velY;
                pt._obj.z += pt._velZ;
                pt._velY -= _grav;
                
                if (pt._obj.y <-200){saiSet(pt);}
                
            }            
            
            
            bitmap.lock();
            bitmap.applyFilter(bitmap, bitmap.rect, point, blur)
            bitmap.draw(this);
            bitmap.unlock()
        }
        private function saiSet(arg){
            arg._obj.x=0;
            arg._obj.y=200;//-200
            arg._obj.z=0;
            arg._velX=Math.random() * 20-10;
            arg._velY=Math.random() * 10+5;
            arg._velZ=Math.random() * 20-10;
        }
        
        
                        private function key_Dw(e:KeyboardEvent = null):void{
                                    if(e.keyCode==38){camera.zoom++;//[ue]
                                    }else if(e.keyCode==40){camera.zoom--;//[st]
                                    }else if(e.keyCode==90){camera.zoom=40;//[Z]
                                    }
                        }
    }
}










import flash.display.Sprite;
class star extends Sprite{
public function star (){
                var sp:Sprite=new Sprite();
                sp.graphics.beginFill(0xffcc66);
                 sp.graphics.moveTo(20, 0);
                for (var i:int = 0; i < 5; i++){                
                   var erad:Number = i / 5 * Math.PI * 2;
                   sp.graphics.lineTo(Math.cos(erad) * 20, Math.sin(erad) * 20);
                   sp.graphics.lineTo(Math.cos(erad+Math.PI/5) * 12, Math.sin(erad+Math.PI/5) * 12);
                }sp.graphics.endFill();this.addChild(sp);
                sp.x=20;
                sp.y=20;
    }
}

class mainChick extends Sprite{
    public var pic:drawChick=new drawChick();
    public function mainChick(){
        addChild(pic);
        pic.x=50;
        pic.y=80;
        pic.scaleX=pic.scaleY=2.5;
        pic.alpha=0.5;
        //trace(pic.width,pic.height);
    }
}
class drawChick extends Sprite{
    private var head:Sprite=new Sprite();
    private var body:Sprite=new Sprite();
    private var scarf:Sprite=new Sprite();
    public var foot:Sprite=new Sprite();
    
public function drawChick(){
        head.graphics.beginFill(0xFFCC44);
        head.graphics.drawCircle(0,0,10);//head
        head.graphics.endFill();
        var head_1:Sprite = new Sprite();
        head_1.graphics.beginFill(0x34929A);//eye
        head_1.graphics.drawCircle(-1,-1,2);
        head_1.graphics.endFill();
        head_1.graphics.beginFill(0xF6712E);//Bill
        head_1.graphics.drawEllipse(-15,-2,7,4);        
        head_1.graphics.endFill();
        
        //hat
        head_1.graphics.beginFill(0xFD5E53);
        head_1.graphics.moveTo(8,-7);
        head_1.graphics.lineTo(0,-25);
        head_1.graphics.lineTo(-8,-7);
        head_1.graphics.endFill();
        head_1.graphics.beginFill(0xFFFFFF);
        head_1.graphics.drawCircle(0,-25,2.5);        
        head_1.graphics.endFill();
        head.addChild(head_1);
        addChild(head);
        
        body.graphics.beginFill(0xFFCC44);//body
        body.graphics.drawEllipse(2,2,30,20);
        body.graphics.endFill();
        var body_1:Sprite = new Sprite();
        body_1.graphics.beginFill(0xFFCC44);//teil
        body_1.graphics.moveTo(20,5);
        body_1.graphics.lineTo(35,-1);
        body_1.graphics.lineTo(32,13);
        body_1.graphics.endFill();
        body.addChild(body_1);
        addChild(body);    
        
        foot.graphics.lineStyle(2,0xF6721E);//foot
        foot.graphics.moveTo(18,23);
        foot.graphics.lineTo(18,25);
        foot.graphics.moveTo(18,25);
        foot.graphics.lineTo(15,30);
        foot.graphics.moveTo(18,25);
        foot.graphics.lineTo(12,28);
        foot.graphics.moveTo(18,25);
        foot.graphics.lineTo(10,25);        
        foot.graphics.endFill();
        
        addChild(foot);    

        scarf.graphics.beginFill(0xFF6E4A);
        scarf.graphics.drawEllipse(-5,8,14,3);
        scarf.graphics.endFill();    
        scarf.rotation=-40;        
        var scarf_1:Sprite = new Sprite();    
        scarf_1.graphics.beginFill(0xFF6E4A);
        scarf_1.graphics.drawEllipse(0,0,15,5);
        scarf_1.graphics.endFill();    
        scarf_1.rotation=-60;
        scarf_1.x=5;scarf_1.y=8;        
        var scarf_2:Sprite = new Sprite();    
        scarf_2.graphics.beginFill(0xFF6E4A);
        scarf_2.graphics.drawEllipse(0,0,15,5);
        scarf_2.graphics.endFill();    
        scarf_2.rotation=-20;
        scarf_2.x=5;scarf_2.y=8;        
        scarf.addChild(scarf_2);
        scarf.addChild(scarf_1);
        addChild(scarf);
    }
}