root/as3/Astro/ShaderFilter/Mudflow/Mudflow.as

リビジョン 420, 2.0 kB (コミッタ: gyuque, コミット時期: 4 年 前)

moved

Line 
1 package
2 {
3         import flash.utils.*;
4         import flash.display.*;
5         import math2d.*;
6         import phys.*;
7         import flash.events.*;
8         public class Mudflow extends Sprite
9         {
10                 [Embed(source="mb.pbj", mimeType="application/octet-stream")]
11                 private var ShaderBC:Class; // ByteArray
12                 private var mMBShader:Shader;
13
14                 private var mMB:MetaBallCanvas;
15                 private var mTickcount:int = 0;
16                 private var mSCanvas:ScratchCanvas;
17                 private var mParticles:ParticleManager;
18                 private var mField:Field;
19
20                 function Mudflow()
21                 {
22                         setupShader();
23                         mField = new Field();
24
25                         mMB = new MetaBallCanvas(320, 256, mMBShader);
26                         mSCanvas = new ScratchCanvas(320, 256);
27                         mParticles = new ParticleManager(128, mMB.offscreenSprite);
28
29                         addChild(mMB);
30                         addChild(mSCanvas);
31
32                         createField();
33
34
35                         mField.particles = mParticles;
36
37                         addEventListener(Event.ENTER_FRAME, onEnterFrame);
38                 }
39
40                 private function setupShader():void
41                 {
42                         var src:ByteArray = new ShaderBC();
43                         mMBShader = new Shader(src);
44                 }
45
46                 private function createField():void
47                 {
48                         var s:UShape = new UShape();
49                         s.addPile(new Pile(-100, 50));
50                         s.addPile(new Pile(150, 130));
51                         s.addPile(new Pile(180, 160));
52                         s.addPile(new Pile(180, 200));
53                         s.addPile(new Pile(-100, 200));
54
55                         s.close();
56                         mField.addShape(s);
57                         s.renderShape(mSCanvas, 0x666033);
58
59                         s = new UShape();
60                         s.addPile(new Pile(300, 180));
61                         s.addPile(new Pile(300, 230));
62                         s.addPile(new Pile(220, 230));
63                         s.addPile(new Pile(220, 210));
64                         s.addPile(new Pile(250, 190));
65
66                         s.close();
67                         mField.addShape(s);
68                         s.renderShape(mSCanvas, 0x666033);
69                 }
70
71                 private function onEnterFrame(e:Event):void
72                 {
73                         mField.updatePhys();
74                         mField.updatePosition();
75                         mField.render();
76
77                         mMB.render();
78
79                         var basex:int = mouseX;
80                         if (basex < 10) basex = 10;
81                         if (basex > 245) basex = 245;
82                         if ((mTickcount++ % 3) == 0)
83                         {
84                                 var p:PBall = mParticles.addBall(Math.random() * 30 + basex, -10);
85                                 if (p) p.v.y = 4;
86
87                         }
88                 }
89         }
90 }
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。