| 1 |
// Sample for event trigger |
|---|
| 2 |
package { |
|---|
| 3 |
import flash.display.*; |
|---|
| 4 |
import flash.events.*; |
|---|
| 5 |
import org.si.sion.*; |
|---|
| 6 |
import org.si.sion.events.*; |
|---|
| 7 |
|
|---|
| 8 |
|
|---|
| 9 |
public class EventTrigger extends Sprite { |
|---|
| 10 |
// driver |
|---|
| 11 |
public var driver:SiONDriver = new SiONDriver(); |
|---|
| 12 |
|
|---|
| 13 |
// MML data |
|---|
| 14 |
public var mainMelody:SiONData; |
|---|
| 15 |
|
|---|
| 16 |
|
|---|
| 17 |
// constructor |
|---|
| 18 |
function EventTrigger() { |
|---|
| 19 |
// compile with event trigger command (%t) |
|---|
| 20 |
mainMelody = driver.compile("%t0,1,1 t100 l8 [ccggaag4 ffeeddc4 | [ggffeed4]2 ]2"); |
|---|
| 21 |
|
|---|
| 22 |
// listen triggers |
|---|
| 23 |
driver.addEventListener(SiONTrackEvent.NOTE_ON_FRAME, _onNoteOn); |
|---|
| 24 |
driver.addEventListener(SiONTrackEvent.NOTE_OFF_FRAME, _onNoteOff); |
|---|
| 25 |
addEventListener("enterFrame", _onEnterFrame); |
|---|
| 26 |
|
|---|
| 27 |
// play main melody |
|---|
| 28 |
driver.play(mainMelody); |
|---|
| 29 |
} |
|---|
| 30 |
|
|---|
| 31 |
|
|---|
| 32 |
// This event dispatched when note on |
|---|
| 33 |
private function _onNoteOn(e:SiONTrackEvent) : void { |
|---|
| 34 |
_createNoteShape(e.note); |
|---|
| 35 |
} |
|---|
| 36 |
|
|---|
| 37 |
|
|---|
| 38 |
// This event dispatched when note off |
|---|
| 39 |
private function _onNoteOff(e:SiONTrackEvent) : void { |
|---|
| 40 |
} |
|---|
| 41 |
|
|---|
| 42 |
|
|---|
| 43 |
// create shape |
|---|
| 44 |
private function _createNoteShape(noteNumber:int) : Shape { |
|---|
| 45 |
var shape:Shape = new Shape(); |
|---|
| 46 |
shape.graphics.beginFill([0xff8080, 0x80ff80, 0x8080ff, 0xffff80][int(Math.random()*4)]); |
|---|
| 47 |
shape.graphics.drawCircle(0, 0, Math.random()*20+10); |
|---|
| 48 |
shape.graphics.endFill(); |
|---|
| 49 |
shape.x = (noteNumber - 60) * 30 + 100; |
|---|
| 50 |
shape.y = 300; |
|---|
| 51 |
addChild(shape); |
|---|
| 52 |
return shape; |
|---|
| 53 |
} |
|---|
| 54 |
|
|---|
| 55 |
|
|---|
| 56 |
// on each frame |
|---|
| 57 |
private function _onEnterFrame(e:Event) : void { |
|---|
| 58 |
var imax:int = numChildren; |
|---|
| 59 |
for (var i:int=0; i<imax; i++) { |
|---|
| 60 |
var child:DisplayObject = getChildAt(i); |
|---|
| 61 |
child.y -= 2; |
|---|
| 62 |
child.alpha *= 0.98; |
|---|
| 63 |
if (child.y < -30 || child.alpha < 0.1) { |
|---|
| 64 |
removeChild(child); |
|---|
| 65 |
imax--; |
|---|
| 66 |
i--; |
|---|
| 67 |
} |
|---|
| 68 |
} |
|---|
| 69 |
} |
|---|
| 70 |
} |
|---|
| 71 |
} |
|---|
| 72 |
|
|---|