forked from: flash on 2012-7-18
forked from flash on 2012-7-18 (diff: 229)
(整理していない)
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);
}
}
