STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228050
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2560 · P5120

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/95204811?noj=FRM95204811-24DC" width="1" height="1"></div>

eartrain_rewritex.swf

This is the info page for
Flash #78403

(Click the ID number above for more basic data on this flash file.)


ActionScript [AS3]
Section 1
//buttonpl0x (com.adobe.ooas3.buttonpl0x) package com.adobe.ooas3 { import flash.display.*; import flash.text.*; import flash.filters.*; public class buttonpl0x extends Sprite { public var tf:TextField; public var shad:DropShadowFilter; public var fmt:TextFormat; public var tf1:TextField; public function buttonpl0x(){ tf = new TextField(); tf1 = new TextField(); fmt = new TextFormat(); shad = new DropShadowFilter(2, 45, 0xC0C0C0, 0xFF, 1, 1, 1, 1); super(); fmt.size = 16; fmt.bold = true; fmt.color = 0; fmt.align = "center"; this.graphics.beginFill(0); this.graphics.drawRoundRect(0, 0, 60, 30, 5, 5); this.graphics.endFill(); tf.defaultTextFormat = fmt; tf.width = 60; tf.height = 24; tf.y = 5; tf.name = "x"; tf.mouseEnabled = false; tf.selectable = false; tf.text = "Test"; this.addChild(tf); tf.filters = [shad]; fmt.size = 12; tf1.defaultTextFormat = fmt; tf1.name = "counter"; tf1.text = "1"; tf1.width = 60; tf1.height = 20; tf1.y = 32; tf1.mouseEnabled = false; tf1.selectable = false; tf1.textColor = 0; tf1.filters = [shad]; this.addChild(tf1); } } }//package com.adobe.ooas3
Section 2
//dropdownx (com.adobe.ooas3.dropdownx) package com.adobe.ooas3 { import fl.controls.*; import flash.display.*; public class dropdownx extends Sprite { public var myComboBox:ComboBox; public function dropdownx(){ myComboBox = new ComboBox(); super(); addChild(myComboBox); } public function addsimple(_arg1:Array, _arg2:Number, _arg3:Number){ var _local4:uint; var _local6:Number; var _local7:String; var _local8:*; var _local9:String; var _local10:Number; myComboBox.move(_arg2, _arg3); var _local5:Number = 0; _local4 = 0; while (_local4 < _arg1.length) { _local6 = 0; myComboBox.addItem({label:_arg1[_local4]}); _local7 = _arg1[_local4]; _local8 = 0; while (_local8 < _local7.length) { if ((((((_local7.charCodeAt(_local4) > 64)) && ((_local7.charCodeAt(_local4) < 91)))) || ((_local7.charCodeAt(_local4) == 109)))){ _local6 = (_local6 + 7); } else { _local6 = (_local6 + 5); }; _local8++; }; if (_local6 > _local5){ _local5 = _local6; }; _local4++; }; _local4 = 0; while (_local4 < myComboBox.length) { myComboBox.selectedIndex = _local4; myComboBox.drawNow(); _local9 = myComboBox.text; _local10 = myComboBox.textField.textWidth; _local4++; }; myComboBox.selectedIndex = -1; myComboBox.dropdownWidth = (_local5 + 36); } public function addstuffandmove(_arg1:Array, _arg2:Number, _arg3:Number){ var _local4:uint; var _local6:String; var _local7:Number; myComboBox.move(_arg2, _arg3); _local4 = 0; while (_local4 < _arg1.length) { myComboBox.addItem({label:_arg1[_local4][0]}); _local4++; }; var _local5:Number = 0; _local4 = 0; while (_local4 < myComboBox.length) { myComboBox.selectedIndex = _local4; myComboBox.drawNow(); _local6 = myComboBox.text; _local7 = myComboBox.textField.textWidth; _local5 = Math.max(_local7, _local5); _local4++; }; myComboBox.selectedIndex = -1; myComboBox.dropdownWidth = (_local5 + 100); } } }//package com.adobe.ooas3
Section 3
//googleButton (com.adobe.ooas3.googleButton) package com.adobe.ooas3 { import flash.display.*; import flash.events.*; import flash.text.*; import flash.filters.*; import flash.geom.*; public class googleButton extends Sprite { public var tf:TextField; public var num:Number; public function googleButton(){ tf = new TextField(); super(); } public function makeButton(_arg1, _arg2, _arg3, _arg4, _arg5="", _arg6=0, _arg7=18, _arg8=0){ var _local16:*; if (_arg8 < 1){ _local16 = 0; while (_local16 < _arg1.length) { if ((((((_arg1.charCodeAt(_local16) > 64)) && ((_arg1.charCodeAt(_local16) < 91)))) || ((_arg1.charCodeAt(_local16) == 109)))){ _arg8 = (_arg8 + 7); } else { _arg8 = (_arg8 + 5); }; _local16++; }; _arg8 = (_arg8 + 12); }; var _local9:String = GradientType.LINEAR; var _local10:Array = [0xF9F9F9, 0xE3E3E3, 0xE3E3E3]; var _local11:Array = [1, 1, 1]; var _local12:Array = [96, 144, 0xFF]; var _local13:Matrix = new Matrix(); _local13.createGradientBox(_arg8, _arg7, ((Math.PI / 180) * 90), 0, 0); var _local14:String = SpreadMethod.PAD; this.x = _arg2; this.y = _arg3; if (_arg5 != ""){ this.name = _arg5; }; num = _arg6; this.graphics.lineStyle(1, 0x999999); this.graphics.beginGradientFill(_local9, _local10, _local11, _local12, _local13, _local14); this.graphics.drawRoundRect(0, 0, _arg8, _arg7, 5, 5); this.addEventListener(MouseEvent.CLICK, _arg4); tf.mouseEnabled = false; tf.width = _arg8; tf.height = (_arg7 + 3); tf.textColor = 0; tf.x = 3; tf.y = (Math.round(((_arg7 - 10) / 2)) - 4); tf.text = _arg1; var _local15:DropShadowFilter = new DropShadowFilter(1, 45, 0xFFFFFF, 0xFF, 2, 1, 1, 1); tf.filters = [_local15]; this.buttonMode = true; this.addChild(tf); } public function reposition(_arg1, _arg2){ this.x = _arg1; this.y = _arg2; } } }//package com.adobe.ooas3
Section 4
//sidepl0x (com.adobe.ooas3.sidepl0x) package com.adobe.ooas3 { import flash.display.*; import flash.text.*; public class sidepl0x extends Sprite { public var num:Number; public var side:TextField; public var fmt:TextFormat; public function sidepl0x(){ side = new TextField(); fmt = new TextFormat(); super(); fmt.size = 12; fmt.bold = true; fmt.color = 0xFFFFFF; fmt.align = "center"; side.width = 60; side.height = 14; side.defaultTextFormat = fmt; side.text = "x"; side.mouseEnabled = false; side.selectable = false; side.autoSize = TextFieldAutoSize.LEFT; this.addChild(side); } public function drawplz(_arg1, _arg2, _arg3){ this.graphics.beginFill(_arg3); this.graphics.drawRoundRect(0, 0, _arg1, _arg2, 5, 5); this.graphics.endFill(); } } }//package com.adobe.ooas3
Section 5
//soundcomplete (com.adobe.ooas3.soundcomplete) package com.adobe.ooas3 { import flash.events.*; import flash.media.*; import flash.utils.*; public class soundcomplete extends Sound { private var channel:SoundChannel; public var transf:SoundTransform; public var isDone:Number;// = 0 public var moveTimer:Timer; public function soundcomplete(){ channel = new SoundChannel(); transf = new SoundTransform(0.5, 0.5); super(); } private function soundCompleteHandler(_arg1:Event){ isDone = 2; } public function getChan():SoundChannel{ return (channel); } public function playsnd(_arg1:Number){ isDone = 1; var _local2:Number = 1; var _local3:Number = (1000 - (1000 / _arg1)); if (_local3 < 0){ _local2 = (_local2 + (Math.abs(_local3) / 1000)); _local3 = 0; }; moveTimer = new Timer(Math.round((1000 / _arg1))); moveTimer.start(); channel = this.play(0, 0, transf); } public function gimmie():Timer{ return (moveTimer); } } }//package com.adobe.ooas3
Section 6
//MainTimeline (eartrain_rewrite43_fla.MainTimeline) package eartrain_rewrite43_fla { import flash.display.*; import flash.events.*; import flash.media.*; import flash.utils.*; import flash.text.*; import com.adobe.ooas3.*; import flash.filters.*; import flash.geom.*; import flash.ui.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.net.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class MainTimeline extends MovieClip { public var pitchColorPresets:Array; public var pitchMissedFlag:Boolean; public var ascselected; public var seven:Array; public var intervalPresetsBuiltSettings:Array; public var optionsChordsGoodEarDeactivated:Array; public var absoluteAnswer:Number; public var teh:buttonpl0x; public var optionsProgressions2; public var lastIntervalIndex:Number; public var pitchTotalIncorrect:uint; public var sevenDeactivated:Array; public var optionsProgressions4; public var optionsProgressions3; public var smBreakDownIndex:uint; public var pianoflag:Boolean; public var pitchLastPlayTime:Number; public var questionType:Number; public var pitchConfused; public var callback:Function; public var sharpsBass:Array; public var skills; public var timing; public var pitchIncorrect:Array; public var font:arial; public var memoryIndex:uint; public var optionsFeedback:Array; public var voiceIds; public var pitchColorPresetsSelect:uint; public var startDecentButtons:Boolean; public var notesids; public var blue:Boolean; public var ascmisses; public var menuArray:Array; public var dscselected; public var anchorNote:Number; public var optionsCounterPointDeactivated:Array; public var speed:Array; public var k; public var optionsScalesGoodEarDeactivated:Array; public var correct; public var annoying:Array; public var z; public var descmisses; public var myBox:dropdownx; public var myAnswer:Number; public var questionIndex:Number; public var fmt:TextFormat; public var totaltiming:Number; public var optionsTypes; public var smRepeat:Array; public var lastplaytime:Number; public var red:Boolean; public var harmonicNotes; public var optionsHarmonicIndex:Number; public var totalcorrect:Number; public var smCorrect:Array; public var optionsProgressions2Deactivated:Array; public var streaks; public var optionsActionWrongIndex:Number; public var intervalId:uint; public var smPlayIndex:uint; public var prevNote:Number; public var songmodesongs:Number; public var smPlay:Array; public var vol:Number; public var intervalsSightSingingDeactived:Array; public var memoryAmount:uint; public var disablekeys:Boolean; public var myAbsoluteAnswer:Number; public var pitchTotalReplays:uint; public var intervalPresets:Array; public var myTimer:Timer; public var pitchTopStreaks:Array; public var speedNob:Sprite; public var smBreakDown:Array; public var notesAvailable:Number; public var targets:Array; public var pitchCorrect:Array; public var volumeBase:Sprite; public var topstreak:Number; public var optionsTypesIndex; public var keySignature:Array; public var smWrongIndex:uint; public var queue:Array; public var defaultChords:Array; public var listenAnswerTimeout:Number; public var smRepeatIndex:uint; public var backupArr:Array; public var pitchSemitonesOff:Array; public var volumeNob:Sprite; public var pitchAnsweredFlag:Boolean; public var questions; public var replayback:Number; public var memoryCurrent:Number; public var side:TextField; public var pitchStreaks:Array; public var programStarted:Date; public var intervalSet:Array; public var pitchTotalTiming:Number; public var snd:soundcomplete; public var replays; public var numback:Number; public var optselect:Number; public var simpleTest:Array; public var num3:Number; public var optionsCadenceDeactivated:Array; public var sharpsTreble:Array; public var staffContainer:Sprite; public var noteIds:Array; public var smMissed:Boolean; public var listenTimeout:Number; public var optionsAnchorIndex:Number; public var target:DisplayObject; public var totalreplays:Number; public var optionsNoteLocationDeactivated:Array; public var dotClass:Sprite; public var dsc:Array; public var topstreaks; public var stopLoop:Boolean; public var listen:Number; public var optstats; public var intervalsDeactived:Array; public var pitchTopStreak:uint; public var scaleDefinitions:Array; public var code:Number; public var notesListDeactivated:Array; public var pitchQuestions:Array; public var scrolling:Boolean; public var missedback:Boolean; public var defaultScalesDeactivated:Array; public var numbersList; public var defaultScales:Array; public var answerText:String; public var pitchReplays; public var smCorrectIndex:uint; public var singleMode:Boolean; public var optionsProgressions3Deactivated:Array; public var defaultChordsDeactivated:Array; public var flatsBass:Array; public var countedCorrectAlready:Boolean; public var splashselect:Number; public var memoryNotes:Array; public var optionsFeedbackIndex:Number; public var splashflag; public var optionsDesc:Array; public var arl:TextFormat; public var startplz:Number; public var st:Sprite; public var sw:Boolean; public var missedback1:Number; public var deactivated:Array; public var asc:Array; public var tf:TextField; public var qspeed:Number; public var arr:Array; public var keyListFlats:Array; public var keyListDeactivated:Array; public var noteNames:Array; public var missed:Boolean; public var options:Array; public var drawScaleOffset:Number; public var keySignatureDefinitions:Array; public var optKey:Number; public var optionsInstrumentIndex:Number; public var tehbutt:nicebutton; public var optionsCounterPoint:Array; public var misses; public var optionsSpeedMathDeactivated:Array; public var mapNotes:Array; public var noh:sidepl0x; public var keyListSharpsDeactivated:Array; public var relative:Boolean; public var songmodelast; public var intervalPresetsBuilt:Array; public var notes:Array; public var optionsScalesGoodEar; public var pitchStreak:uint; public var optionsHarmonic:Array; public var optionsPresetLevels:Array; public var totalmisses:Number; public var smQueue:Array; public var optionsSpeedMath; public var optionsAnchor:Array; public var notesList; public var pianocorrect; public var green:Boolean; public var flatsTreble:Array; public var optionsCadence; public var optionsActionCorrectIndex:Number; public var prevOptionsTypesIndex:Number; public var skipped:Number; public var optionsPitch:Array; public var total:Number; public var repeatTimeout:Number; public var numbersListDeactivated:Array; public var sidebutton:Sprite; public var listen2; public var songModeIndex:Number; public var noob:Boolean; public var optionsActionCorrect:Array; public var chordReplay:Array; public var optionsProgressions4Deactivated:Array; public var smWrong:Array; public var anchorArr:Array; public var streak:Number; public var movieBorder:Shape; public var chordDefinitions:Array; public var optionsNoteLocation:Array; public var num:Number; public var descmissesTotal:Number; public var feedback:TextField; public var intervalsCompareDeactived:Array; public var optionsActionWrong:Array; public var staffOffset:int; public var pianototal:Number; public var keyList:Array; public var optLevelPresets:Number; public var incorrect; public var ascmissesTotal:Number; public var pitchTiming; public var keyListFlatsDeactivated:Array; public var backupSpeed:Array; public var optionsNoteLocationDesc:Array; public var speedBase:Sprite; public var backupSequence:Array; public var answer:Number; public var staffNotes:Array; public var optionsDescIndex:Number; public var optionsChordsGoodEar:Array; public var keyListSharps:Array; public var spek:Sprite; public var firstMiss:Number; public var skippedlist; public var sequence:Array; public var pitchTotalSemitonesOff:uint; public var pitchTotal:uint; public var pitchTotalCorrect:uint; public var replay:Boolean; public var snd1:soundcomplete; public var clicks:Number; public var optionsChords:Array; public var optionsInstruments:Array; public var properIntervalSet:Array; public var ascF:Boolean; public var tune:soundcomplete; public function MainTimeline(){ addFrameScript(0, frame1); } public function playInterval(_arg1, _arg2):void{ if (questionType == 1){ playSequence(new Array(_arg1, _arg2), new Array(qspeed, qspeed)); } else { if (questionType == 2){ playSequence(new Array(_arg1, (_arg2 * -1)), new Array(qspeed, qspeed)); } else { if (questionType == 3){ playSequence(new Array(new Array(_arg1, (_arg1 + _arg2))), new Array()); }; }; }; } public function autoRepeat():void{ myTimer = new Timer(repeatTimeout); myTimer.addEventListener(TimerEvent.TIMER, function (_arg1:TimerEvent):void{ if (arr.length == 0){ rep(); }; }); myTimer.start(); } public function addNote(_arg1, _arg2:Number=0){ var _local5:Sprite; var _local6:*; var _local7:String; var _local8:Array; var _local9:*; if (noob){ return; }; if (typeof(_arg1) == "string"){ if (_arg1.match("#") != null){ _arg2 = 1; _arg1 = _arg1.replace(/\#/, ""); }; for (_local6 in mapNotes) { if (mapNotes[_local6][0].replace(/\#/, "") == _arg1){ break; }; }; } else { for (_local6 in mapNotes) { if (mapNotes[_local6][0] == noteNames[_arg1].replace(/\#/, "")){ break; }; }; if (noteNames[_arg1].match("#") != null){ _arg2 = 1; }; }; trace(((((("Found: " + mapNotes[_local6][0]) + " at index ") + _local6) + " where sharp is ") + _arg2)); var _local3:Boolean = keySignatureDefinitions[optKey][1]; if (_arg2 == 1){ _local7 = mapNotes[_local6][0].substr(0, 1); if ((((_local7 == "b")) || ((_local7 == "e")))){ _local6++; _arg2 = 0; }; }; if (((_local3) && ((_arg2 == 1)))){ _arg2 = 2; _local6--; }; var _local4:Array = clone(mapNotes[_local6]); trace(((((((("Input: " + _arg1) + " noSeek: ") + _local4) + " isFlat: ") + _local3) + " Sharp: ") + _arg2)); staffNotes.push(_arg1); if (optKey > 0){ _local8 = (_local3) ? clone(flatsTreble) : _local8 = clone(sharpsTreble); _local8; trace(_local4[0]); for (_local9 in _local8) { if (_local9 >= keySignatureDefinitions[optKey][2]){ break; }; if (_local8[_local9].substr(0, 1) == _local4[0].substr(0, 1)){ if (_arg2 > 0){ _arg2 = 0; } else { _arg2 = 3; }; }; }; }; if (!_local4){ return; }; if ((((_local4[0] == "a5")) || ((_local4[0] == "c3")))){ _local5 = new lineNote(); } else { if (_local4[0] == "b5"){ _local5 = new aboveLineNote(); } else { if (_local4[0] == "c5"){ _local5 = new doubleLineNote(); } else { if (_local4[0] == "d5"){ _local5 = new doubleLineAbove(); } else { _local5 = new note(); }; }; }; }; _local5.x = (((43 + (drawScaleOffset * 8)) + 25) + (staffOffset * 25)); _local5.y = _local4[1]; staffContainer.addChild(_local5); if (_arg2 == 1){ _local5 = new ksharp(); _local5.x = ((((43 + (drawScaleOffset * 8)) + 25) + (staffOffset * 25)) - 10); _local5.y = _local4[1]; staffContainer.addChild(_local5); } else { if (_arg2 == 2){ _local5 = new flat(); _local5.x = ((((43 + (drawScaleOffset * 8)) + 25) + (staffOffset * 25)) - 10); _local5.y = (_local4[1] - 4); staffContainer.addChild(_local5); } else { if (_arg2 == 3){ _local5 = new natural(); _local5.x = ((((43 + (drawScaleOffset * 8)) + 25) + (staffOffset * 25)) - 10); _local5.y = (_local4[1] - 4); staffContainer.addChild(_local5); }; }; }; staffOffset++; } public function tff(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7=false, _arg8=false, _arg9=false, _arg10=false){ var _local11:TextField = new TextField(); _local11 = new TextField(); _local11.defaultTextFormat = arl; _local11.width = _arg5; _local11.height = _arg6; _local11.textColor = _arg4; _local11.border = _arg8; _local11.x = _arg2; _local11.y = _arg3; _local11.wordWrap = _arg10; _local11.text = _arg1; _local11.mouseEnabled = _arg8; _local11.selectable = _arg8; if (_arg7 != false){ _local11.name = _arg7; }; if (_arg8){ _local11.type = TextFieldType.INPUT; _local11.borderColor = 0; }; if (_arg9 != false){ _local11.background = true; _local11.backgroundColor = _arg9; }; _local11.embedFonts = true; return (_local11); } public function clearDots(){ green = false; blue = false; red = false; var _local1:* = 0; while (_local1 < annoying.length) { targets[_local1].removeChild(annoying[_local1]); _local1++; }; annoying = new Array(0); targets = new Array(0); } public function playNext():void{ var scale:Boolean; var i:*; var k:*; var descriptiveNameHere:Array; var startNote:Number; var interval:Number; var optselectBackup:Number; var asdf:soundcomplete; var secondNote:Number; var style:String = optionsTypes[optionsTypesIndex]; var foo:Array = new Array(); clearStaff(); clearDots(); drawMenu(); resetJobBro(); if (((myTimer) && (myTimer.running))){ myTimer.stop(); }; callback = doNothing; trace(("Play pushed " + style)); if ((((style.substr(0, 9) == "Intervals")) || ((style.substr(0, 9) == "Song Mode")))){ if (((missed) && ((countedCorrectAlready == false)))){ mistake(); generalStats(); } else { if (countedCorrectAlready == false){ var _local2 = skippedlist; var _local3 = (questionIndex - 1); var _local4 = (_local2[_local3] + 1); _local2[_local3] = _local4; skipped++; }; }; }; if (style.substr(0, 9) == "Intervals"){ if (style == "Intervals: Song Buttons"){ feedback.text = "Two notes are played. Which song starts with those notes?\nWant to change or hear a song? Click the 'songs' button below the two dropdowns."; }; newQuestion(); } else { if (style == "Song Mode"){ playSong(); } else { if (style == "Song Mode Single"){ playSong(true); } else { if (style == "Previous Note Reference"){ if (prevNote == -1){ gp(); mq(); clearDots(); addDot(num, "green", new greendot()); prevNote = absoluteAnswer; } else { prevNoteGen(); }; } else { if ((((style == "Chords")) || ((style == "Scales")))){ scale = ((optionsTypes[optionsTypesIndex])=="Scales") ? true : false; playChord(scale); } else { if (style == "Notes as Numbers"){ for (i in deactivated) { if (deactivated[i] == 0){ foo.push(i); }; }; answer = Math.round((Math.random() * (foo.length - 1))); feedback.text = (("What is " + notesList[answer]) + "?"); } else { if (style == "Interval Numbers"){ for (i in deactivated) { if (deactivated[i] == 0){ foo.push(i); }; }; answer = Math.round((Math.random() * (foo.length - 1))); feedback.text = (("What is " + intervalSet[answer]) + "?"); } else { if (style == "Scales: Number of Flats"){ for (i in deactivated) { if (deactivated[i] == 0){ foo.push(i); }; }; answer = Math.round((Math.random() * (foo.length - 1))); feedback.text = (("How many flats in the " + keyListFlats[answer]) + " major scale?"); } else { if (style == "Scales: Number of Sharps"){ for (i in deactivated) { if (deactivated[i] == 0){ foo.push(i); }; }; answer = Math.round((Math.random() * (foo.length - 1))); feedback.text = (("How many sharps in the " + keyListSharps[answer]) + " major scale?"); } else { if (style == "Scales: Number of Flats and Sharps"){ for (i in deactivated) { if (deactivated[i] == 0){ foo.push(i); }; }; answer = Math.round((Math.random() * (foo.length - 1))); if (keyList[answer] != "C"){ for (k in mapNotes) { if (keySignatureDefinitions[k][0] == keyList[answer]){ break; }; }; } else { k = 0; }; feedback.text = (keySignatureDefinitions[k][1]) ? (("Which scale has " + keySignatureDefinitions[k][2]) + " flats?") : (("Which scale has " + keySignatureDefinitions[k][2]) + " sharps"); } else { if (style == "Identify Scales: Flats"){ optKey = rand(9, 15); answerText = keySignature[optKey]; redrawStaff(); } else { if (style == "Identify Scales: Sharps"){ optKey = rand(1, 8); if (optKey == 1){ answerText = "C"; } else { answerText = keySignature[optKey]; }; redrawStaff(); } else { if (style == "Identify All Scales"){ optKey = rand(1, 14); if (optKey == 1){ answerText = "C"; } else { answerText = keySignature[optKey]; }; redrawStaff(); } else { if (style == "Identify Notes on Treble Clef"){ answer = rand(12, notesAvailable); addNote((answerText = noteNames[answer])); answerText = answerText.replace(/[0-9]/, ""); } else { if (style == "Identify Notes on Bass Clef"){ answerText = mapNotes[((mapNotes.length - 1) - rand(0, 11))][0]; if (rand(0, 1) == 0){ answerText = (answerText + "#"); }; addNote(answerText); answer = noteNames.indexOf(answerText); answerText = answerText.replace(/[0-9]/, ""); } else { if (style == "Identify All Notes"){ answer = rand(0, notesAvailable); addNote((answerText = noteNames[answer])); answerText = answerText.replace(/[0-9]/, ""); } else { if (style == "Identify Notes on Piano"){ addDot((answer = rand(0, (notesAvailable - 6))), "green", new greendot()); } else { if (style == "Sight Singing"){ playSong(); for (k in backupSequence) { if (k == 0){ } else { addNote(backupSequence[k]); addDot(backupSequence[k], "yellow", new yellowDot()); }; }; descriptiveNameHere = absoluteToRelativeTonic(clone(backupSequence)); for (i in descriptiveNameHere) { if (i == 0){ feedback.text = "Relative: Tonic, "; } else { feedback.appendText((intervalName(descriptiveNameHere[i]) + ", ")); }; }; feedback.text = feedback.text.substr(0, -2); descriptiveNameHere = absoluteToRelative(clone(backupSequence)); feedback.appendText("\n\n"); for (i in descriptiveNameHere) { if (i == 0){ feedback.appendText("Absolute: Root, "); } else { feedback.appendText((intervalName(descriptiveNameHere[i]) + ", ")); }; }; feedback.text = feedback.text.substr(0, -2); drawMenu(); } else { if ((((style == "Interval Math: Note to Interval")) || ((style == "Interval Math: Note to Note")))){ questionType = optselect; if (questionType > 3){ questionType = rand(1, 2); }; startNote = rand(0, 11); interval = rand(1, 11); if (questionType < 2){ answer = (startNote + interval); if (answer > 11){ answer = (answer - 12); }; if (style == "Interval Math: Note to Interval"){ feedback.text = ((("From note '" + notesList[startNote]) + "' move up ") + intervalSet[(interval - 1)]); } else { feedback.text = ((("From note '" + notesList[startNote]) + "' up to ") + notesList[answer]); }; } else { if (questionType == 2){ answer = (startNote - interval); if (answer < 0){ answer = (answer + 12); }; if (style == "Interval Math: Note to Interval"){ feedback.text = ((("From note '" + notesList[startNote]) + "' move down ") + intervalSet[(interval - 1)]); } else { feedback.text = ((("From note '" + notesList[startNote]) + "' down to ") + notesList[answer]); }; }; }; if (style == "Interval Math: Note to Interval"){ answerText = notesList[answer]; } else { answerText = intervalSet[(interval - 1)]; }; } else { if (style == "Note Comparison"){ optselectBackup = optselect; optselect = 4; gp(); if (rand(0, 3) == 3){ playSequence(new Array(num, 0), new Array()); answerText = "Equal"; optselect = optselectBackup; return; }; mq(); if (questionType == 1){ answerText = "Higher"; } else { answerText = "Lower"; }; optselect = optselectBackup; } else { if (style == "Note Comparison: Tuning"){ optselectBackup = optselect; optselect = 4; gp(); if (rand(0, 3) == 3){ playSequence(new Array(num, 0), new Array(16, 2)); asdf = new (noteIds[num]); asdf.transf = new SoundTransform(vol, 0); asdf.playsnd(0.8); intervalId = setTimeout(function (){ var _local1:* = new (noteIds[num]); _local1.transf = new SoundTransform(vol, 0); _local1.playsnd(0.6); }, 70); answerText = "In Tune"; optselect = optselectBackup; return; }; if (questionType == 1){ secondNote = (num + questionIndex); } else { if (questionType == 2){ secondNote = (num + (questionIndex * -1)); }; }; asdf = new (noteIds[num]); asdf.transf = new SoundTransform(vol, 0); asdf.playsnd(0.8); setTimeout(function (){ var _local1:soundcomplete = new (noteIds[secondNote]); _local1.transf = new SoundTransform(vol, 0); _local1.playsnd(0.6); }, 70); if (questionType == 1){ answerText = "Sharp"; } else { answerText = "Flat"; }; optselect = optselectBackup; } else { if (style == "Perfect Pitch"){ pitch(); } else { if (style == "Piano Memory Game"){ memoryIndex = 0; memoryNotes = new Array(); memoryGame(); } else { if (style == "Speed Math"){ speedMath(); } else { if (style == "Listen Mode"){ listenIntervals(); feedback.text = "You can practice while not actively using the ear trainer with Listen Mode. It plays an interval then the associated song repeatedly based on the timeouts specificed in the options menu(milliseconds). It obeys all options selected."; } else { if (style == "Listen: Random Triad Breakdown"){ triadBreakdown(); } else { if (style == "Listen: Random X Breakdown"){ breakDown(); return; }; if (style == "Listen: Song Mode"){ playSong(); callback = function (){ intervalId = setTimeout(playSong, listenTimeout); }; feedback.text = "Same as song mode but set so you can play along. Set the timeout between plays in options: 'Time btw questions'."; } else { if (style == "Listen: Song Mode Breakdown"){ playSong(); callback = function (){ intervalId = setTimeout(songModeListen, listenAnswerTimeout); }; feedback.text = "Same as song mode listen but breaks repeats the song with the intervals broken down before moving to a new one."; } else { if (style == "Listen: Song Mode Breakdown with Rests"){ playSong(); callback = function (){ intervalId = setTimeout(function (){ songModeListen(true); }, listenAnswerTimeout); }; feedback.text = "Same as song mode listen but breaks repeats the song with the intervals broken down before moving to a new one."; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; } public function prevNoteGen():void{ var _local3:Number; var _local4:*; var _local1:Array = clone(deactivated); var _local2:Array = new Array(); for (_local4 in clone(notesids)) { if (deactivated[_local4] == 0){ _local2.push(notesids[_local4]); }; }; if (_local2.length == 0){ questionIndex = -1; return; }; questionIndex = _local2[Math.round((Math.random() * (_local2.length - 1)))]; num = prevNote; addNote(num); addDot(num, "green", new greendot()); ascF = (rand(0, 1)) ? true : false; _local3 = (ascF) ? questionIndex : (questionIndex * -1); absoluteAnswer = (_local3 + num); if ((((absoluteAnswer >= notesAvailable)) || ((absoluteAnswer < 0)))){ _local3 = (_local3 * -1); }; absoluteAnswer = (num + _local3); trace(prevNote); trace(questionIndex); prevNote = absoluteAnswer; playSequence(new Array(absoluteAnswer, "s"), new Array()); } public function makeDropDown(_arg1, _arg2, _arg3:Array, _arg4, _arg5:Function, _arg6=100, _arg7=""){ var _local8:dropdownx = new dropdownx(); _local8.addsimple(_arg3, _arg1, _arg2); _local8.myComboBox.width = _arg6; _local8.myComboBox.alpha = 100; if (_arg7 != ""){ _local8.myComboBox.name = _arg7; }; _local8.myComboBox.selectedIndex = _arg4; _local8.myComboBox.addEventListener(Event.CHANGE, _arg5); return (_local8); } public function helpMenu(_arg1, _arg2, _arg3, _arg4){ var helpText = _arg1; var x = _arg2; var y = _arg3; var attach = _arg4; return (simpleButton(" ?", x, y, 0xFFFFFF, 15, 17, 3355494, function (_arg1:MouseEvent):void{ var evt = _arg1; makeTick(); if (getChildByName("helpOverlay")){ removeChild(getChildByName("helpOverlay")); }; var helpOverlay:* = new Sprite(); helpOverlay.name = "helpOverlay"; helpOverlay.graphics.beginFill(0); helpOverlay.graphics.drawRoundRect(0, 0, 550, 800, 0, 0); helpOverlay.graphics.endFill(); helpOverlay.graphics.beginFill(34); helpOverlay.graphics.drawRoundRect(70, 70, 400, 400, 10, 10); helpOverlay.graphics.endFill(); helpOverlay.addChild(tff1(helpText, 75, 75, 0xFFFFFF, 390, 600, 12)); helpOverlay.addChild(simpleButton(" Exit Help ", 250, 395, 0xFFFFFF, 64, 17, 0x333333, function (_arg1:MouseEvent):void{ makeTick(); attach.removeChild(attach.getChildByName("helpOverlay")); disablekeys = false; })); Object(getChildByName("overlay")).addChild(helpOverlay); })); } public function buildSongs(_arg1:String){ var _local2:Array; var _local3:RegExp; var _local4:String; var _local5:String; var _local6:String; var _local7:Number; var _local8:Number; var _local10:Array; var _local11:*; _local3 = /./mg; _local2 = _arg1.match(_local3); _local4 = ""; _local5 = ""; _local6 = ""; _local7 = 0; _local8 = 0; var _local9:Number = 0; _local10 = new Array(); _local10.push(new Array()); _local11 = 0; while (_local11 < _local2.length) { if (_local2[_local11] == "|"){ _local8++; } else { if (_local2[_local11] == "@"){ _local9++; _local10[_local7].push(new Array(_local4, strToArray(_local5), strToArray(_local6))); _local4 = ""; _local5 = ""; _local6 = ""; _local8 = 0; } else { if (_local2[_local11] == "/"){ _local10[_local7].push(new Array(_local4, strToArray(_local5), strToArray(_local6))); if (!_local2[(_local11 + 1)]){ break; }; _local10.push(new Array()); _local4 = ""; _local5 = ""; _local6 = ""; _local9 = 0; _local7++; _local8 = 0; } else { if (_local8 == 0){ _local4 = (_local4 + _local2[_local11]); } else { if (_local8 == 1){ _local5 = (_local5 + _local2[_local11]); } else { if (_local8 == 2){ _local6 = (_local6 + _local2[_local11]); }; }; }; }; }; }; _local11++; }; return (_local10); } public function goodJobBro(){ var _local1:Sprite = new Sprite(); if (getChildByName("feedbackBar")){ removeChild(getChildByName("feedbackBar")); }; _local1.name = "feedbackBar"; _local1.graphics.beginFill(0x8800); _local1.graphics.lineStyle(1, 0xEEEEEE); _local1.graphics.moveTo(0, 0); _local1.graphics.lineTo(10, 0); _local1.graphics.lineTo(10, 10); _local1.graphics.lineTo(0, 10); _local1.graphics.lineTo(0, 0); _local1.graphics.endFill(); _local1.x = 172; _local1.y = 354; addChild(_local1); } public function songModeListen(_arg1:Boolean=false){ var rests = _arg1; playSequence(breakDownSong(backupSequence, rests), new Array(), false); callback = function (){ intervalId = setTimeout(playSong, listenTimeout); callback = function (){ intervalId = setTimeout(function (){ songModeListen(rests); }, listenAnswerTimeout); }; }; } public function letgo(_arg1:KeyboardEvent):void{ if (disablekeys){ return; }; if ((((_arg1.keyCode > 49)) && ((_arg1.keyCode < 61)))){ code = (_arg1.keyCode - 48); if (code == 2){ myAnswer = (_arg1.ctrlKey) ? 2 : 1; } else { if (code == 3){ myAnswer = (_arg1.ctrlKey) ? 4 : 3; } else { if (code == 4){ myAnswer = (_arg1.ctrlKey) ? 5 : 5; } else { if (code == 9){ myAnswer = (_arg1.ctrlKey) ? 6 : 6; } else { if (code == 5){ myAnswer = (_arg1.ctrlKey) ? 7 : 7; } else { if (code == 6){ myAnswer = (_arg1.ctrlKey) ? 9 : 8; } else { if (code == 7){ myAnswer = (_arg1.ctrlKey) ? 11 : 10; } else { if (code == 8){ myAnswer = (_arg1.ctrlKey) ? 12 : 12; } else { return; }; }; }; }; }; }; }; }; myAnswer--; evalAnswer(); } else { if ((((((_arg1.keyCode == 39)) || ((_arg1.keyCode == Keyboard.ENTER)))) || ((_arg1.keyCode == Keyboard.SPACE)))){ playNext(); } else { if (_arg1.keyCode == 219){ if (_arg1.ctrlKey){ vol = (vol - 0.1); } else { qspeed = (qspeed - 0.1); }; } else { if (_arg1.keyCode == 221){ if (_arg1.ctrlKey){ vol = (vol + 0.1); } else { qspeed = (qspeed + 0.1); }; } else { if (_arg1.keyCode == 220){ optionsTypesIndex = 3; notes = intervalSet; deactivated = new Array(0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1); startDecentButtons = false; optionsPresetLevels = intervalPresetsBuilt; drawButtons(); drawOptions(); songmodesongs = 5; } else { if (((((_arg1.ctrlKey) || (_arg1.altKey))) && ((((_arg1.keyCode == 100)) || ((_arg1.keyCode == 68)))))){ resetStatistics(); makeTick(); } else { if (_arg1.keyCode == 191){ rep(); } else { if (_arg1.keyCode == 222){ if (optionsTypes[optionsTypesIndex].substr(0, 9) == "Song Mode"){ playSequence(clone(backupSequence), new Array(), false); }; if (!num){ return; }; arr = new Array(num, questionIndex, new Array(num, (num + questionIndex)), 0, (-1 * questionIndex)); speed = new Array(qspeed, qspeed, qspeed, qspeed, qspeed); playSequence(arr, speed); }; }; }; }; }; }; }; }; } public function parseOptions(_arg1:String){ var _local2:Array; var _local3:RegExp; var _local4:Number; var _local5:String; var _local6:String; var _local7:String; var _local8:String; var _local9:String; var _local10:String; var _local11:String; var _local12:String; var _local13:String; var _local14:String; var _local15:*; _local3 = /./mg; _local2 = _arg1.match(_local3); _local4 = 0; _local5 = ""; _local6 = ""; _local7 = ""; _local8 = ""; _local9 = ""; _local10 = ""; _local11 = ""; _local12 = ""; _local13 = ""; _local14 = ""; _local15 = 0; while (_local15 < _local2.length) { if (_local2[_local15] == "|"){ _local4++; } else { if (_local4 == 0){ _local5 = (_local5 + _local2[_local15]); } else { if (_local4 == 1){ _local6 = (_local6 + _local2[_local15]); } else { if (_local4 == 2){ _local7 = (_local7 + _local2[_local15]); } else { if (_local4 == 3){ _local8 = (_local8 + _local2[_local15]); } else { if (_local4 == 4){ _local9 = (_local9 + _local2[_local15]); } else { if (_local4 == 5){ _local10 = (_local10 + _local2[_local15]); } else { if (_local4 == 6){ _local11 = (_local11 + _local2[_local15]); } else { if (_local4 == 7){ _local12 = (_local12 + _local2[_local15]); } else { if (_local4 == 8){ _local13 = (_local13 + _local2[_local15]); } else { if (_local4 == 9){ _local14 = (_local14 + _local2[_local15]); }; }; }; }; }; }; }; }; }; }; }; _local15++; }; qspeed = int(_local5); vol = int(_local6); questionType = int(_local7); optselect = int(_local8); optionsHarmonicIndex = int(_local9); optionsDescIndex = int(_local10); deactivated = strToArray(_local11); ascselected = strToArray(_local12); dscselected = strToArray(_local13); optionsFeedbackIndex = int(_local14); } function frame1(){ stage.addEventListener(KeyboardEvent.KEY_UP, letgo); tf = new TextField(); num = 17; snd = new soundcomplete(); snd1 = new soundcomplete(); tune = new soundcomplete(); myBox = new dropdownx(); questionIndex = -1; num3 = 0; numback = 0; replayback = -1; sw = false; code = 0; disablekeys = false; replay = false; missed = false; countedCorrectAlready = false; smMissed = false; missedback = false; missedback1 = 0; answerText = ""; firstMiss = -1; teh = new buttonpl0x(); noh = new sidepl0x(); splashselect = 0; splashflag = 0; listen2 = new Array(0); songmodesongs = 4; songmodelast = 0; qspeed = 1; vol = 1; questionType = 0; optselect = 1; optionsTypesIndex = 0; prevOptionsTypesIndex = 1; lastIntervalIndex = 1; optionsHarmonicIndex = 0; optionsDescIndex = 0; optionsFeedbackIndex = 0; optionsAnchorIndex = 0; optionsInstrumentIndex = 0; pianototal = 0; fmt = new TextFormat(); fmt.size = 16; fmt.bold = true; fmt.color = 0; fmt.align = "left"; total = 0; skipped = -1; totalmisses = 0; totalcorrect = 0; totalreplays = 0; totaltiming = 0; streak = 0; topstreak = 0; ascmissesTotal = 0; descmissesTotal = 0; pianoflag = false; optstats = -1; intervalId = 0; listenTimeout = 2000; listenAnswerTimeout = 3500; repeatTimeout = 0; relative = true; ascF = true; singleMode = false; programStarted = new Date(); stopLoop = true; callback = doNothing; font = new arial(); arl = new TextFormat(); arl.font = font.fontName; arl.size = 16; timing = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); streaks = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); topstreaks = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); replays = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); questions = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); correct = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); misses = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); ascmisses = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); descmisses = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); pianocorrect = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); skippedlist = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); incorrect = new Array(new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); pitchCorrect = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); pitchIncorrect = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); pitchQuestions = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); pitchSemitonesOff = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); pitchReplays = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); pitchTiming = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); pitchTotalTiming = 0; pitchLastPlayTime = 0; pitchTotalReplays = 0; pitchTotalCorrect = 0; pitchStreaks = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); pitchTopStreaks = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); pitchStreak = 0; pitchTopStreak = 0; pitchTotalIncorrect = 0; pitchTotal = 0; pitchTotalSemitonesOff = 0; pitchConfused = new Array(new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); pitchMissedFlag = false; pitchAnsweredFlag = false; ascselected = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); dscselected = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); properIntervalSet = new Array("minor Second", "Major Second", "minor Third", "Major Third", "Perfect Fourth", "Tritone", "Perfect Fifth", "minor Sixth", "Major Sixth", "minor Seventh", "Major Seventh", "Octave"); intervalSet = new Array("m2", "M2", "m3", "M3", "p4", "Tri", "p5", "m6", "M6", "m7", "M7", "8"); intervalsDeactived = new Array(1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1); intervalsCompareDeactived = new Array(0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); intervalsSightSingingDeactived = new Array(0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1); notesids = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); notes = intervalSet; deactivated = intervalsDeactived; startDecentButtons = false; noob = false; optionsTypes = new Array("Intervals: Song Buttons", "Intervals", "Intervals: Solfege Buttons", "Song Mode", "Chords", "Scales", "Note Comparison", "Note Comparison: Tuning", "Previous Note Reference", "Sight Singing", "Perfect Pitch", "Song Mode Single", "Listen Mode", "Listen: Random Triad Breakdown", "Listen: Random X Breakdown", "Listen: Song Mode", "Listen: Song Mode Breakdown", "Listen: Song Mode Breakdown with Rests", "Listen: Sing Intervals", "Identify Notes on Treble Clef", "Identify Notes on Bass Clef", "Identify All Notes", "Identify Notes on Piano", "Scales: Number of Flats", "Scales: Number of Sharps", "Scales: Number of Flats and Sharps", "Identify Scales: Flats", "Identify Scales: Sharps", "Identify All Scales", "Piano Memory Game", "Notes as Numbers", "Interval Numbers", "Interval Math: Note to Interval", "Interval Math: Note to Note", "Speed Math"); optKey = 0; keySignature = new Array("Key of C", "C, Default Flats", "G", "D", "A", "E", "B", "F#", "C#", "F", "Bb", "Eb", "Ab", "Db", "Gb", "Cb"); keySignatureDefinitions = new Array(new Array("Key of C", false, 0), new Array("C, Default Flats", true, 0), new Array("G", false, 1), new Array("D", false, 2), new Array("A", false, 3), new Array("E", false, 4), new Array("B", false, 5), new Array("F#", false, 6), new Array("C#", false, 7), new Array("F", true, 1), new Array("Bb", true, 2), new Array("Eb", true, 3), new Array("Ab", true, 4), new Array("Db", true, 5), new Array("Gb", true, 6), new Array("Cb", true, 7)); optionsChords = new Array("Major vs Minor", "Triads", "7th Chords", "Unaltered", "Altered"); optionsPitch = new Array("a", "a#", "b", "c", "c#", "d", "d#", "e", "f", "f#", "g", "g#"); intervalPresets = new Array(new Array("Newcomer", new Array(5, 7)), new Array("Beginner", new Array(4, 5, 7)), new Array("Introductory", new Array(4, 5, 7, 12)), new Array("Novice", new Array(10, 11, 3)), new Array("Casual", new Array(3, 4)), new Array("Tricky", new Array(1, 2)), new Array("Serious", new Array(8, 9, 7)), new Array("Advanced", new Array(8, 10, 6)), new Array("Skilled", new Array(8, 9, 7, 12, 5)), new Array("Nightmare", new Array(1, 2, 10, 11, 6, 8)), new Array("Master", new Array(2, 3, 4, 5, 6, 7, 9, 11, 12)), new Array("Play Songs by Ear", new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12))); intervalPresetsBuilt = new Array(); intervalPresetsBuiltSettings = new Array(); for (k in intervalPresets) { z = 1; while (z <= 8) { intervalPresetsBuilt.push(((intervalPresets[k][0] + ": Level ") + z)); if (z == 8){ z = 9; }; if (z > 5){ intervalPresetsBuiltSettings.push(new Array(intervalPresets[k][1], (z - 5), true)); } else { intervalPresetsBuiltSettings.push(new Array(intervalPresets[k][1], z, false)); }; z++; }; }; optLevelPresets = 0; optionsPresetLevels = intervalPresetsBuilt; optionsProgressions2 = new Array("V,I", "IV,I", "IVm,I", "VIm,I", "bVI,I", "VIII,I", "IIIm,I", "bVII,I", "V7,I", "bII7,I", "VIIdIm7,I", "IdmIn7,I", "III,I", "V,Im", "IV,Im", "IVm,Im", "bVI,Im", "VIII,Im", "bVII,Im", "VIIdIm7,Im", "bIImaj7,Imaj7"); optionsProgressions2Deactivated = createDeactivated(optionsProgressions2); optionsProgressions3 = new Array("IV,IVm,I", "bVII,IV,I", "bVI,bVII,I", "IV,V,I", "V,IV,I", "IIm7,V7,Imaj7", "IIm7(b5),V7(b9),Imaj7", "IIm7(b5),V7(b9),Im7", "IIm7(b5),bII7(b9),Im7", "IIm7,bIImaj7,Imaj7", "I,IdIm7,I"); optionsProgressions3Deactivated = createDeactivated(optionsProgressions3); optionsProgressions4 = new Array("I,IV,V,I", "I,IVm,V,I", "I,VIm,IIm,V7", "Imaj7,V17,II7,V7", "Imaj7,bIII7,bVI7,bII7", "Imaj7,bIIImaj7,bVImaj7,bIImaj7", "Im7,VIm7(b5),IIm7(b5),V7(b9)", "IIm7,VI7,IIm7,V7", "VIm7,II7,V7,I", "I 13,VI 13,IV 13,II 13", "IIm7,V7,IIIm7,VI7", "VI7(#9),II 13,V7(#9),I 13"); optionsProgressions4Deactivated = createDeactivated(optionsProgressions4); optionsCadence = new Array("I IV I ", "I V I", "I IV V I", "I II V I ", "I VI II V ", "I VI IV V", "I III IV V"); optionsCadenceDeactivated = createDeactivated(optionsCadence); numbersList = new Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"); numbersListDeactivated = createDeactivated(numbersList); notesList = new Array("a", "a#", "b", "c", "c#", "d", "d#", "e", "f", "f#", "g", "g#"); notesListDeactivated = createDeactivated(notesList); keyList = new Array("C", "G", "D", "A", "E", "B", "F#", "C#", "F", "Bb", "Eb", "Ab", "Db", "Gb", "Cb"); keyListDeactivated = createDeactivated(keyList); keyListSharps = new Array("C", "G", "D", "A", "E", "B", "F#", "C#"); keyListSharpsDeactivated = createDeactivated(keyListSharps); keyListFlats = new Array("C", "F", "Bb", "Eb", "Ab", "Db", "Gb", "Cb"); keyListFlatsDeactivated = createDeactivated(keyListFlats); seven = new Array("0", "1", "2", "3", "4", "5", "6", "7"); sevenDeactivated = createDeactivated(seven); optionsCounterPoint = new Array("Parallel", "Similar", "Incorrect Parallel", "Contrary", "Oblique", "Stationary"); optionsCounterPointDeactivated = createDeactivated(optionsCounterPoint); optionsNoteLocation = new Array("ra", "re", "me", "mi", "fa", "fi", "so", "le", "la", "te", "ti", "do(8va)"); optionsNoteLocationDesc = new Array("ti", "te", "la", "le", "so", "fi", "fa", "mi", "me", "re", "ra", "do(8va)"); optionsNoteLocationDeactivated = createDeactivated(optionsNoteLocation); simpleTest = new Array("Higher", "Lower", "The Same"); optionsChordsGoodEar = new Array("Maj7", "Maj7#11", "7", "m7", "m7b5", "7sus4", "6", "-maj7", "dim7", "-6", "m79", "m711", "m7911", "79", "713", "7913", "7b9", "7#9", "7b13", "7#11", "7b9b13", "7#9b13", "79b13", "7b913", "7#913"); optionsChordsGoodEarDeactivated = createDeactivated(optionsChordsGoodEar); optionsScalesGoodEar = new Array("Ionian", "Dorian", "Phrygian", "Lydian", "Mixolydian", "Aeolean", "Locrian", "Melodic", "minor", "Dorian", "b9", "Lydian", "augmented", "Lydian", "b7", "Mixolydian", "b13", "Locrian", "9", "Altered", "Harmonic", "minor", "Locrian", "13", "Ionian", "#5", "Dorian", "#11", "Mixolydian", "b9b13", "Lydian", "#9", "Locrian", "b4bb7", "Whole", "tone", "HTWT", "diminished", "WTHT", "diminished", "maj", "pentatonic", "min", "pentatonic"); optionsScalesGoodEarDeactivated = createDeactivated(optionsScalesGoodEar); defaultChords = new Array("Maj", "Min", "Dim", "Aug", "sus2", "sus4", "maj7", "7", "mi7", "mi7(b5)", "dim7", "mimaj7", "maj6", "maj9", "maj6/9", "9", "13", "6", "6/9", "add9", "mi9", "mi11", "mi13", "mi6", "mi6/9", "mimaj9", "mimaj6/9", "sus7", "sus9", "sus13", "sus7(b9)", "sus13(b9)", "7(b5)", "7(#5)", "7(b9)", "7(#9)", "7(#5,#9)", "7(#11)", "9(#11)", "13(#11)", "13(b9)", "maj7(b5)", "maj7(#11)", "maj9(#11)", "maj13(#11)", "mi7(b5)add11", "mi11(b5)"); defaultChordsDeactivated = createDeactivated(defaultChords, 1); defaultChordsDeactivated[0] = (defaultChordsDeactivated[1] = 0); defaultScales = new Array("Ionian", "Aeolian", "Dorian", "Phrygian", "Lydian", "Mixolydian", "Locrian", "H. mi", "Loc. #6", "Ion. #5", "Dor. #4", "Mix. b9,b13", "Lyd. #2", "VII Har. mi", "Mel. mi", "Dor. b2", "Lyd. #5", "Lyd. b7", "Mix. b13", "Loc. #2", "M Pent.", "mi Pent.", "Blues Pent.", "Neutral Pent.", "Altered", "WT", "Dim 1/2", "Dim Whole", "Chromatic", "Blues", "Aug.", "Romanian mi", "Sp. Gypsy", "Diatonic", "Double Harmonic", "8 Tone Sp.", "Enigmatic", "Leading WT", "Lyd. Aug.", "Neap. Maj", "Neap. mi", "Pelog", "Prom.", "Prom. Neap.", "6 Tone Symm.", "Super Loc.", "Lyd. mi", "Lyd. Dim", "9 Tone", "Maj Loc.", "Overtone", "Dim WT", "Pure Minor", "Dom 7", "Aux Dim", "Aux Aug", "Aux Dim Blues"); defaultScalesDeactivated = createDeactivated(defaultScales, 1); defaultScalesDeactivated[0] = (defaultScalesDeactivated[1] = 0); optionsSpeedMath = new Array("+", "-", "*", "/"); optionsSpeedMathDeactivated = createDeactivated(optionsSpeedMath); options = new Array("All", "Ascending", "Descending", "Harmonic", "Asc & Desc", "Random"); optionsHarmonic = new Array("Play Asc on Harmonic", "Play Desc on Harmonic"); optionsDesc = new Array("Play Desc songs on Desc", "Play Asc songs on Desc", "Play Desc Songs on Asc", "Don't Play Songs on Miss"); optionsFeedback = new Array("Show feedback after miss", "Don't display feedback"); optionsAnchor = new Array("Randomize first note.", "Anchor the first note."); optionsInstruments = new Array("Piano", "Guitar", "Sine Waves"); optionsActionCorrect = new Array("Play Associated Song", "Immediately Play New Question", "Play Interval and Associated Song", "Do Nothing", "Play Interval"); optionsActionCorrectIndex = 0; optionsActionWrong = new Array("Play Song of Correct Answer", "Make Click Sound and Repeat Interval", "Play Song of Incorrect Answer", "Do Nothing", "Play Click Sound", "Play Incorrect Interval", "Play incorrect interval then the Correct one", "Repeat Interval and Play Correct Song", "Play Wrong Answer and Play Incorrect Song", "Play Wrong Answer and Play Correct Song"); optionsActionWrongIndex = 0; smCorrect = new Array("Play Current Note When Correct", "Replay song until next question", "Play Interval", "Play next interval", "Play Tick", "Do Nothing"); smWrong = new Array("Replay Interval on Mistake", "Play First Note + Current Note Interval", "Replay Current Note", "Replay Question", "Replay Question + Force Redo", "Play Song", "Replay Until Question + Repeat Interval", "Play Interval + Play Song", "Play Song + Play Interval", "Do Nothing"); smPlay = new Array("Normal Song Mode", "Breakdown Song", "Play Normal Then Broken Down", "Play Broken Down Then Normal"); smRepeat = new Array("Normal Song Mode", "Breakdown Song", "Play Normal Then Broken Down", "Play Broken Down Then Normal"); smBreakDown = new Array("With Rests", "Without Rests"); smPlayIndex = 0; smRepeatIndex = 0; smCorrectIndex = 0; smWrongIndex = 0; smBreakDownIndex = 0; skills = new Array("Newcomer", "Beginner", "Novice", "Casual", "Intermediate", "Advanced", "Skilled", "Genius", "Master", "Play by Ear"); chordDefinitions = new Array(new Array("Maj", new Array(0, 4, 3)), new Array("Min", new Array(0, 3, 4)), new Array("Dim", new Array(0, 3, 3)), new Array("Aug", new Array(0, 4, 4)), new Array("sus2", new Array(0, 2, 5)), new Array("sus4", new Array(0, 5, 2)), new Array("Neap. 6", new Array(0, 3, 5)), new Array("Aug 6 (it)", new Array(0, 4, 6)), new Array("mi7", new Array(0, 3, 4, 3)), new Array("mi7(b5)", new Array(0, 3, 3, 4)), new Array("dim7", new Array(0, 3, 3, 3)), new Array("mimaj7", new Array(0, 3, 4, 4)), new Array("mi,add6", new Array(0, 3, 4, 2)), new Array("mi6", new Array(0, 3, 4, 2)), new Array("Aug 6 (fr)", new Array(0, 4, 2, 4)), new Array("7(b5)", new Array(0, 4, 2, 4)), new Array("maj7(b5)", new Array(0, 4, 2, 5)), new Array("6", new Array(0, 4, 3, 2)), new Array("add6", new Array(0, 4, 3, 2)), new Array("Aug 6 (de)", new Array(0, 4, 3, 3)), new Array("7", new Array(0, 4, 3, 3)), new Array("maj7", new Array(0, 4, 3, 4)), new Array("add9", new Array(0, 4, 3, 7)), new Array("7(#5)", new Array(0, 4, 4, 2)), new Array("sus4,7", new Array(0, 5, 2, 3)), new Array("sus7", new Array(0, 5, 2, 3)), new Array("9sus4", new Array(0, 2, 3, 2, 3)), new Array("maj9sus4", new Array(0, 2, 3, 2, 4)), new Array("mi9", new Array(0, 3, 4, 3, 4)), new Array("mi9/6", new Array(0, 3, 4, 2, 5)), new Array("mi6/9", new Array(0, 3, 4, 2, 5)), new Array("mi,add6/9", new Array(0, 3, 4, 2, 5)), new Array("mi,maj9", new Array(0, 3, 4, 4, 3)), new Array("mimaj9", new Array(0, 3, 4, 4, 3)), new Array("maj6", new Array(0, 4, 3, 2, 2)), new Array("maj7,add6", new Array(0, 4, 3, 2, 3)), new Array("6/9", new Array(0, 4, 3, 2, 5)), new Array("7(b9)", new Array(0, 4, 3, 3, 3)), new Array("9", new Array(0, 4, 3, 3, 4)), new Array("7(#9)", new Array(0, 4, 3, 3, 5)), new Array("maj7(#11)", new Array(0, 4, 3, 4, 7)), new Array("7(#11)", new Array(0, 4, 3, 3, 8)), new Array("maj9", new Array(0, 4, 3, 4, 3)), new Array("7(#5,#9)", new Array(0, 4, 4, 2, 5)), new Array("sus9", new Array(0, 5, 2, 3, 4)), new Array("mi7(b5)add11", new Array(0, 3, 3, 4, 7)), new Array("mi11(b5)", new Array(0, 3, 3, 4, 4, 3)), new Array("mi,maj9,add6", new Array(0, 3, 4, 2, 2, 3)), new Array("mimaj6/9", new Array(0, 3, 4, 2, 2, 3)), new Array("mi11", new Array(0, 3, 4, 3, 4, 3)), new Array("maj6/9", new Array(0, 4, 3, 2, 2, 3)), new Array("9(#11)", new Array(0, 4, 3, 3, 4, 4)), new Array("13", new Array(0, 4, 3, 3, 4, 7)), new Array("maj9,add6", new Array(0, 4, 3, 2, 2, 3)), new Array("mi13", new Array(0, 3, 4, 3, 4, 3, 4)), new Array("sus13", new Array(0, 7, 3, 4, 3, 4)), new Array("13(b9)", new Array(0, 4, 3, 3, 3, 8)), new Array("maj7(#5)", new Array(0, 4, 3, 4, 7)), new Array("13(#11)", new Array(0, 4, 3, 3, 4, 4, 3)), new Array("13(#11)", new Array(0, 4, 3, 3, 4, 4, 3)), new Array("sus13(b9)", new Array(0, 7, 3, 3, 4, 4)), new Array("sus7(b9)", new Array(0, 5, 2, 3, 3)), new Array("maj9(#11)", new Array(0, 4, 3, 4, 3, 4)), new Array("maj13(#11)", new Array(0, 4, 3, 4, 3, 4, 3)), new Array("maj7sus4", new Array(0, 5, 2, 4)), new Array("7sus4", new Array(0, 5, 2, 3)), new Array("6sus4", new Array(0, 5, 2, 2)), new Array("9(b13)", new Array(0, 2, 2, 3, 1, 2))); scaleDefinitions = new Array(new Array("Ionian", new Array(0, 2, 2, 1, 2, 2, 2, 1)), new Array("Aeolian", new Array(0, 2, 1, 2, 2, 1, 2, 2)), new Array("Dorian", new Array(0, 2, 1, 2, 2, 2, 1, 2)), new Array("Phrygian", new Array(0, 1, 2, 2, 2, 1, 2, 2)), new Array("Lydian", new Array(0, 2, 2, 2, 1, 2, 2, 1)), new Array("Mixolydian", new Array(0, 2, 2, 1, 2, 2, 1, 2)), new Array("Locrian", new Array(0, 1, 2, 2, 1, 2, 2, 2)), new Array("H. mi", new Array(0, 2, 1, 2, 2, 1, 3, 1)), new Array("Loc. #6", new Array(0, 1, 2, 2, 1, 3, 1, 2)), new Array("Ion. #5", new Array(0, 2, 2, 1, 3, 1, 2, 1)), new Array("Dor. #4", new Array(0, 2, 1, 3, 1, 2, 1, 2)), new Array("Mix. b9,b13", new Array(0, 1, 3, 1, 2, 1, 2, 2)), new Array("Lyd. #2", new Array(0, 3, 1, 2, 1, 2, 2, 1)), new Array("VII Har. mi", new Array(0, 1, 2, 1, 2, 2, 1, 3)), new Array("Mel. mi", new Array(0, 2, 1, 2, 2, 2, 2, 1)), new Array("Dor. b2", new Array(0, 1, 2, 2, 2, 2, 1, 2)), new Array("Lyd. #5", new Array(0, 2, 2, 2, 2, 1, 2, 1)), new Array("Lyd. b7", new Array(0, 2, 2, 2, 2, 2, 1, 2)), new Array("Mix. b13", new Array(0, 2, 2, 1, 2, 1, 2, 2)), new Array("Loc. #2", new Array(0, 2, 1, 2, 1, 2, 2, 2)), new Array("M Pent.", new Array(0, 2, 2, 3, 2, 3)), new Array("mi Pent.", new Array(0, 3, 2, 2, 3, 2)), new Array("Blues Pent.", new Array(0, 3, 2, 1, 1, 3)), new Array("Neutral Pent.", new Array(0, 2, 3, 2, 3)), new Array("Altered", new Array(0, 1, 2, 1, 2, 2, 2, 2)), new Array("WT", new Array(0, 2, 2, 2, 2, 2, 2)), new Array("Dim 1/2", new Array(0, 1, 2, 1, 2, 1, 2, 1, 2)), new Array("Dim Whole", new Array(0, 2, 1, 2, 1, 2, 1, 2, 1)), new Array("Chromatic", new Array(0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)), new Array("Blues", new Array(0, 3, 2, 1, 1, 3, 2)), new Array("Aug.", new Array(0, 3, 1, 3, 1, 3)), new Array("Romanian mi", new Array(0, 2, 1, 3, 1, 2, 1, 2)), new Array("Sp. Gypsy", new Array(0, 1, 3, 1, 2, 1, 2, 2)), new Array("Diatonic", new Array(0, 2, 2, 3, 2, 3)), new Array("Double Harmonic", new Array(0, 1, 3, 1, 2, 1, 3, 1)), new Array("8 Tone Sp.", new Array(0, 1, 2, 1, 1, 1, 2, 2, 2)), new Array("Enigmatic", new Array(0, 1, 3, 2, 2, 2, 1, 1)), new Array("Leading WT", new Array(0, 2, 2, 2, 2, 1, 1)), new Array("Lyd. Aug.", new Array(0, 2, 2, 2, 2, 1, 2, 1)), new Array("Neap. Maj", new Array(0, 1, 2, 2, 2, 2, 2, 1)), new Array("Neap. mi", new Array(0, 1, 2, 2, 2, 1, 2, 2)), new Array("Pelog", new Array(0, 1, 2, 3, 4, 1)), new Array("Prom.", new Array(0, 2, 2, 2, 3, 1, 2)), new Array("Prom. Neap.", new Array(0, 1, 3, 2, 3, 1, 2)), new Array("6 Tone Symm.", new Array(0, 1, 3, 1, 3, 1, 3)), new Array("Super Loc.", new Array(0, 1, 2, 1, 2, 2, 2, 2)), new Array("Lyd. mi", new Array(0, 2, 2, 2, 1, 1, 2, 2)), new Array("Lyd. Dim", new Array(0, 2, 1, 3, 1, 1, 2, 2)), new Array("9 Tone", new Array(0, 2, 1, 1, 2, 1, 1, 1, 2, 1)), new Array("Maj Loc.", new Array(0, 2, 2, 1, 1, 2, 2, 2)), new Array("Overtone", new Array(0, 2, 2, 2, 1, 2, 1, 2)), new Array("Dim WT", new Array(0, 1, 2, 1, 2, 2, 2, 2)), new Array("Pure Minor", new Array(0, 2, 1, 2, 2, 1, 2, 2)), new Array("Dom 7", new Array(0, 2, 3, 2, 2, 1, 2)), new Array("Aux Dim", new Array(0, 2, 1, 2, 1, 2, 1, 2, 1)), new Array("Aux Aug", new Array(0, 2, 2, 2, 2, 2, 2)), new Array("Aux Dim Blues", new Array(0, 1, 2, 1, 2, 1, 2, 1, 2))); asc = new Array(new Array(new Array("White Christmas", new Array(0, 1, -1, -1, 1, 1, 1, 1), new Array(1, 2, 2, 2, 2, 1, 2, 2)), new Array("Pink Panther", new Array(0, 1, 2, 1, -4, 1, 2, 1, 5, -1, -7, 3, 4, -1), new Array(4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2)), new Array("Indiana Jones Theme", new Array(0, 1, 2, 5, -10, 2, 1), new Array(2, 4, 4, 1, 2, 4, 2)), new Array("Beauty and the Beast", new Array(0, 1, -3, 2, -4), new Array(3, 3, 3, 3, 3)), new Array("Aladdin: A whole new world", new Array(0, 1, 4, -2, -3, 1, 4, -2, -5, 3, -1, 0), new Array(3, 2, 2, 1, 3, 2, 2, 2, 4, 2, 3, 2)), new Array("Zippidy Doo Dah", new Array(0, 0, 1, 2, 5, -3, -4, 4, -2), new Array(2, 3, 4, 2, 2, 2, 4, 2, 2)), new Array("Csardas", new Array(0, 1, -1, 12, -4, 0, 2, -2, -1, 6), new Array(2, 2, 2, 1, 2, 2, 2, 1, 3, 1)), new Array("Chromatic", new Array(0, 1, 1, 1, 1, 1, 1, 1), new Array(2, 2, 2, 2, 2, 2, 2, 2))), new Array(new Array("Silent Night", new Array(0, 2, -2, -3), new Array(1, 2, 2, 1)), new Array("FF7 Theme", new Array(0, 2, 2, 7, -2), new Array(1, 2, 2, 1, 2)), new Array("Frere Jacques", new Array(0, 2, 2, -4, 0, 2, 2, -4, 4, 1, 2), new Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)), new Array("Batman", new Array(0, 2, 1, 5, -1), new Array(2, 2, 2, 1, 2)), new Array("Little Mermaid: Under the sea", new Array(0, 3, 5, 4, 0, -4, 2, 3, -1, -4), new Array(4, 4, 4, 2, 2, 4, 2, 2, 2, 2)), new Array("Disney: Bear necessities", new Array(0, 2, 7, -2, 2, -2, -2, 0, 2, -2, 2, -2, 2, -2, -3), new Array(2, 3, 1, 3, 3, 5, 2, 3, 4, 4, 4, 4, 4, 5, 2)), new Array("Spoon full of sugar makes the...", new Array(0, 2, 2, 0, -2, 2, 6, -1, -2, 2, 0, 0, -9, 9), new Array(3, 3, 2, 2, 4, 3, 4, 4, 4, 6, 6, 2, 2, 2)), new Array("Little Mermaid: Part of your world", new Array(0, 2, 1, 0, -1, 1, 2, 0), new Array(4, 4, 2, 1, 4, 4, 2, 1)), new Array("Happy Birthday to You", new Array(0, 0, 2, -2, 5, -1), new Array(4, 4, 2, 2, 2, 2))), new Array(new Array("Greensleeves", new Array(0, 3, 2, 2, 1, -1, -2, -3, -4), new Array(4, 2, 4, 4, 4, 4, 2, 4, 4)), new Array("007", new Array(0, 3, 7, -1, -6, 3, 1), new Array(4, 2, 4, 2, 4, 4, 2)), new Array("Cradle Song", new Array(0, 0, 3, -3, 0, 3, -3, 3, 5, -1, -2, 0, -2), new Array(4, 4, 1, 4, 4, 1, 4, 4, 2, 2, 2, 2, 2)), new Array("Low Rider", new Array(0, 0, 3, 2, 2, -7, -2, 2, -2, 2), new Array(4, 2, 2, 2, 2, 2, 4, 4, 4, 3)), new Array("Nightmare before Christmas", new Array(0, 3, 2, 2, -7, 3, -3, 1), new Array(2, 2, 2, 2, 2, 2, 2, 2)), new Array("Elvis: To dream the impossible dream", new Array(0, 3, 0, 0, 0, -2, -1, 3), new Array(2, 1, 4, 4, 4, 4, 4, 1)), new Array("Pocahontas: Paint with all the colors of the wind", new Array(0, 3, 2, 2, 0, -2, 0, -2, -3, 3, 0), new Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)), new Array("Beauty and the Beast: Be our Guest", new Array(0, 3, 5, -8, 3, 4, -7, 3, 2, -2, -3, 5, -2), new Array(4, 4, 2, 4, 4, 2, 4, 4, 4, 4, 4, 4, 2)), new Array("Lion King: Hakuna Matata, what a wonderful phrase", new Array(0, 3, -1, 1, -1, -2, 0, 0, 3, 0, 0, -3), new Array(3, 2, 4, 4, 3, 1, 3, 3, 3, 3, 3, 2)), new Array("Xenogears: Valley Where wind is born", new Array(0, 3, -3, -4, 2, 2, 1, 0, -1), new Array(1, 1, 2, 2, 4, 2, 2, 2, 2))), new Array(new Array("Saints go marching", new Array(0, 4, 1, 2, -7, 4, 1, 2, -3, -4, 4, -2), new Array(4, 4, 4, 2, 4, 4, 4, 2, 2, 2, 2, 2)), new Array("Vivaldi - Spring", new Array(0, 4, 0, 0, -2, -2, 7), new Array(3, 3, 3, 3, 4, 4, 2)), new Array("Cat Stevens: Morning has Broken", new Array(0, 4, 3, 5, 2, -3, -2, -2, 2, -2), new Array(2, 2, 2, 1, 1, 2, 2, 2, 1, 1))), new Array(new Array("Here comes the bride", new Array(0, 5, 0, 0, -5, 7, -3, 1), new Array(2, 4, 4, 2, 2, 4, 4, 2)), new Array("Harry Potter Theme", new Array(0, 5, 3, -1, -2, 7, -2, -3), new Array(4, 2, 6, 3, 2, 2, 1, 1)), new Array("La Marseilaise", new Array(0, 0, 0, 5, 0, 2, 0, 5, -3, -4), new Array(6, 6, 6, 2, 2, 2, 2, 2, 4, 2)), new Array("O Tannenbaum", new Array(0, 5, 0, 0, 2, 2, 0, 0), new Array(2, 3, 4, 2, 2, 3, 4, 4)), new Array("Tarzan: You'll be in my heart", new Array(0, 5, 0, -5, -2, 2, 0, 7, 0, -9, -1), new Array(2, 3, 2, 2, 1, 2, 2, 3, 2, 2, 1)), new Array("Pop goes the weasle", new Array(0, 5, 0, 2, 0, 2, 3, -3, -4), new Array(4, 2, 4, 2, 4, 4, 4, 4, 4, 2)), new Array("Amazing Grace", new Array(0, 5, 4, -4, 4, -2, -2, -3, -2), new Array(4, 2, 4, 4, 2, 4, 2, 4, 4, 2)), new Array("Loituma", new Array(0, 5, 0, 2, 1, -3, 0, 0, 3, -1, -4, 0, 4, 1, -3, 0), new Array(3, 3, 2, 4, 3, 3, 3, 4, 4, 3, 2, 2, 3, 3, 3, 3)), new Array("Las Mananitas", new Array(0, 0, 5, 0, -1, 1, 2, 0), new Array(4, 4, 2, 3, 3, 3, 2, 2)), new Array("Snow White: One day my prince will come", new Array(0, 5, -4, 3, -2, 0), new Array(1, 1, 2, 1, 2, 2, 2)), new Array("Hi-ho, it's off to work we go", new Array(0, 5, -1, -2, 3, 2, 2, -2, -2, -1), new Array(2, 1, 2, 1, 2, 2, 4, 2, 2, 2)), new Array("Blue Bells of Scottland", new Array(0, 5, -1, -2, -2, 2, 2, 1, -8, 0, 1, -3, -2), new Array(2, 1, 2, 2, 1, 2, 4, 4, 2, 2, 2, 2, 2, 1)), new Array("Liebesleid", new Array(0, 5, 7, 0, 1, -1, -2, 2, 1), new Array(3, 2, 2, 2, 4, 2, 2, 2, 2)), new Array("Super Mario RPG", new Array(0, 5, 0, 0, -5, 2, 0, -2), new Array(2, 4, 4, 2, 2, 2, 2, 2))), new Array(new Array("West Side Story: Maria", new Array(0, 6, 1, -7, 6, 1, 2, -3, 1, 2, -3, 1), new Array(3, 3, 2, 4, 4, 4, 4, 4, 4, 4, 3, 2)), new Array("Simpsons", new Array(0, 6, 1), new Array(2, 1, 2)), new Array("Megaman 2: Dr. Wily's Castle", new Array(0, 6, -1, -2, -3, 3, -5, 1, 1), new Array(4, 4, 4, 4, 2, 4, 2, 2, 4))), new Array(new Array("Star Wars", new Array(0, 7, -2, -1, -2, 10, -5), new Array(2, 2, 4, 4, 4, 2, 2)), new Array("Twinkle twinkle little star", new Array(0, 0, 7, 0, 2, 0, -2), new Array(2, 2, 2, 2, 2, 2, 2)), new Array("Superman", new Array(0, 0, 7, 0, 2, -2, -2, 2), new Array(2, 4, 2, 4, 4, 4, 3, 2)), new Array("Back to the future", new Array(0, 7, 5, -2, -1, -2, 2, -2, -2, 2), new Array(2, 1, 2, 1, 4, 4, 2, 4, 3, 2)), new Array("Saga Frontier Thema", new Array(0, 7, -2, 2, -5, 1, -5), new Array(4, 2, 4, 4, 4, 4, 2)), new Array("Bach: Little Fugue", new Array(0, 7, -4, -1, -2, 3, -1, -2, -1, 3, -7), new Array(1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2)), new Array("Mary Poppins: Chim Chim Cheree", new Array(0, 7, 0, 0, -7, 7, 0, 0, 0, 1, -1, -2), new Array(2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2)), new Array("Sorcerer's Apprentice (midnight rescue)", new Array(0, 7, -12, 2, 2, 1, 3, -3, 3, -1, -2, -1, 1), new Array(2, 2, 5, 5, 5, 2, 4, 2, 4, 4, 4, 4, 2)), new Array("Zelda 3: ??", new Array(0, 7, -7, 7, 5, -3, 1, -1), new Array(2, 1, 2, 2, 2, 4, 4, 4))), new Array(new Array("Love Story", new Array(0, 8, -8, 8, -8, 1, -1, -2, 0, 0, 9, 0), new Array(4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4)), new Array("1492: Vangelis - conquest of paradise", new Array(0, 8, -3, -1, 1, 2, -3, -4), new Array(4, 2, 2, 3, 4, 3, 4, 2)), new Array("Final Fantasy Tactics", new Array(0, 8, -1, 1, 2, -2, -1, 1, 4, 1, -1, -2, 2, 7, 0, -7, 5), new Array(1, 1, 4, 4, 2, 4, 4, 2, 2, 2, 4, 4, 2, 2, 2, 2, 1))), new Array(new Array("Midnight Clear", new Array(0, 9, -5, 3, -2, -3, -2, 2, -2), new Array(2, 1, 2, 2, 2, 2, 1, 2, 1)), new Array("He's a jolly good fellow", new Array(0, 9, 0, 0, -2, 2, 1, -1), new Array(2, 2, 4, 4, 4, 4, 2, 3)), new Array("My Bonnie Lies over the Ocean", new Array(0, 9, -2, -2, 2, -2, -3, -2, -3), new Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2)), new Array("Verdi's La Traviata: Libiamo ne'lieti calici", new Array(0, 9, -9, 9, 0, -9, 9, 0, -1, 1, 3), new Array(2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1)), new Array("Chopin Nocturne Op. 9-2", new Array(0, 9, -2, 2, -2, -2), new Array(4, 1, 4, 4, 2, 2)), new Array("FF7 Tifa's Theme", new Array(0, 9, -2, 2, -9), new Array(4, 4, 4, 4, 4)), new Array("Super Mario World", new Array(0, 9, 0, 0, -9, 9, 0, 0, -9, 9, 0, 0, 0, 1, -1, -2), new Array(4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 2, 2)), new Array("NBC", new Array(0, 9, -4), new Array(2, 2, 2))), new Array(new Array("Maman les petits bateaux", new Array(0, 10, -1, -2, -2, -8, 3, 5, -1, -4, 2, 2, 3, -2), new Array(4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4)), new Array("Arc Rise Fantasia: bgm01", new Array(0, 10, -1, 3, -2, -1, -4, -1, 1, 2, -7), new Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)), new Array("Final Fantasy XII: Coexistance", new Array(0, 10, -1, -2, 3, -1, -4, -2, 7, -1, -4, 0, 2, 0, -4, 2, -5), new Array(1, 1, 1, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1)), new Array("Mary Poppins: Feed the little Bird", new Array(0, 10, 0, 0, 2, -2, 0, -1, -9, 9), new Array(2, 1, 3, 3, 3, 1, 2, 1, 2, 2)), new Array("Star Trek", new Array(0, 10, -1, -2, -2, -2), new Array(1, 1, 2, 2, 2, 1))), new Array(new Array("Superman", new Array(0, 0, 0, 11, -4, -7, 0, 0, 11, -4, -7, 0, 0, 11, -2, 2, 1), new Array(6, 6, 6, 1, 2, 6, 6, 6, 1, 2, 6, 6, 6, 4, 4, 4, 1)), new Array("Willy Wonka: Imagination", new Array(0, 11, 1, -1, 1, -1, 1, -1, -4), new Array(1, 0, 4, 4, 4, 4, 4, 4, 2)), new Array("Nada Surf: Popular", new Array(0, 0, 11, -11, 0, 11, -14, 2, 0), new Array(4, 4, 2, 4, 4, 3, 4, 4, 2)), new Array("FF7: Vincent theme", new Array(0, 11, -4, 8, -8, 4, 4, -8, 4, 6), new Array(4, 4, 4, 4, 4, 4, 4, 4, 4, 4))), new Array(new Array("Over the Rainbow", new Array(0, 12, -1, -4, 2, 2, 1), new Array(1, 1, 4, 4, 4, 2, 2)), new Array("Let it Snow", new Array(0, 0, 12, 0, -2, -1, -2, -2, -5), new Array(3, 4, 3, 4, 2, 2, 2, 2, 2)), new Array("Singing in the Rain", new Array(0, 12, -3, -2, -2, -3), new Array(1, 1, 4, 4, 4, 2)), new Array("FF2 NES: Boss theme", new Array(0, 12, -1, -5, 1, 2, -2, -1, 1, -3), new Array(2, 2, 1, 4, 4, 2, 4, 4, 4, 1)), new Array("Pinocchio: When you wish upon a star", new Array(0, 12, -2, -1, -3, 1, 7), new Array(2, 2, 2, 2, 2, 2, 2)), new Array("Csardas", new Array(0, 12, -4, 0, 2, -2, -1, 6), new Array(2, 1, 2, 2, 2, 1, 3, 1)), new Array("Bali Ha'i", new Array(0, 12, -1, 0, 0, 1), new Array(4, 4, 1, 4, 4, 2)), new Array("Crono Cross", new Array(0, 12, -9, -3, 3, 4, 1, -1, -2), new Array(1, 1, 1, 2, 2, 1, 2, 2, 1)))); dsc = new Array(new Array(new Array("Fur Elise", new Array(0, -1, 1, -1, 1, -5, 3, -2, -3), new Array(4, 4, 4, 4, 4, 4, 4, 4, 1)), new Array("Sleeping Beauty: Once upon a dream", new Array(0, -1, 1, -3, 2, 1, -3, 2, 3, 2, -3, 1), new Array(2, 2, 2, 4, 4, 4, 4, 2, 4, 2, 4, 2)), new Array("Joy to the World", new Array(0, -1, -2, -2, -2, -1, -2, -2), new Array(2, 2, 4, 1, 4, 2, 2, 2)), new Array("Ravel's Bolero", new Array(0, -1, 1, 2, -2, -1, -2, 3, 0, -3, 3), new Array(2, 4, 4, 4, 4, 4, 4, 2, 3, 4, 2)), new Array("Carol of the Bells", new Array(0, -1, 1, -3, 3, -1, 1, -3), new Array(2, 4, 4, 2, 2, 4, 4, 2)), new Array("Animaniacs Theme", new Array(0, -1, 1, 2, -2, -1, 1, -3), new Array(3, 3, 3, 2, 5, 2, 4, 2)), new Array("Little Mermaid: Part of your world", new Array(0, -1, -4, -5, 10, -1, -4, -5, 0, 5, -1, 1), new Array(2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1)), new Array("L'amour est enfant de bohème", new Array(0, -1, -1, 0, 0, -1, -1, -1, 0), new Array(2, 3, 4, 2, 3, 2, 2, 4, 2))), new Array(new Array("First Noel", new Array(0, -2, -2, 2, 2, 1, 2, 5, -1, -2, 0, 0, -2), new Array(4, 4, 1, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2)), new Array("Mary lamb", new Array(0, -2, -2, 2, 2, 0, 0), new Array(2, 2, 2, 2, 2, 2, 2)), new Array("Aladdin: I can show you the world", new Array(0, -2, 3, -1, -4, -5), new Array(2, 4, 2, 4, 2, 2)), new Array("Beatles: Yesterday", new Array(0, -2, 0, 0, 2, 2, 1, 2, 1, -1, -2, 0), new Array(2, 3, 1, 3, 3, 3, 3, 3, 3, 2, 3, 2))), new Array(new Array("Spangled Banner", new Array(0, -3, -4, 4, 3, 5), new Array(2, 2, 1, 1, 1, 1)), new Array("Chrono Cross", new Array(0, -3, 3, -2, -3, 3, -1, -4, 2), new Array(2, 2, 4, 2, 2, 4, 2, 2, 2)), new Array("Beatles: Hey Jude", new Array(0, -3, 0, 3, 2, -7), new Array(1, 1, 2, 2, 2, 1)), new Array("Lion King: Can you feel the love tonight", new Array(0, -3, -2, 5, -3, -4, -3), new Array(1, 2, 1, 2, 1, 2, 1)), new Array("Frosty the Snowman", new Array(0, -3, 1, 2, 5), new Array(2, 2, 4, 4, 2))), new Array(new Array("Swing Low, Sweet Chariot", new Array(0, -4, 4, -4, 0, -3, -2), new Array(2, 1, 2, 2, 4, 4, 4)), new Array("Beethoven: Symphony No. 5", new Array(0, 0, 0, -4, 2, 0, 0, -3), new Array(6, 6, 6, 1, 6, 6, 6, 1)), new Array("Take Me On", new Array(0, 0, -4, -3, 0, 5, 0, 0, 4, 0, 1, 2), new Array(4, 4, 4, 2, 2, 2, 2, 4, 4, 4, 4)), new Array("Guy Beart: L'eau vive", new Array(0, -4, 4, -4, 4, -4, 2), new Array(2, 4, 2, 4, 2, 4, 2))), new Array(new Array("Adeste Fideles", new Array(0, -5, 5, 2, -7, 9, -2, 2, 1, -1, -2), new Array(1, 2, 2, 1, 1, 2, 2, 2, 2, 1, 2)), new Array("Mozart: Eine kleine Nachtmusik", new Array(0, -5, 5, -5, 5, -5, 5, 4, 3), new Array(1, 4, 1, 4, 4, 4, 4, 4, 2)), new Array("Zelda", new Array(0, -5, 5, 0, 2, 2, 1, 2), new Array(1, 1, 2, 4, 4, 4, 4, 2)), new Array("Popipo (friggin 4chan)", new Array(0, -5, 5, -5, 5, 2, 5, -5), new Array(4, 8, 4, 8, 4, 4, 4, 4)), new Array("FF8: Blue Fields", new Array(0, -5, 0, 2, -2, -3, 1), new Array(1, 1, 2, 2, 1, 2, 1))), new Array(new Array("Blue Seven", new Array(0, -6, 0, -4, 1, 2, 1, -4, 0), new Array(2, 1, 3, 4, 3, 4, 3, 2, 2)), new Array("Generic", new Array(0, -6, -1, 1, 6, -6, -1, 1), new Array(2, 2, 2, 2, 2, 2, 2, 2))), new Array(new Array("FlintStones", new Array(0, -7, 11, -2, -2, -7), new Array(2, 1, 2, 4, 2, 1)), new Array("Zelda: Song of time", new Array(0, -7, 3, 4, -7, 3, 4, 3, -1, -4, -2, 2, 2, -7), new Array(2, 1, 2, 2, 1, 2, 4, 4, 2, 2, 4, 4, 2, 1)), new Array("Steps To Heaven", new Array(0, 0, 0, 0, -7, 4, -2, -2, 0, 0), new Array(4, 4, 4, 2, 2, 2, 2, 2, 2, 2))), new Array(new Array("Love Story", new Array(0, -8, 8, -8, 1, -1, -2, 0, 0, 9, 0), new Array(4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4))), new Array(new Array("Nobody Knows the Trouble I've seen", new Array(0, -9, 2, 3, 2, 2, 0, 0, 0), new Array(2, 2, 2, 1, 2, 2, 2, 2, 2)), new Array("Phantom of the Opera: Music of the Night", new Array(0, -9, 7, -7, 5, 2, 2, 1, -3, 5), new Array(2, 2, 2, 2, 4, 4, 4, 4, 2, 2)), new Array("Il Etait un Petit Navire", new Array(0, 0, 0, -9, 9, 1, -1, 0, -2), new Array(4, 4, 4, 2, 2, 4, 4, 4, 2))), new Array(new Array("An American in Paris", new Array(0, -10, 2, 8, -10, 2, 8, -10, 2, 10, -2, -10, 2), new Array(4, 4, 2, 4, 4, 2, 4, 4, 4, 4, 4, 4, 2)), new Array("Secret of Mana: What the forest taught me", new Array(0, -10, -2, 2, 5, 2, 5, -2, -1, -2), new Array(2, 2, 4, 4, 2, 2, 2, 4, 4, 4))), new Array(new Array("I Love You by Cole Porter", new Array(0, -11, 9, -1, -1, 1, -1, 1, -1, 1, -11, 9, 0, -2, -1, -2), new Array(2, 2, 4, 4, 4, 2, 6, 6, 6, 2, 2, 4, 4, 4, 4, 2)), new Array("FF3 Celes", new Array(0, -11, 4, -7, 3, 4), new Array(4, 4, 4, 4, 4, 4))), new Array(new Array("FFX: To Zanarkand", new Array(0, -12, 3, 4, 5, 2, 1), new Array(4, 4, 4, 4, 4, 4, 2)))); volumeBase = new rectangleBase(); volumeBase.x = 5; volumeBase.y = 195; addChild(volumeBase); volumeNob = new audiobar(); volumeNob.x = 46; volumeNob.buttonMode = true; volumeBase.addChild(volumeNob); speedBase = new rectangleBase(); speedBase.x = 70; speedBase.y = 195; addChild(speedBase); speedNob = new audiobar(); speedNob.x = 8; speedNob.buttonMode = true; speedBase.addChild(speedNob); volumeNob.addEventListener(MouseEvent.MOUSE_DOWN, function (_arg1:MouseEvent):void{ volumeNob.startDrag(false, new Rectangle(0, 0, 50, 0)); }); speedNob.addEventListener(MouseEvent.MOUSE_DOWN, function (_arg1:MouseEvent):void{ speedNob.startDrag(false, new Rectangle(0, 0, 50, 0)); }); stage.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); feedback = new TextField(); addChild((feedback = tff1("", 5, 375, 0, 500, 60))); statOptions(); drawStats(); notes = songButtons(); feedback.text = "Instructions: Click the 'Play' button and listen carefully.\n\nIf you already know your music theory select 'Intervals' from the first dropdown instead of song buttons."; drawOptions(); if (noob == false){ st = new staff(); st.x = 9; st.y = 530; st.name = "theStaff"; this.addChild(st); staffContainer = new staff(); staffContainer.name = "staffNotes"; st.addChild(staffContainer); }; staffNotes = new Array(); staffOffset = 0; mapNotes = new Array(new Array("d5", (2 - (4 * 4))), new Array("c5", (2 - (4 * 3))), new Array("b5", (2 - (4 * 2))), new Array("a5", (2 - 4)), new Array("g4", 2), new Array("f4", (2 + 4)), new Array("e4", (2 + (4 * 2))), new Array("d4", (2 + (4 * 3))), new Array("c4", (2 + (4 * 4))), new Array("b4", (2 + (4 * 5))), new Array("a4", (2 + (4 * 6))), new Array("g3", (2 + (4 * 7))), new Array("f3", (2 + (4 * 8))), new Array("e3", (2 + (4 * 9))), new Array("d3", (2 + (4 * 10))), new Array("c3", (15.5 + (4 * 11))), new Array("b3", (26 + (4 * 12))), new Array("a3", (26 + (4 * 13))), new Array("g2", (26 + (4 * 14))), new Array("f2", (26 + (4 * 15))), new Array("e2", (26 + (4 * 16))), new Array("d2", (26 + (4 * 17))), new Array("c2", (26 + (4 * 18))), new Array("b2", (26 + (4 * 19))), new Array("a2", (26 + (4 * 20))), new Array("g1", (26 + (4 * 21))), new Array("f1", (26 + (4 * 22)))); flatsTreble = new Array("b4", "e4", "a4", "d4", "g3", "c4", "f3"); flatsBass = new Array("b2", "e2", "a2", "d2", "g1", "c2", "f1"); sharpsTreble = new Array("f4", "c4", "g4", "d4", "a4", "e4", "b4"); sharpsBass = new Array("f2", "c2", "g2", "d2", "a2", "e2", "b2"); drawScaleOffset = 0; notesAvailable = 36; instrumentAssign(); clicks = 0; drawPiano(20, 459, notesAvailable); annoying = new Array(0); targets = new Array(0); green = false; blue = false; red = false; scrolling = false; drawButtons(startDecentButtons); chordReplay = new Array(); drawMenu(); addChild(tff("- Answer Choices -", 20, 215, 0xEAEAEA, 130, 14)); addChild(tff("Enable Questions", 160, 0, 0xDDDDDD, 130, 14)); addChild(tff("Volume", 5, 180, 0, 130, 14)); addChild(tff("Speed", 70, 180, 0, 130, 14)); addChild(tff("- Feedback -", 20, 350, 0xEAEAEA, 130, 14)); addChild(tff("- Piano and Staff Visualization -", 20, 429, 0xEAEAEA, 230, 16)); addChild(tff("Created by JimmyRuska.com (TrainEar.com) © 2008 - 2009", 75, 662, 0xFFFFFF, 500, 16)); addChild(tff("Staff Key", 405, 482, 0, 130, 14)); spek = new spekkio(); spek.x = 130; spek.y = 336; addChild(spek); goodJobBro(); graphics.beginFill(0); graphics.drawRoundRect(140, 0, 410, 220, 10, 10); graphics.endFill(); graphics.beginFill(0x333333); graphics.drawRoundRect(307, 0, 199, 220, 10, 10); graphics.endFill(); graphics.beginFill(0x222222); graphics.drawRoundRect(308, 0, 197, 220, 10, 10); graphics.endFill(); graphics.beginFill(0xFFFFFF); graphics.drawRoundRect(0, 0, 158, 220, 20, 20); graphics.endFill(); graphics.beginFill(0x464646); graphics.drawRoundRect(160, 0, 390, 17, 2, 2); graphics.endFill(); graphics.beginFill(2315913); graphics.drawRoundRect(160, 0, 390, 15, 3, 3); graphics.endFill(); graphics.beginFill(0xDDDDDD); graphics.drawRoundRect(0, 214, 550, 24, 2, 2); graphics.endFill(); graphics.beginFill(0x999999); graphics.drawRoundRect(0, 215, 550, 20, 2, 2); graphics.endFill(); graphics.beginFill(2315913); graphics.drawRoundRect(0, 215, 550, 18, 2, 2); graphics.endFill(); graphics.beginFill(0xDDDDDD); graphics.drawRoundRect(0, 350, 550, 24, 2, 2); graphics.endFill(); graphics.beginFill(0x999999); graphics.drawRoundRect(0, 350, 550, 20, 2, 2); graphics.endFill(); graphics.beginFill(2315913); graphics.drawRoundRect(0, 350, 550, 18, 2, 2); graphics.endFill(); graphics.beginFill(0xDDDDDD); graphics.drawRoundRect(0, 429, 550, 24, 2, 2); graphics.endFill(); graphics.beginFill(0x999999); graphics.drawRoundRect(0, 429, 550, 20, 2, 2); graphics.endFill(); graphics.beginFill(2315913); graphics.drawRoundRect(0, 429, 550, 18, 2, 2); graphics.endFill(); graphics.beginFill(11785977); graphics.drawRoundRect(0, 656, 550, 18, 2, 2); graphics.endFill(); graphics.beginFill(6526681); graphics.drawRoundRect(0, 659, 550, 18, 2, 2); graphics.endFill(); graphics.beginFill(1263225); graphics.drawRoundRect(0, 662, 550, 18, 2, 2); graphics.endFill(); movieBorder = new Shape(); movieBorder.graphics.lineStyle(1, 0xE0E0E0); movieBorder.graphics.moveTo(0, 0); movieBorder.graphics.lineTo(0, 679); movieBorder.graphics.lineTo(549, 679); movieBorder.graphics.lineTo(549, 0); movieBorder.graphics.lineTo(0, 0); addChild(movieBorder); menuArray = new Array(new Array(new Array("Text", " Ear Trainer"), new Array("DropDownWithText", "Instrument", "optionsInstruments", "optionsInstrumentIndex", "X", "assignInstrument"), new Array("DropDownWithText", "Action to Take When Correct", "optionsActionCorrect", "optionsActionCorrectIndex", "It is faster practice to automatically play a new question when correct.", false), new Array("DropDownWithText", "Action to Take After Mistake", "optionsActionWrong", "optionsActionWrongIndex", "If you make a mistake, by default the program automatically plays the song associated with the correct answer. You can change the default action with these options.", false), new Array("DropDownWithText", "When to Play Acending and Descending Songs", "optionsDesc", "optionsDescIndex", "After you master your ascending intervals it may be easier to associate ascending songs for descending intervals just by switching the note order mentally. You can use these options to play ascending songs when descending is selected and you make a mistake or vice versa.", false), new Array("DropDownWithText", "On Harmonic Play Ascending or Decending Songs?", "optionsHarmonic", "optionsHarmonicIndex", "Harmonic plays the notes at the same time. You can decide whether it plays ascending or descending songs on-mistake.", false), new Array("DropDownWithText", "Show Correct Answer after mistake?", "optionsFeedback", "optionsFeedbackIndex", "When you make a mistake the program tells you what the answer is. If you want to guess until you get it correct disable this option.", false), new Array("DropDownWithText", "First Note is Always Same?", "anchorArr", "optionsAnchorIndex", "If you are singing the intervals or playing on an instrument with a limited range, it may be convenient to make the starting note static.", false), new Array("DropDownWithText", "Difficulty Preset", "optionsPresetLevels", "optLevelPresets", "X", "changePreset"), new Array("Input", "After X milliseconds repeat question (0 = never, 5000 = 5 sec)", "repeatTimeout", "Instead of having to click repeat several times while thinking about it, you can set this option to automatically repeat the question after x amount of milliseconds. 1000 milliseconds is 1 second.", false)), new Array(new Array("Text", " Song Mode"), new Array("Input", "Notes in song mode:", "songmodesongs", "How many notes will be in the randomized melody when you have song mode selected."), new Array("DropDownWithText", "Type of Song Mode it Plays", "smPlay", "smPlayIndex", "After you can identify singular intervals at a fast speed, the next logical step could be to play 2 or more intervals in a row and identify the pairs in order. The breakdown options allow for a melody to be broken down into pairs so they can be more easily identified. The default option, which does not do the breakdown, plays a randomized melody based on the selected intervals with a length determined by the \"notes in song\" option.", false), new Array("DropDownWithText", "Type of Song Mode on-Repeat", "smRepeat", "smRepeatIndex", "After you can identify singular intervals at a fast speed, the next logical step could be to play 2 or more intervals in a row and identify the pairs in order. The breakdown options allow for a melody to be broken down into pairs so they can be more easily identified. The default option, which does not do the breakdown, plays a randomized melody based on the selected intervals with a length determined by the \"notes in song\" option.", false), new Array("DropDownWithText", "Action to Take when Correct", "smCorrect", "smCorrectIndex", "X", false), new Array("DropDownWithText", "Action to Take when Wrong", "smWrong", "smWrongIndex", "X", false), new Array("DropDownWithText", "If using breakdown, add rests between intervals?", "smBreakDown", "smBreakDownIndex", "Breakdown turns the randomized melody into its component interval pairs. Adding a rest between intervals can make things easier to identify", false)), new Array(new Array("Text", " Listen Modes"), new Array("Input", "Time Between Question And Answer (ms)", "listenAnswerTimeout", "If for examples intervals are selected it will play an interval, wait the specified time in milliseconds, then play the answer."), new Array("Input", "Listen Timeout Btw Questions (ms)", "listenTimeout", "Listen Modes play a question and answer, then it waits the specified time in milliseconds before repeating the process.")), new Array(new Array("Text", " Data"), new Array("Button", " Save Progress", "saveStats", "Unfortunately I can't save to file so you have to copy the export text to a file and from there you can import it to recover your stats and some preferences."), new Array("Button", " Reset All Statistics", "resetStatistics", "Benchmarking your progress is important. See how much you improve day to day or even hour by hour and how your speed improves over time. Practice, benchmark, compare, delete."), new Array("Button", " Delete All Songs", "resetSongs", "Delete all songs so you can add your own associations from scratch. If there are no songs when you make a mistake it will just repeat the interval."))); anchorArr = clone(noteNames); anchorArr.unshift("Don't Anchor First Note"); anchorNote = 18; voiceIds = new Array(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); arr = new Array(); speed = new Array(); queue = new Array(); harmonicNotes = new Array(); listen = 0; sequence = new Array(); backupSequence = new Array(); backupArr = new Array(); backupSpeed = new Array(); startplz = 0; songModeIndex = 0; smQueue = new Array(); memoryAmount = 1; memoryNotes = new Array(); memoryCurrent = 0; memoryIndex = 0; pitchColorPresets = new Array("None", "Alexander Scriabin", "H.von Helmholtz", "Isaac Newton", "Louis Castel", "George Field", "D.D. Jameson", "Theodor Seeman", "A. Wallace Rimington", "Bainbridge Bishop", "Adrian Klein", "August Aeppli", "I.J. Belmont", "Steve Zieverink", "Klaviatura"); pitchColorPresetsSelect = 0; } public function sanitize(_arg1:String){ var _local2:RegExp; _local2 = /(@|\|\/)/g; return (_arg1.replace(_local2, "")); } public function rand(_arg1:Number, _arg2:Number){ if (_arg2 < _arg1){ _arg2 = _arg1; }; return ((Math.round((Math.random() * (_arg2 - _arg1))) + _arg1)); } public function songCallback(){ intervalId = setTimeout(function ():void{ playAssociation(answer, ascF, num); callback = function (){ intervalId = setTimeout(function ():void{ listenIntervals(); }, listenTimeout); }; }, listenAnswerTimeout); } public function parseUglyArray(_arg1:Array){ var _local2:String; var _local3:*; var _local4:*; var _local5:*; _local2 = ""; _local3 = 0; while (_local3 < _arg1.length) { _local4 = 0; while (_local4 < _arg1[_local3].length) { _local2 = (_local2 + _arg1[_local3][_local4][0]); _local2 = (_local2 + "|"); _local5 = 0; while (_local5 < _arg1[_local3][_local4][1].length) { _local2 = (_local2 + (_arg1[_local3][_local4][1][_local5] + ",")); _local5++; }; _local2 = (_local2 + "|"); _local5 = 0; while (_local5 < _arg1[_local3][_local4][2].length) { _local2 = (_local2 + (_arg1[_local3][_local4][2][_local5] + ",")); _local5++; }; if (_arg1[_local3].length != (_local4 + 1)){ _local2 = (_local2 + "@"); }; _local4++; }; _local2 = (_local2 + "/"); _local3++; }; return (_local2); } public function clearStaff(){ if (noob){ return; }; staffNotes = new Array(); redrawStaff(); } public function myAns(_arg1:Event){ var _local3:Array; var _local2:String = optionsTypes[optionsTypesIndex]; if (_local2.substr(0, 9) == "Song Mode"){ _local3 = clone(backupSequence); playSequence(_local3.slice(0, (songModeIndex + 2)), new Array(), false); return; }; if (_local2.substr(0, 9) == "Intervals"){ if (questionType == 1){ playSequence(new Array(num, (myAnswer + 1)), new Array(qspeed, qspeed)); } else { if (questionType == 2){ playSequence(new Array(num, ((myAnswer + 1) * -1)), new Array(qspeed, qspeed)); } else { if (questionType == 3){ playSequence(new Array(new Array(num, (num + (myAnswer + 1)))), new Array()); }; }; }; }; } public function dscComboChange(_arg1:Event){ dscselected[_arg1.target.name] = _arg1.target.selectedIndex; } public function rep(){ var _local2:Array; var _local3:String; var _local4:Boolean; var _local1:String = optionsTypes[optionsTypesIndex]; trace(("Repeat clicked: " + _local1)); if ((((_local1 == "Song Mode")) || ((_local1 == "Song Mode Single")))){ _local2 = clone(backupSequence); _local3 = smRepeat[smRepeatIndex]; _local4 = ((smBreakDownIndex)==0) ? true : false; if (_local3 == "Normal Song Mode"){ playSequence(_local2, new Array(), false); } else { if (_local3 == "Breakdown Song"){ playSequence(breakDownSong(_local2, _local4), new Array(), false); } else { if (_local3 == "Play Normal Then Broken Down"){ _local2.push("s"); playSequence(_local2.concat(breakDownSong(backupSequence, _local4)), new Array(), false); } else { if (_local3 == "Play Broken Down Then Normal"){ _local2.unshift("s"); playSequence(breakDownSong(backupSequence, _local4).concat(_local2), new Array(), false); }; }; }; }; return; } else { if ((((_local1 == "Chords")) || ((_local1 == "Scales")))){ replayChord(); } else { if (_local1.substr(0, 9) == "Intervals"){ if ((((num < 0)) || ((questionIndex < 0)))){ newQuestion(); return; }; totalreplays++; var _local5 = replays; var _local6 = (questionIndex - 1); var _local7 = (_local5[_local6] + 1); _local5[_local6] = _local7; playInterval(num, questionIndex); return; } else { if ("Previous Note Reference"){ playSequence(new Array(num, absoluteAnswer), new Array(qspeed, qspeed), false); } else { if (_local1 == "Perfect Pitch"){ if (noteIds[num]){ snd = new (noteIds[num]); snd.transf = new SoundTransform(vol, 0); snd.playsnd(1); }; } else { if (_local1 == "Sight Singing"){ playSequence(new Array(clone(backupSequence[0]), "s"), new Array(), false); } else { if (_local1 == "Piano Memory Game"){ playSequence(clone(memoryNotes), new Array(), false); }; }; }; }; }; }; }; } public function makeTick(){ snd = new ticks(); snd.transf = new SoundTransform(vol, 0); snd.playsnd(1); } public function generalStats(){ var _local3 = questions; var _local4 = (questionIndex - 1); var _local5 = (_local3[_local4] + 1); _local3[_local4] = _local5; total++; var _local1:Date = new Date(); var _local2:Number = (Math.floor(((_local1.getTime() - lastplaytime) / 10)) / 100); totaltiming = (totaltiming + _local2); timing[(questionIndex - 1)] = (timing[(questionIndex - 1)] + _local2); if (topstreaks[(questionIndex - 1)] < streaks[(questionIndex - 1)]){ topstreaks[(questionIndex - 1)] = streaks[(questionIndex - 1)]; }; if (topstreak < streak){ topstreak = streak; }; firstMiss = -1; } public function makeAMess(){ var overlay:Sprite; var ascOffset:Number; var descOffset:Number; var yOffset:Number; var i:*; var temp:Number; disablekeys = true; overlay = new Sprite(); addChild(overlay); overlay.graphics.beginFill(0); overlay.graphics.drawRoundRect(0, 0, 550, 800, 10, 10); overlay.graphics.endFill(); overlay.addChild(tff("Ascending Songs", 45, 15, 10070783, 200, 20)); overlay.addChild(tff("Descending Songs", 320, 15, 10070783, 200, 20)); ascOffset = 0; descOffset = 270; yOffset = 40; i = 0; while (i < asc.length) { overlay.addChild(makeBox(i, true, (ascOffset + 35), (yOffset - 3), 120)); overlay.addChild(makeBox(i, false, (descOffset + 40), (yOffset - 3), 120)); temp = 165; overlay.addChild(tff(intervalSet[i], (10 + ascOffset), ((yOffset + 1) + (i * 30)), 0xFFFFFF, 20, 40)); overlay.addChild(simpleButton("Play", (temp + ascOffset), (yOffset + (i * 30)), 0xFFFFFF, 30, 17, 3346739, function (_arg1:MouseEvent):void{ var _local2:*; if (!_arg1.target.num){ _arg1.target.num = 0; }; if (num < 0){ num = anchorNote; }; _local2 = clone(asc[_arg1.target.num][ascselected[_arg1.target.num]][1]); _local2[0] = num; playSequence(_local2, clone(asc[_arg1.target.num][ascselected[_arg1.target.num]][2])); }, false, i)); overlay.addChild(simpleButton("Play", (temp + descOffset), (yOffset + (i * 30)), 0xFFFFFF, 30, 17, 3346739, function (_arg1:MouseEvent):void{ var _local2:*; if (!_arg1.target.num){ _arg1.target.num = 0; }; if (num < 0){ num = anchorNote; }; _local2 = clone(dsc[_arg1.target.num][dscselected[_arg1.target.num]][1]); _local2[0] = num; playSequence(_local2, clone(dsc[_arg1.target.num][dscselected[_arg1.target.num]][2])); }, false, i)); overlay.addChild(simpleButton("Edit", (((temp + 30) + 5) + ascOffset), (yOffset + (i * 30)), 0xFFFFFF, 30, 17, 1127219, function (_arg1:MouseEvent):void{ makeTick(); editSong(_arg1, overlay, i, true, true); }, false, i)); overlay.addChild(simpleButton("Edit", (((temp + 30) + 5) + descOffset), (yOffset + (i * 30)), 0xFFFFFF, 30, 17, 1127219, function (_arg1:MouseEvent):void{ makeTick(); editSong(_arg1, overlay, i, false, true); }, false, i)); overlay.addChild(simpleButton("Add", ((((temp + 60) + 5) + 5) + ascOffset), (yOffset + (i * 30)), 0xFFFFFF, 30, 17, 3355409, function (_arg1:MouseEvent):void{ makeTick(); editSong(_arg1, overlay, i, true, false); }, false, i)); overlay.addChild(simpleButton("Add", ((((temp + 60) + 5) + 5) + descOffset), (yOffset + (i * 30)), 0xFFFFFF, 30, 17, 3355409, function (_arg1:MouseEvent):void{ makeTick(); editSong(_arg1, overlay, i, false, false); }, false, i)); i = (i + 1); }; overlay.addChild(simpleButton("Exit Songs Editor", 222, 430, 0xFFFFFF, 100, 17, 0, function (_arg1:MouseEvent):void{ makeTick(); removeChild(overlay); disablekeys = false; }, false)); } public function songButtons(_arg1:Boolean=true){ var _local3:*; var _local2:Array = clone(intervalSet); for (_local3 in _local2) { _local2[_local3] = (_arg1) ? asc[_local3][ascselected[_local3]][0] : dsc[_local3][dscselected[_local3]][0]; }; return (_local2); } public function drawOptions(){ if (getChildByName("optionsmess")){ removeChild(getChildByName("optionsmess")); }; var optionsmess:Sprite = new Sprite(); optionsmess.name = "optionsmess"; this.addChild(optionsmess); dropDownWithText("Trainers (Scroll)", "derp", 5, 45, optionsTypes, optionsTypesIndex, optionsmess, earTrainers, 145); dropDownWithText("Note Movement", "derp", 5, 90, options, optselect, optionsmess, function (_arg1:Event):void{ makeTick(); optselect = _arg1.target.selectedIndex; drawOptions(); if (listen !== 0){ listen = 99; clearInterval(intervalId); missed = missedback; questionIndex = missedback1; }; }, 145); optionsmess.addChild(makeDropDown(405, 502, keySignature, optKey, function (_arg1:Event):void{ makeTick(); optKey = _arg1.target.selectedIndex; redrawStaff(); }, 80)); } public function doNothing(){ } public function drawMenu(){ var gB:googleButton; var style:String = optionsTypes[optionsTypesIndex]; if (getChildByName("overlayBackground")){ removeChild(getChildByName("overlayBackground")); }; var overlayBackground:Sprite = new Sprite(); overlayBackground.name = "overlayBackground"; addChild(overlayBackground); if (((((((intervalId) || (!((callback == doNothing))))) || (((myTimer) && (myTimer.running))))) && (!((style.substr(0, 9) == "Intervals"))))){ gB = new googleButton(); gB.makeButton("Stop", 4, 5, function (_arg1:MouseEvent):void{ if (((myTimer) && (myTimer.running))){ myTimer.stop(); }; clearInterval(intervalId); callback = doNothing; intervalId = 0; drawMenu(); }, "", false, 35); overlayBackground.addChild(gB); } else { gB = new googleButton(); gB.makeButton("Play", 4, 5, function (_arg1:MouseEvent):void{ playNext(); drawMenu(); }, "", false, 35); overlayBackground.addChild(gB); }; if (num >= 0){ gB = new googleButton(); gB.makeButton("Repeat", 42, 5, function (_arg1:MouseEvent):void{ rep(); }, "", false, 35); overlayBackground.addChild(gB); }; if ((((missed == true)) && ((((style.substr(0, 9) == "Song Mode")) || ((style.substr(0, 9) == "Intervals")))))){ gB = new googleButton(); gB.makeButton("MyAnswer ", 90, 5, myAns, "", false, 35); overlayBackground.addChild(gB); } else { if ((((style == "Sight Singing")) && ((backupSequence.length > 0)))){ gB = new googleButton(); gB.makeButton("Answer", 90, 5, function (_arg1:MouseEvent):void{ playSequence(clone(backupSequence), new Array(), false); }, "", false, 35); overlayBackground.addChild(gB); }; }; gB = new googleButton(); gB.makeButton("Options", 6, 140, function (_arg1:MouseEvent):void{ makeTick(); moreOptions(); drawMenuItems("overlay", clone(menuArray[0])); }); overlayBackground.addChild(gB); gB = new googleButton(); gB.makeButton("Songs", 52, 140, function (_arg1:MouseEvent):void{ makeTick(); makeAMess(); }); overlayBackground.addChild(gB); gB = new googleButton(); gB.makeButton("Links", 88, 140, function (_arg1:MouseEvent):void{ makeTick(); showLinks(); }); overlayBackground.addChild(gB); } public function drawMenuItems(_arg1, _arg2){ var overlay:*; var f:Function; var item:Array; var over = _arg1; var menuArr = _arg2; overlay = Object(getChildByName(over)); var menuItemY:Number = 50; var q:* = 0; while (q < menuArr.length) { item = menuArr[q]; switch (item[0]){ case "DropDown": f = ((item[5])==false) ? function (_arg1:Event):void{ makeTick(); root[_arg1.target.name] = _arg1.target.selectedIndex; } : root[item[5]]; overlay.addChild(makeDropDown(20, menuItemY, this[item[1]], this[item[2]], f, 210, item[3])); overlay.addChild(helpMenu(item[4], 240, (menuItemY + 2), overlay)); menuItemY = (menuItemY + 30); break; case "DropDownWithText": overlay.addChild(tff(item[1], 20, menuItemY, 0xFFFFFF, 550, 20)); menuItemY = (menuItemY + 23); f = ((item[5])==false) ? function (_arg1:Event):void{ makeTick(); root[_arg1.target.name] = _arg1.target.selectedIndex; } : root[item[5]]; overlay.addChild(makeDropDown(20, menuItemY, this[item[2]], this[item[3]], f, 210, item[3])); overlay.addChild(helpMenu(item[4], 236, (menuItemY + 2), overlay)); menuItemY = (menuItemY + 30); break; case "Text": overlay.addChild(tff1(item[1], 10, menuItemY, 0xFFFFFF, 200, 20)); menuItemY = (menuItemY + 23); break; case "Input": overlay.addChild(tff(item[1], 20, menuItemY, 0xFFFFFF, 550, 20)); menuItemY = (menuItemY + 23); this[("genericTextField" + q)] = tff(this[item[2]], 20, menuItemY, 0, 50, 20, false, true, 0xFFFFFF); this[("genericTextField" + q)].name = ("genericTextField" + q); overlay.addChild(this[("genericTextField" + q)]); overlay.addChild(simpleButton("SET", 76, (menuItemY + 2), 0xFFFFFF, 30, 17, 10053171, function (_arg1:MouseEvent):void{ makeTick(); root[_arg1.target.name] = int(overlay.getChildByName(("genericTextField" + _arg1.target.num)).text); }, item[2], q)); overlay.addChild(helpMenu(item[3], 110, (menuItemY + 2), overlay)); menuItemY = (menuItemY + 30); break; case "Button": overlay.addChild(simpleButton(item[1], 20, (menuItemY + 2), 0xFFFFFF, 130, 17, 10053171, function (_arg1:MouseEvent):void{ makeTick(); removeChild(getChildByName("overlay")); var _local2 = root; _local2[_arg1.target.name](); }, item[2])); overlay.addChild(helpMenu(item[3], 159, (menuItemY + 2), overlay)); menuItemY = (menuItemY + 30); break; }; q = (q + 1); }; menuItemY = (menuItemY + 30); overlay.addChild(simpleButton(" Exit Menu ", 250, (menuItemY + 2), 0xFFFFFF, 64, 17, 0x333333, function (_arg1:MouseEvent):void{ makeTick(); removeChild(getChildByName("overlay")); disablekeys = false; })); } public function replayChord(){ trace(chordReplay); if (chordReplay.length < 1){ return; }; playSequence(clone(chordReplay[1]), new Array(), chordReplay[0]); } public function playAssociation(_arg1:Number, _arg2:Boolean=true, _arg3:Number=0){ arr = (_arg2) ? clone(asc[_arg1][ascselected[_arg1]][1]) : clone(dsc[_arg1][dscselected[_arg1]][1]); arr[0] = _arg3; trace(arr); playSequence(arr, (_arg2) ? clone(asc[_arg1][ascselected[_arg1]][2]) : clone(dsc[_arg1][dscselected[_arg1]][2])); } public function memoryGame(){ trace("-------INSIDE MEMORY GAME"); trace(memoryNotes); trace(memoryCurrent); if (memoryNotes.length == 0){ memoryCurrent = rand(0, notesAvailable); trace(("memoryCurrent established as " + memoryCurrent)); memoryNotes.push(memoryCurrent); trace(memoryNotes); playSequence(new Array(memoryCurrent, "s"), new Array()); addNote(memoryCurrent); addDot(memoryCurrent, "green", new greendot()); return; }; trace(("Memory Notes" + memoryNotes)); memoryCurrent = (rand(0, 1)) ? generateInterval() : (generateInterval() * -1); if ((memoryNotes[(memoryNotes.length - 1)] + memoryCurrent) < 0){ memoryCurrent = (memoryCurrent * -1); }; memoryNotes.push((memoryNotes[(memoryNotes.length - 1)] + memoryCurrent)); playSequence(clone(memoryNotes), new Array(), false); } public function gp(){ var _local4:Boolean; var _local5:*; questionType = optselect; if (questionType == 4){ questionType = rand(1, 2); } else { if (questionType == 5){ questionType = rand(1, 3); }; }; ascF = (((questionType < 2)) || ((((questionType == 3)) && ((optionsHarmonicIndex == 0))))); var _local1:Array = clone(notesids); var _local2:Array = clone(deactivated); var _local3:Array = new Array(); for (_local5 in _local1) { if (deactivated[_local5] == 0){ _local3.push(_local1[_local5]); }; }; if (_local3.length == 0){ questionIndex = -1; return; }; questionIndex = Math.round((Math.random() * (_local3.length - 1))); trace(((("value = " + _local3[questionIndex]) + " || questionIndex = ") + questionIndex)); questionIndex = _local3[questionIndex]; answer = (questionIndex - 1); if (optionsAnchorIndex == 1){ num = anchorNote; } else { num = (ascF) ? rand(0, (notesAvailable - questionIndex)) : rand(questionIndex, notesAvailable); }; absoluteAnswer = (ascF) ? (num + questionIndex) : (num + (questionIndex * -1)); addNote(num); if (optionsTypes[optionsTypesIndex] != "Listen Mode"){ drawStats(); }; } public function intervalName(_arg1:Number){ var _local2:String; _arg1 = Math.abs(_arg1); _local2 = ""; if (_arg1 > 12){ _arg1 = (_arg1 - 12); _local2 = "(+8va)"; }; if (_arg1 == 0){ return (("Unison" + _local2)); }; return ((properIntervalSet[(_arg1 - 1)] + _local2)); } public function playNextNote(_arg1:Event){ var _local3:*; if (arr.length == 0){ tune.isDone = 0; callback.call(); if (queue.length > 0){ trace(("------------------------hit2" + queue[0][0])); if (queue[0][0] == true){ numback = 0; } else { numback = queue[0][2][0]; }; relative = queue[0][1]; arr = clone(queue[0][2]); speed = clone(queue[0][3]); queue.splice(0, 1); } else { return; }; }; var _local2:Number = (relative) ? (numback + arr[0]) : arr[0]; if (isNaN(_local2)){ _local2 = 0; }; if ((((((speed[0] < 0)) || ((speed[0] > 16)))) || (!(speed[0])))){ speed[0] = qspeed; }; if (typeof(arr[0]) == "object"){ _local3 = 0; while (_local3 < arr[0].length) { this[(snd + _local3)] = new (noteIds[arr[0][_local3]]); this[(snd + _local3)].transf = new SoundTransform(vol, 0); this[(snd + _local3)].playsnd(speed[0]); harmonicNotes.push(this[(snd + _local3)]); this[(snd + _local3)].gimmie().addEventListener(TimerEvent.TIMER, harmonicFunc); _local3++; }; tune = new s(); tune.playsnd(speed[0]); tune.gimmie().addEventListener(TimerEvent.TIMER, timerFunc); speed.splice(0, 1); arr.splice(0, 1); } else { if (arr[0] != "s"){ if (_local2 < 0){ _local2 = (_local2 + 12); } else { if (_local2 > notesAvailable){ _local2 = (_local2 - 12); }; }; if (!noteIds[_local2]){ arr = new Array(); speed = new Array(); tune.isDone = 0; return; }; tune = new (noteIds[_local2]); if (relative){ numback = _local2; }; arr.splice(0, 1); tune.transf = new SoundTransform(vol, 0); tune.playsnd(speed[0]); tune.gimmie().addEventListener(TimerEvent.TIMER, timerFunc); speed.splice(0, 1); } else { if (arr[0] == "s"){ tune = new s(); tune.playsnd(speed[0]); tune.gimmie().addEventListener(TimerEvent.TIMER, timerFunc); speed.splice(0, 1); arr.splice(0, 1); }; }; }; } public function addDot(_arg1:Number, _arg2:String, _arg3:Sprite){ if ((((_arg2 == "green")) && (green))){ return; }; if ((((_arg2 == "red")) && (red))){ return; }; if ((((_arg2 == "blue")) && (blue))){ return; }; this[_arg2] = true; dotClass = _arg3; dotClass.name = ((_arg2 + "") + _arg1); var _local4:Sprite = Sprite(getChildByName("showPiano")); target = _local4.getChildByName(("" + _arg1)); if (!target){ return (false); }; if (target.height < 42){ dotClass.x = 1; dotClass.y = 20; } else { dotClass.x = 5; dotClass.y = 50; }; dotClass.mouseEnabled = false; annoying.push(dotClass); targets.push(Sprite(target)); Sprite(target).addChild(dotClass); } public function mouseReleased(_arg1:MouseEvent):void{ vol = (volumeNob.x / 50); qspeed = (((speedNob.x / 50) * 8) + 0.5); volumeNob.stopDrag(); speedNob.stopDrag(); } public function tonesPlz(){ anchorNote = 18; noteIds = new Array(c3, c3s, d3, d3s, e3, f3, f3s, g3, g3s, a3, a3s, b3, c4, c4s, d4, d4s, e4, f4, f4s, g4, g4s, a4, a4s, b4, c5, c5s, d5, d5s, e5, f5, f5s, g5, g5s, a5, a5s, b5); noteNames = new Array("c3", "c#3", "d3", "d#3", "e3", "f3", "f#3", "g3", "g#3", "a3", "a#3", "b3", "c4", "c#4", "d4", "d#4", "e4", "f4", "f#4", "g4", "g#4", "a4", "a#4", "b4", "c5", "c#5", "d5", "d#5", "e5", "f5", "f#5", "g5", "g#5", "a5", "a#5", "b5"); } public function relativeToAbsolute(_arg1:Array){ if (!_arg1[1]){ return (_arg1); }; var _local2:Number = 0; var _local3:Array = new Array(); var _local4:* = 0; while (_local4 < _arg1.length) { _local2 = (_local2 + _arg1[_local4]); _local3.push(_local2); _local4++; }; return (_local3); } public function makeBox(_arg1, _arg2=true, _arg3:uint=0, _arg4:uint=0, _arg5:uint=100){ var _local6:dropdownx = new dropdownx(); _local6.addstuffandmove((_arg2) ? asc[_arg1] : dsc[_arg1], _arg3, ((_arg4 + 1) + (_arg1 * 30))); _local6.myComboBox.width = _arg5; _local6.myComboBox.name = _arg1; _local6.myComboBox.alpha = 100; _local6.myComboBox.selectedIndex = (_arg2) ? ascselected[_arg1] : dscselected[_arg1]; _local6.myComboBox.addEventListener(Event.CHANGE, (_arg2) ? ascComboChange : dscComboChange); return (_local6); } public function absoluteToRelativeTonic(_arg1:Array){ var _local3:*; if (!_arg1[1]){ return (_arg1); }; var _local2:Number = _arg1[0]; for (_local3 in _arg1) { _arg1[_local3] = (_arg1[_local3] - _local2); }; return (_arg1); } public function niceButton(_arg1, _arg2, _arg3, _arg4:Number, _arg5:Function){ var _local6:buttonpl0x = new buttonpl0x(); var _local7:nicebutton = new nicebutton(); _local7.selectable = false; _local6.addChild(_local7); _local6.swapChildren(_local7, _local6.tf); _local6.buttonMode = true; _local7.num = _arg4; _local7.name = ("" + _arg4); _local6.x = _arg1; _local6.y = _arg2; _local6.name = ("" + _arg4); _local6.tf.text = _arg3; _local6.tf1.text = ("" + (_arg4 + 1)); _local6.addEventListener(MouseEvent.CLICK, _arg5); return (_local6); } public function guitarPlz(){ anchorNote = 18; noteIds = new Array(c2g, c2sg, d2g, d2sg, e2g, f2g, f2sg, g2g, g2sg, a3g, a3sg, b3g, c3g, c3sg, d3g, d3sg, e3g, f3g, f3sg, g3g, g3sg, a4g, a4sg, b4g, c4g, c4sg, d4g, d4sg, e4g, f4g, f4sg, g4g, g4sg, a5g, a5sg, b5g, c5g); noteNames = new Array("c2", "c#2", "d2", "d#2", "e2", "f2", "f#2", "g2", "g#2", "a3", "a#3", "b3", "c3", "c#3", "d3", "d#3", "e3", "f3", "f#3", "g3", "g#3", "a4", "a#4", "b4", "c4", "c#4", "d4", "d#4", "e4", "f4", "f#4", "g4", "g#4", "a5", "a#5", "b5", "c5"); } public function checkPiano(_arg1:MouseEvent){ var _local5:Date; var _local6:Number; SoundMixer.stopAll(); var _local2:Number = (Math.abs((num - int(_arg1.target.name))) - 1); pianototal++; var _local3:String = optionsTypes[optionsTypesIndex]; if ((((((_local3 == "Identify Notes on Treble Clef")) || ((_local3 == "Identify Notes on Bass Clef")))) || ((_local3 == "Identify All Notes")))){ trace(((answerText + " vs ") + noteNames[int(_arg1.target.name)])); if (answerText == noteNames[int(_arg1.target.name)].replace(/[0-9]/, "")){ feedback.text = "Correct!\n\nClick play for another question"; addDot(answer, "green", new greendot()); genericWin(); return; }; feedback.text = "Incorrect"; addDot(answer, "red", new reddot()); } else { if (_local3 == "Piano Memory Game"){ trace(memoryIndex); trace(memoryNotes[memoryIndex]); trace(memoryNotes); trace(_arg1.target.name); if (memoryNotes[memoryIndex] == int(_arg1.target.name)){ if (++memoryIndex == memoryNotes.length){ memoryGame(); memoryIndex = 0; feedback.text = "Correct! +1 Note!"; return; }; feedback.text = "Correct!"; } else { feedback.text = "Incorrect."; }; } else { if (_local3 == "Previous Note Reference"){ if (absoluteAnswer == int(_arg1.target.name)){ feedback.text = "Correct! Click play or right arrow for next note."; clearDots(); addDot(num, "blue", new bluedot()); addDot(absoluteAnswer, "green", new greendot()); } else { makeTick(); clearDots(); addDot(absoluteAnswer, "red", new reddot()); addDot(num, "blue", new bluedot()); feedback.text = ("Incorrect, " + intervalSet[(questionIndex - 1)]); }; } else { if (_local3 == "Perfect Pitch"){ if (pitchAnsweredFlag == false){ _local5 = new Date(); _local6 = (Math.floor(((_local5.getTime() - pitchLastPlayTime) / 10)) / 100); pitchTotalTiming = (pitchTotalTiming + _local6); pitchTiming[questionIndex] = (pitchTiming[questionIndex] + _local6); }; if (noteNames[answer].replace(/[0-9]/, "") == noteNames[int(_arg1.target.name)].replace(/[0-9]/, "")){ feedback.text = "Correct!\n\nClick play for another question"; addDot(answer, "green", new greendot()); if ((((pitchMissedFlag == false)) && ((pitchAnsweredFlag == false)))){ pitchTotal++; var _local7 = pitchQuestions; var _local8 = questionIndex; var _local9 = (_local7[_local8] + 1); _local7[_local8] = _local9; pitchTotalCorrect++; _local7 = pitchCorrect; _local8 = questionIndex; _local9 = (_local7[_local8] + 1); _local7[_local8] = _local9; _local7 = pitchStreaks; _local8 = questionIndex; _local9 = (_local7[_local8] + 1); _local7[_local8] = _local9; pitchStreak++; pitchAnsweredFlag = true; }; pitchMissedFlag = false; drawPitchStats(); } else { if (pitchMissedFlag == false){ pitchTotal++; _local7 = pitchQuestions; _local8 = questionIndex; _local9 = (_local7[_local8] + 1); _local7[_local8] = _local9; feedback.text = "Incorrect"; pitchTotalIncorrect++; _local7 = pitchIncorrect; _local8 = questionIndex; _local9 = (_local7[_local8] + 1); _local7[_local8] = _local9; trace(("It was incorrect so " + pitchIncorrect[questionIndex])); trace(("Also questionIndex is " + questionIndex)); if (pitchTopStreak < pitchStreak){ pitchTopStreak = pitchStreak; }; pitchStreak = 0; if (pitchTopStreaks[questionIndex] < pitchStreaks[questionIndex]){ pitchTopStreaks[questionIndex] = pitchStreaks[questionIndex]; }; pitchStreaks[questionIndex] = 0; _local7 = pitchConfused[questionIndex]; _local8 = notesList.indexOf(noteNames[int(_arg1.target.name)].replace(/[0-9]/, "")); _local9 = (_local7[_local8] + 1); _local7[_local8] = _local9; pitchMissedFlag = true; pitchAnsweredFlag = true; }; drawPitchStats(); addDot(answer, "red", new reddot()); }; drawPitchStats(); }; }; }; }; if ((((((_local3.substr(0, 9) == "Intervals")) || ((_local3.substr(0, 9) == "Song Mode")))) && (((absoluteAnswer % 1) == 0)))){ if (absoluteAnswer == int(_arg1.target.name)){ feedback.text = "Correct"; pianoflag = true; myAnswer = _local2; evalAnswer(); return; }; feedback.text = "Incorrect"; }; trace(((absoluteAnswer + " - ") + _arg1.target.name)); if (!noteIds[int(_arg1.target.name)]){ return; }; var _local4:soundcomplete = new (noteIds[int(_arg1.target.name)]); _local4.transf = new SoundTransform(1, 0); _local4.playsnd(2); } public function saveStats(){ var overlay:Sprite; var blah1:TextField; var blah2:TextField; if (getChildByName("overlay")){ removeChild(getChildByName("overlay")); }; disablekeys = true; overlay = new Sprite(); addChild(overlay); overlay.name = "overlay"; overlay.graphics.beginFill(2267647); overlay.graphics.drawRoundRect(5, 5, 540, 490, 10, 10); overlay.graphics.endFill(); tf = tff("You can save all your songs and statistics using this import / export feature. Just copy the text under export and save it to a text file. When you want to resume where you left off, just paste the contents of the export file into the import box and click import.", 15, 15, 0xFFFFFF, 500, 200); tf.wordWrap = true; overlay.addChild(tf); overlay.addChild(tff("Export Import", 15, 170, 0xFFFFFF, 400, 20)); overlay.addChild(simpleButton(" Copy to Clipboard", 20, 300, 0xFFFFFF, 110, 17, 6697881, function (_arg1:MouseEvent):void{ makeTick(); System.setClipboard(blah1.text); })); overlay.addChild(simpleButton(" Import Settings", 290, 300, 0xFFFFFF, 110, 17, 6723891, function (_arg1:MouseEvent):void{ makeTick(); if (blah2.text.length > 0){ importSettings(blah2.text); }; removeChild(overlay); disablekeys = false; })); overlay.addChild(simpleButton(" Import File", 410, 300, 0xFFFFFF, 110, 17, 6723891, function (_arg1:MouseEvent):void{ var fr:*; var evt = _arg1; makeTick(); fr = new FileReference(); fr.addEventListener(Event.COMPLETE, function (_arg1:Event):void{ if (fr.data.length > 0){ importSettings(fr.data); }; removeChild(overlay); disablekeys = false; }); fr.addEventListener(Event.SELECT, function (_arg1:Event):void{ fr.load(); }); fr.browse(); })); var output = "<ascSongs>"; output = (output + parseUglyArray(asc)); output = (output + "</ascSongs>\n"); output = (output + "<dscSongs>"); output = (output + parseUglyArray(dsc)); output = (output + "</dscSongs>\n"); var options = ""; options = (options + (qspeed + "|")); options = (options + (vol + "|")); options = (options + (questionType + "|")); options = (options + (optselect + "|")); options = (options + (optionsHarmonicIndex + "|")); options = (options + (optionsDescIndex + "|")); options = (options + (arrayToStr(deactivated) + "|")); options = (options + (arrayToStr(ascselected) + "|")); options = (options + (arrayToStr(dscselected) + "|")); options = (options + (optionsFeedbackIndex + "|")); output = (output + "<options>"); output = (output + options); output = (output + "</options>\n"); output = (output + "<stats>"); output = (output + rememberStats()); output = (output + "</stats>\n"); blah1 = new TextField(); blah1 = tff(output, 20, 190, 0, 220, 100, false, true, 0xFFFFFF); blah1.multiline = true; overlay.addChild(blah1); blah2 = new TextField(); blah2 = tff("", 290, 190, 0, 220, 100, false, true, 0xFFFFFF); blah2.multiline = true; overlay.addChild(blah2); overlay.addChild(simpleButton(" Exit", 230, 360, 0xFFFFFF, 40, 17, 0, function (_arg1:MouseEvent):void{ makeTick(); removeChild(overlay); disablekeys = false; })); } public function speedMathEval(_arg1:Event){ if (_arg1.target.text == answer){ makeTick(); speedMath(); _arg1.target.text = ""; }; if (_arg1.target.text == "e"){ speedMath(); }; } public function strToArray(_arg1:String){ var _local2:RegExp; _local2 = /\-?\d+/g; return (intPlz(_arg1.match(_local2))); } public function addPianoNote(_arg1:Boolean, _arg2, _arg3, _arg4){ var _local5:Sprite = (_arg1) ? new ssharp() : new letter(); _local5.x = _arg2; _local5.y = _arg3; _local5.name = ("" + _arg4); _local5.buttonMode = true; _local5.addEventListener(MouseEvent.MOUSE_DOWN, checkPiano); return (_local5); } public function generateInterval(){ var _local1:Array; var _local2:Array; var _local3:Array; var _local4:Boolean; var _local5:*; _local1 = clone(notesids); _local2 = clone(deactivated); _local3 = new Array(); for (_local5 in _local1) { if (_local2[_local5] == 0){ _local3.push(_local1[_local5]); }; }; if (_local3.length == 0){ questionIndex = -1; return; }; return (_local3[Math.round((Math.random() * (_local3.length - 1)))]); } public function wellDone(){ totalcorrect++; streak++; var _local1 = streaks; var _local2 = (questionIndex - 1); var _local3 = (_local1[_local2] + 1); _local1[_local2] = _local3; _local1 = correct; _local2 = (questionIndex - 1); _local3 = (_local1[_local2] + 1); _local1[_local2] = _local3; if (pianoflag){ _local1 = pianocorrect; _local2 = (questionIndex - 1); _local3 = (_local1[_local2] + 1); _local1[_local2] = _local3; }; } public function clone(_arg1:Object){ var _local2:ByteArray = new ByteArray(); _local2.writeObject(_arg1); _local2.position = 0; return (_local2.readObject()); } public function lolTimer(_arg1:Number, _arg2:Number, _arg3:Function){ myTimer = new Timer(_arg1, _arg2); myTimer.addEventListener(TimerEvent.TIMER, _arg3); myTimer.start(); } public function badJobBro(){ var _local1:Sprite = new Sprite(); if (getChildByName("feedbackBar")){ removeChild(getChildByName("feedbackBar")); }; _local1.name = "feedbackBar"; _local1.graphics.beginFill(0); _local1.graphics.lineStyle(1, 0xEEEEEE); _local1.graphics.moveTo(0, 0); _local1.graphics.lineTo(10, 0); _local1.graphics.lineTo(10, 10); _local1.graphics.lineTo(0, 10); _local1.graphics.lineTo(0, 0); _local1.graphics.endFill(); _local1.x = 172; _local1.y = 354; addChild(_local1); } public function moreOptions(){ if (getChildByName("overlay")){ removeChild(getChildByName("overlay")); }; disablekeys = true; var overlay:Sprite = new Sprite(); overlay.name = "overlay"; overlay.graphics.beginFill(0); overlay.graphics.drawRoundRect(2, 5, 546, 800, 10, 10); overlay.graphics.endFill(); addChild(overlay); var menuItemX:Number = 10; var q:* = 0; while (q < menuArray.length) { overlay.addChild(simpleButton(menuArray[q][0][1], menuItemX, 0, 0xFFFFFF, ((menuArray[q][0][1].length * 5) + 15), 17, 0x333333, function (_arg1:MouseEvent):void{ makeTick(); moreOptions(); drawMenuItems("overlay", clone(menuArray[_arg1.target.num])); }, false, q)); menuItemX = (menuItemX + ((menuArray[q][0][1].length * 5) + 25)); q = (q + 1); }; } public function playChord(_arg1:Boolean=false){ var _local5:*; var _local6:Array; var _local7:*; clearStaff(); clearDots(); var _local2:Array = new Array(); var _local3:Number = 0; var _local4:Array = clone(notes); for (_local5 in _local4) { if (deactivated[_local5] == 0){ _local2.push(_local4[_local5]); }; }; questionIndex = Math.round((Math.random() * (_local2.length - 1))); answer = notes.indexOf(_local2[questionIndex]); trace(_local2[questionIndex]); _local6 = (_arg1) ? scaleDefinitions : chordDefinitions; for (_local5 in _local6) { if (_local2[questionIndex] == _local6[_local5][0]){ arr = clone(_local6[_local5][1]); questionType = optselect; if (questionType == 4){ questionType = rand(1, 2); } else { if (questionType == 5){ questionType = rand(1, 3); }; }; for (_local7 in arr) { _local3 = (_local3 + arr[_local7]); }; if (optionsAnchorIndex != 0){ arr[0] = anchorNote; } else { arr[0] = rand(0, (notesAvailable - _local3)); }; trace(((((("Chosen: " + arr[0]) + ", k: ") + _local3) + ", arr=") + arr)); }; }; if ((((questionType == 2)) || ((questionType == 3)))){ arr = relativeToAbsolute(arr); for (_local7 in arr) { addNote(arr[_local7]); addDot(arr[_local7], "yellow", new greendot()); }; if (questionType == 3){ return (playSequence(new Array(arr), new Array(), false)); }; arr.reverse(); chordReplay = new Array(false, clone(arr)); playSequence(arr, new Array(), false); } else { var _local8:int; _local4 = relativeToAbsolute(arr); var _local9:* = _local4; for (_local7 in _local4) { addNote(_local4[_local7]); addDot(_local4[_local7], "yellow", new greendot()); }; chordReplay = new Array(true, clone(arr)); playSequence(arr, new Array()); }; } public function drawButtons(_arg1=true){ var scrollPlz:Sprite; var tmp:String; var fail:Boolean; var gB:googleButton; var i:*; var upArr:Sprite; var downArr:Sprite; var nicebuttons = _arg1; if (getChildByName("buttonmess")){ removeChild(getChildByName("buttonmess")); }; var buttonmess:Sprite = new Sprite(); buttonmess.name = "buttonmess"; this.addChild(buttonmess); scrollPlz = new Sprite(); scrollPlz.name = "scrollPlz"; scrollPlz.x = 165; scrollPlz.y = 20; scrollPlz.scrollRect = new Rectangle(0, 0, 300, 190); buttonmess.addChild(scrollPlz); var buttonAnswerChoices:Sprite = new Sprite(); buttonAnswerChoices.name = "buttonAnswerChoices"; buttonmess.addChild(buttonAnswerChoices); if (notes.length > 8){ upArr = new Sprite(); upArr.graphics.beginFill(0x888888); upArr.graphics.lineStyle(1, 0xBBBBBB); upArr.graphics.moveTo(5, 0); upArr.graphics.lineTo(11, 11); upArr.graphics.lineTo(0, 11); upArr.graphics.lineTo(5, 0); upArr.graphics.endFill(); upArr.x = 291; upArr.y = 30; upArr.buttonMode = true; downArr = new Sprite(); downArr.graphics.beginFill(0x888888); downArr.graphics.lineStyle(1, 0xBBBBBB); downArr.graphics.moveTo(0, 0); downArr.graphics.lineTo(11, 0); downArr.graphics.lineTo(5, 11); downArr.graphics.lineTo(0, 0); downArr.graphics.endFill(); downArr.x = 291; downArr.y = 70; downArr.buttonMode = true; buttonmess.graphics.lineStyle(1, 0xBBBBBB); buttonmess.graphics.moveTo(296, 40); buttonmess.graphics.lineTo(296, 70); upArr.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{ var _local2:Rectangle = scrollPlz.scrollRect; makeTick(); if (_local2.y > 0){ _local2.y = (_local2.y - 50); }; scrollPlz.scrollRect = _local2; }); downArr.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{ var _local2:Rectangle = scrollPlz.scrollRect; makeTick(); _local2.y = (_local2.y + 50); scrollPlz.scrollRect = _local2; }); buttonmess.addChild(upArr); buttonmess.addChild(downArr); }; var style:String = optionsTypes[optionsTypesIndex]; var yplz:Number = 245; var xOffset:Number = 0; var n:Number = 0; for (i in notes) { var _local5 = (deactivated[i] == 1); fail = _local5; if (_local5 == false){ if (nicebuttons){ if (n > 6){ n = 0; yplz = (yplz + 55); }; n = (n + 1); buttonAnswerChoices.addChild(niceButton(((n * 65) + 20), yplz, notes[i], i, checkAnswer)); } else { if ((((((((((style == "Note Comparison")) || ((style == "Sight Singing")))) || ((style == "Note Comparison: Tuning")))) || (!((style.match("Listen") == null))))) || ((style == "Speed Math")))){ } else { gB = new googleButton(); gB.makeButton(notes[i], 0, 0, checkAnswer, i, i); if ((gB.width + xOffset) > 545){ xOffset = 0; yplz = (yplz + 23); }; gB.reposition((xOffset + 10), yplz); buttonAnswerChoices.addChild(gB); xOffset = (xOffset + (gB.width + 6)); }; }; }; tmp = ((notes[i].length)>18) ? (notes[i].substr(0, 18) + ".") : notes[i]; scrollPlz.addChild(simpleCheckbox(0, ((18 * i) + 18), tmp, i, fail, function (_arg1:MouseEvent):void{ var _local2:*; makeTick(); deactivated[_arg1.target.num] = ((deactivated[_arg1.target.num])==0) ? 1 : 0; _local2 = ((deactivated[_arg1.target.num])==0) ? new checkboxchecked() : new checkboxy(); _arg1.target.removeChild(_arg1.target.getChildByName("checkboxer")); _local2.x = 2; _local2.y = 4; _local2.name = "checkboxer"; _local2.mouseEnabled = false; _arg1.target.addChild(_local2); drawAnswerChoices(nicebuttons); })); }; fail = false; for (i in deactivated) { if (deactivated[i] == 1){ fail = true; }; }; scrollPlz.addChild(simpleCheckbox(0, 0, (fail) ? "Select All" : "Select None", i, fail, function (_arg1:MouseEvent):void{ var _local2:*; makeTick(); fail = false; for (_local2 in deactivated) { if (deactivated[_local2] == 1){ fail = true; }; }; if (fail){ for (_local2 in notes) { deactivated[_local2] = 0; }; } else { for (_local2 in notes) { deactivated[_local2] = 1; }; }; drawButtons(nicebuttons); })); } public function drawPitchStats(){ var _local6:*; var _local7:Sprite; statPitchOptions(); if (getChildByName("statsmess")){ removeChild(getChildByName("statsmess")); }; var _local1:Sprite = new Sprite(); _local1.name = "statsmess"; this.addChild(_local1); _local1.x = 315; _local1.y = 59; var _local2:TextField = new TextField(); _local2.defaultTextFormat = arl; _local2.embedFonts = true; _local2.textColor = 0xFFFFFF; _local2.x = 0; _local2.y = 0; _local2.width = 210; var _local3:Number = ((pitchTotalTiming)>0) ? ((optstats)<0) ? (Math.floor(((pitchTotalTiming * 100) / pitchTotal)) / 100) : (Math.floor(((pitchTiming[optstats] * 100) / pitchQuestions[optstats])) / 100) : 0; var _local4:Number = 0; if (optstats < 0){ _local2.text = ((((((((((((((("Total: " + pitchTotal) + " Streak: ") + pitchStreak) + "/") + pitchTopStreak) + "\nCorrect: ") + pitchTotalCorrect) + " Replays: ") + pitchTotalReplays) + "\nMissed: ") + pitchTotalIncorrect) + " avgOff: ") + Math.round((pitchTotalSemitonesOff / (pitchTotalIncorrect + 0.001)))) + "\nAvgTime: ") + _local3); } else { _local2.text = ((((((((((((((("Total: " + pitchQuestions[optstats]) + " Streak: ") + pitchStreaks[optstats]) + "/") + pitchTopStreaks[optstats]) + "\nCorrect: ") + pitchCorrect[optstats]) + " Replays: ") + pitchReplays[optstats]) + "\nMissed: ") + pitchIncorrect[optstats]) + " avgOff: ") + Math.round((pitchSemitonesOff[optstats] / (pitchIncorrect[optstats] + 0.001)))) + "\nAvgTime: ") + _local3); }; _local2.mouseEnabled = false; _local2.selectable = false; _local1.addChild(_local2); var _local5:Sprite = new Sprite(); _local5.name = "txt"; _local1.addChild(_local5); for (_local6 in notesList) { _local2 = tff(notesList[_local6], ((15 * _local6) + 15), 127, 0xFFFFFF, 25, 25); trace("x"); _local2.rotation = 90; _local5.addChild(_local2); _local7 = new statbars(); _local7.x = (15 * _local6); _local7.y = 120; if (optstats < 0){ _local7.height = ((1 - (pitchIncorrect[_local6] / (pitchQuestions[_local6] + 0.0001))) * 50); _local2 = tff(((Math.round(((1 - (pitchIncorrect[_local6] / (pitchQuestions[_local6] + 1E-5))) * 10000)) / 100) + "%"), ((15 * _local6) + 14), 81, 0, 50, 25); } else { _local7.height = ((pitchConfused[optstats][_local6] / (pitchIncorrect[optstats] + 0.0001)) * 50); _local2 = tff(((Math.round(((pitchConfused[optstats][_local6] / (pitchIncorrect[optstats] + 1E-5)) * 10000)) / 100) + "%"), ((15 * _local6) + 14), 81, 0, 50, 25); }; _local7.width = 10; _local5.addChild(_local7); _local2.rotation = 90; _local5.addChild(_local2); }; } public function mq(){ if (questionIndex < 0){ return; }; if (questionType == 0){ playSequence(new Array(num, questionIndex, new Array(num, (num + questionIndex)), 0, (-1 * questionIndex)), new Array(qspeed, qspeed, qspeed, qspeed, qspeed)); return; }; if (questionType == 1){ playSequence(new Array(num, questionIndex), new Array(qspeed, qspeed)); } else { if (questionType == 2){ playSequence(new Array(num, (questionIndex * -1)), new Array(qspeed, qspeed)); } else { if (questionType == 3){ playSequence(new Array(new Array(num, (num + questionIndex))), new Array()); }; }; }; trace(((((((("question type " + questionType) + " optionsDescIndex=") + optionsHarmonicIndex) + " optselect:") + optselect) + " ascF:") + ascF)); if (optionsTypes[optionsTypesIndex] == "Intervals: Solfege Buttons"){ notes = ((((((((questionType < 2)) && (!((optionsDescIndex == 2))))) || ((((questionType == 3)) && ((optionsHarmonicIndex == 0)))))) || ((((questionType == 2)) && ((optionsDescIndex == 1)))))) ? optionsNoteLocation : optionsNoteLocationDesc; drawButtons(); } else { if (optionsTypes[optionsTypesIndex] == "Intervals: Song Buttons"){ notes = songButtons((((((((questionType < 2)) && (!((optionsDescIndex == 2))))) || ((((questionType == 3)) && ((optionsHarmonicIndex == 0)))))) || ((((questionType == 2)) && ((optionsDescIndex == 1)))))); drawButtons(false); }; }; } public function statOptions(){ var i:*; if (noob){ return; }; if (getChildByName("statOptionsMess")){ removeChild(getChildByName("statOptionsMess")); }; var statOptionsMess:Sprite = new Sprite(); statOptionsMess.name = "statOptionsMess"; this.addChild(statOptionsMess); var gB:googleButton = new googleButton(); statOptionsMess.x = 287; statOptionsMess.y = 0; statOptionsMess.addChild(tff("Statistics", 30, 0, 0xDDDDDD, 90, 14)); var foo:Array = intervalSet; num3 = 0; var yplz:Number = 20; for (i in notes) { if (++num3 > 6){ num3 = 1; yplz = (yplz + 20); }; statOptionsMess.addChild(simpleButton(foo[i], (27 * num3), yplz, 0, 24, 16, ((optstats)==i) ? 0xDDDDDD : 0x999999, function (_arg1:MouseEvent):void{ makeTick(); optstats = _arg1.target.num; drawStats(); statOptions(); }, ("noh" + i), i)); }; statOptionsMess.addChild(simpleButton("All", (27 * ++num3), yplz, 0, 24, 16, ((optstats)==-1) ? 0xDDDDDD : 0x999999, function (_arg1:MouseEvent):void{ makeTick(); optstats = _arg1.target.num; drawStats(); statOptions(); }, "noh-1", -1)); } public function parseStats(_arg1:String){ var _local2:Array; var _local3:RegExp; var _local4:Number; var _local5:String; var _local6:String; var _local7:String; var _local8:String; var _local9:String; var _local10:String; var _local11:String; var _local12:String; var _local13:String; var _local14:String; var _local15:String; var _local16:String; var _local17:String; var _local18:String; var _local19:String; var _local20:*; _local3 = /./mg; _local2 = _arg1.match(_local3); _local4 = 0; _local5 = ""; _local6 = ""; _local7 = ""; _local8 = ""; _local9 = ""; _local10 = ""; _local11 = ""; _local12 = ""; _local13 = ""; _local14 = ""; _local15 = ""; _local16 = ""; _local17 = ""; _local18 = ""; _local19 = ""; _local20 = 0; while (_local20 < _local2.length) { if (_local2[_local20] == "|"){ _local4++; } else { if (_local4 == 0){ _local5 = (_local5 + _local2[_local20]); } else { if (_local4 == 1){ _local6 = (_local6 + _local2[_local20]); } else { if (_local4 == 2){ _local7 = (_local7 + _local2[_local20]); } else { if (_local4 == 3){ _local8 = (_local8 + _local2[_local20]); } else { if (_local4 == 4){ _local9 = (_local9 + _local2[_local20]); } else { if (_local4 == 5){ _local10 = (_local10 + _local2[_local20]); } else { if (_local4 == 6){ _local11 = (_local11 + _local2[_local20]); } else { if (_local4 == 7){ _local12 = (_local12 + _local2[_local20]); } else { if (_local4 == 8){ _local13 = (_local13 + _local2[_local20]); } else { if (_local4 == 9){ _local14 = (_local14 + _local2[_local20]); } else { if (_local4 == 10){ _local15 = (_local15 + _local2[_local20]); } else { if (_local4 == 11){ _local16 = (_local16 + _local2[_local20]); } else { if (_local4 == 12){ _local17 = (_local17 + _local2[_local20]); } else { if (_local4 == 13){ _local18 = (_local18 + _local2[_local20]); } else { if (_local4 == 14){ _local19 = (_local19 + _local2[_local20]); }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; _local20++; }; total = int(_local5); totalmisses = int(_local6); totalcorrect = int(_local7); totalreplays = int(_local8); totaltiming = int(_local9); streak = int(_local10); topstreak = int(_local11); streaks = strToArray(_local12); timing = strToArray(_local13); topstreaks = strToArray(_local14); replays = strToArray(_local15); questions = strToArray(_local16); correct = strToArray(_local17); misses = strToArray(_local18); incorrect = str2dToArray(_local19); } public function newQuestion(){ var _local1:Date = new Date(); lastplaytime = _local1.getTime(); firstMiss = -1; replayback = -1; missed = false; countedCorrectAlready = false; pianoflag = false; clearStaff(); gp(); mq(); clearDots(); addDot(num, "green", new greendot()); if (optionsTypes[optionsTypesIndex] != "Listen Mode"){ drawMenu(); if (repeatTimeout != 0){ autoRepeat(); }; }; } public function drawStats(){ var _local4:Number; var _local6:Number; var _local8:*; var _local9:Sprite; if (noob){ return; }; if (getChildByName("statsmess")){ removeChild(getChildByName("statsmess")); }; var _local1:Sprite = new Sprite(); _local1.name = "statsmess"; this.addChild(_local1); _local1.x = 315; _local1.y = 59; var _local2:TextField = new TextField(); _local2.defaultTextFormat = arl; _local2.embedFonts = true; _local2.textColor = 0xDDDDDD; _local2.x = 0; _local2.y = 0; _local2.width = 210; var _local3:DropShadowFilter = new DropShadowFilter(1, 45, 0x888888, 0xFF, 2, 1, 1, 1); _local2.filters = [_local3]; if (optstats < 0){ if (total > 0){ _local4 = (Math.floor(((totaltiming * 100) / total)) / 100); } else { _local4 = 0; }; } else { if (questions[optstats] > 0){ _local4 = (Math.floor(((timing[optstats] * 100) / questions[optstats])) / 100); } else { _local4 = 0; }; }; var _local5:Number = skipped; if (_local5 == -1){ _local5 = 0; }; if (optstats < 0){ if (total == 0){ _local6 = 0; } else { _local6 = (Math.round(((totalcorrect / total) * 1000)) / 10); }; } else { if (questions[optstats] == 0){ _local6 = 0; } else { _local6 = (Math.round(((correct[optstats] / questions[optstats]) * 1000)) / 10); }; }; if (optstats < 0){ _local2.text = ((((((((((((((((((((("Total: " + total) + " Streak: ") + streak) + "/") + topstreak) + "\nCorrect: ") + totalcorrect) + " Replays: ") + totalreplays) + "\nMissed: ") + totalmisses) + " AVGtime: ") + _local4) + "\nSkipped: ") + _local5) + " Score: ") + _local6) + "\nAsc Miss: ") + ascmissesTotal) + " Desc: ") + descmissesTotal); } else { _local2.text = ((((((((((((((((((((("Total: " + questions[optstats]) + " Streak: ") + streaks[optstats]) + "/") + topstreaks[optstats]) + "\nCorrect: ") + correct[optstats]) + " Replays: ") + replays[optstats]) + "\nMissed: ") + misses[optstats]) + " AVGtime: ") + _local4) + "\nSkipped: ") + skippedlist[optstats]) + " Score: ") + _local6) + "\nAsc Miss: ") + ascmisses[optstats]) + " Desc: ") + descmisses[optstats]); }; _local2.mouseEnabled = false; _local2.selectable = false; _local1.addChild(_local2); var _local7:Sprite = new Sprite(); _local7.name = "txt"; _local1.addChild(_local7); for (_local8 in notes) { _local2 = tff(intervalSet[_local8], ((15 * _local8) + 15), 127, 7842542, 25, 25); _local2.rotation = 90; _local7.addChild(_local2); _local9 = new statbars(); _local9.x = (15 * _local8); _local9.y = 120; if (optstats < 0){ _local9.height = ((1 - (misses[_local8] / (questions[_local8] + 0.0001))) * 50); _local2 = tff(((Math.round(((1 - (misses[_local8] / (questions[_local8] + 1E-5))) * 1000)) / 10) + "%"), ((15 * _local8) + 14), 81, 14544639, 50, 25); } else { _local9.height = ((incorrect[optstats][_local8] / (misses[optstats] + 0.0001)) * 50); _local2 = tff(((Math.round(((incorrect[optstats][_local8] / (misses[optstats] + 1E-5)) * 1000)) / 10) + "%"), ((15 * _local8) + 14), 81, 0xFF00, 50, 25); }; _local9.width = 10; _local7.addChild(_local9); _local2.rotation = 90; _local7.addChild(_local2); }; } public function playAssociationFiltered(_arg1):void{ if (optionsDescIndex == 0){ playAssociation(_arg1, ascF, num); } else { if ((((optionsDescIndex == 1)) && (!(ascF)))){ playAssociation(_arg1, !(ascF), (num - questionIndex)); } else { if ((((optionsDescIndex == 2)) && (ascF))){ playAssociation(_arg1, !(ascF), (num + questionIndex)); } else { rep(); }; }; }; } public function playSequenceText(_arg1:String, _arg2:String){ var _local3:RegExp = /\-?\d+/g; if (num < 0){ num = anchorNote; }; arr[0] = num; var _local4:Array = new Array(); _local4 = intPlz(_arg1.match(_local3)); _local4[0] = num; playSequence(_local4, intPlz(_arg2.match(_local3))); } public function array2dToStr(_arg1:Array){ var _local2:String; var _local3:*; var _local4:*; _local2 = ""; _local3 = 0; while (_local3 < _arg1.length) { _local4 = 0; while (_local4 < _arg1.length) { _local2 = (_local2 + (_arg1[_local3][_local4] + ",")); _local4++; }; _local2 = (_local2 + "@"); _local3++; }; return (_local2); } public function resetSongs(){ asc = new Array(new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array()); dsc = new Array(new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array()); } public function listenVoice1(_arg1:Event){ var evt = _arg1; lolTimer(listenAnswerTimeout, 1, function (_arg1:TimerEvent):void{ var event = _arg1; playSequence(new Array(absoluteAnswer, "s"), new Array(qspeed, 8)); callback = function (){ lolTimer(listenTimeout, 1, function (_arg1:TimerEvent):void{ listenVoice(); }); }; }); } public function rememberStats(){ var _local1:String; _local1 = ""; _local1 = (_local1 + (total + "|")); _local1 = (_local1 + (totalmisses + "|")); _local1 = (_local1 + (totalcorrect + "|")); _local1 = (_local1 + (totalreplays + "|")); _local1 = (_local1 + (totaltiming + "|")); _local1 = (_local1 + (streak + "|")); _local1 = (_local1 + (topstreak + "|")); _local1 = (_local1 + (arrayToStr(streaks) + "|")); _local1 = (_local1 + (arrayToStr(timing) + "|")); _local1 = (_local1 + (arrayToStr(topstreaks) + "|")); _local1 = (_local1 + (arrayToStr(replays) + "|")); _local1 = (_local1 + (arrayToStr(questions) + "|")); _local1 = (_local1 + (arrayToStr(correct) + "|")); _local1 = (_local1 + (arrayToStr(misses) + "|")); _local1 = (_local1 + (array2dToStr(incorrect) + "|")); return (_local1); } public function assignInstrument(_arg1:Event):void{ makeTick(); root[_arg1.target.name] = _arg1.target.selectedIndex; instrumentAssign(); removeChild(getChildByName("overlay")); disablekeys = false; } public function editSong(_arg1:Event, _arg2, _arg3, _arg4=true, _arg5=true){ var blah2:TextField; var blah:TextField; var blah1:TextField; var evt = _arg1; var attach = _arg2; var i = _arg3; var ascFlag = _arg4; var edit = _arg5; var editScreen:Sprite = new Sprite(); attach.addChild(editScreen); editScreen.graphics.beginFill(0); editScreen.graphics.drawRoundRect(5, 5, 540, 390, 10, 10); editScreen.graphics.endFill(); editScreen.alpha = 0.9; editScreen.name = "editScreen"; editScreen.graphics.beginFill(3368601); editScreen.graphics.drawRoundRect(130, 90, 300, 200, 5, 5); editScreen.graphics.endFill(); editScreen.addChild(tff("\n\nNotes:\n\n\n\nSpeed:", 135, 95, 0xFFFFFF, 200, 200)); blah2 = new TextField(); var _local7 = tff((edit) ? (ascFlag) ? (asc[evt.target.num][ascselected[evt.target.num]][0] + "\n\nNotes:\n\n\n\nSpeed:") : (dsc[evt.target.num][dscselected[evt.target.num]][0] + "\n\nNotes:\n\n\n\nSpeed:") : ("Untitled song for " + properIntervalSet[evt.target.num]), 135, 95, 0, 250, 20, false, true, 0xFFFFFF); blah2 = _local7; editScreen.addChild(_local7); blah = new TextField(); _local7 = tff((edit) ? (ascFlag) ? asc[evt.target.num][ascselected[evt.target.num]][1] : dsc[evt.target.num][dscselected[evt.target.num]][1] : (ascFlag) ? ("0," + (evt.target.num + 1)) : ("0,-" + (evt.target.num + 1)), 135, 140, 0, 250, 20, "thenotes", true, 0xFFFFFF); blah = _local7; editScreen.addChild(_local7); blah1 = new TextField(); _local7 = tff((edit) ? (ascFlag) ? asc[evt.target.num][ascselected[evt.target.num]][2] : dsc[evt.target.num][dscselected[evt.target.num]][2] : "2,2", 135, 190, 0, 250, 20, "thespeeds", true, 0xFFFFFF); blah1 = _local7; editScreen.addChild(_local7); editScreen.addChild(simpleButton("Play", 135, 230, 0, 30, 17, 6723891, function (_arg1:MouseEvent):void{ playSequenceText(blah.text, blah1.text); }, false, evt.target.num)); editScreen.addChild(simpleButton("Save", 170, 230, 0, 30, 17, 10053171, function (_arg1:MouseEvent):void{ makeTick(); if (ascFlag){ if (edit){ ascParseValues(blah2.text, blah.text, blah1.text, _arg1.target.num); } else { ascNewSong(blah2.text, blah.text, blah1.text, _arg1.target.num); }; } else { if (edit){ dscParseValues(blah2.text, blah.text, blah1.text, _arg1.target.num); } else { dscNewSong(blah2.text, blah.text, blah1.text, _arg1.target.num); }; }; removeChild(attach); makeAMess(); }, false, evt.target.num)); editScreen.addChild(simpleButton("Close", 205, 230, 0, 30, 17, 10040166, function (_arg1:MouseEvent):void{ makeTick(); attach.removeChild(attach.getChildByName("editScreen")); }, false, i)); if (edit){ editScreen.addChild(simpleButton("Delete", 250, 230, 0, 50, 17, 10040166, function (_arg1:MouseEvent):void{ makeTick(); if (ascFlag){ asc[_arg1.target.num].splice(ascselected[_arg1.target.num], 1); } else { dsc[_arg1.target.num].splice(dscselected[_arg1.target.num], 1); }; if (ascFlag){ ascselected[_arg1.target.num] = 0; } else { dscselected[_arg1.target.num] = 0; }; removeChild(attach); makeAMess(); }, false, evt.target.num)); } else { editScreen.addChild(simpleButton("Make Default", 260, 230, 0, 80, 17, 3381606, function (_arg1:MouseEvent):void{ makeTick(); ascNewSong(blah2.text, blah.text, blah1.text, _arg1.target.num); ascselected[_arg1.target.num] = (asc[_arg1.target.num].length - 1); removeChild(attach); makeAMess(); }, false, evt.target.num)); }; } public function breakDown(){ var chordBreakdown:Sprite; var blah1:TextField; var blah4:TextField; var blah3:TextField; var blah2:TextField; var foo:Array; if (getChildByName("chordBreakdown")){ removeChild(getChildByName("chordBreakdown")); }; chordBreakdown = new Sprite(); chordBreakdown.x = 100; chordBreakdown.y = 100; chordBreakdown.name = "chordBreakdown"; chordBreakdown.graphics.beginFill(3368601); chordBreakdown.graphics.drawRoundRect(0, 0, 300, 350, 3, 3); chordBreakdown.graphics.endFill(); chordBreakdown.addChild(tff1("Randomized Chord Maker: Listen Mode", 5, 5, 0xFFFFFF, 250, 20)); chordBreakdown.addChild(tff("How many notes in the chord?", 8, 30, 0xFFFFFF, 300, 20)); chordBreakdown.addChild(tff1("Min: ", 8, 48, 0xFFFFFF, 40, 20)); blah1 = tff("4", 48, 48, 0, 50, 20, false, true, 0xFFFFFF); chordBreakdown.addChild(blah1); chordBreakdown.addChild(tff1("Max: ", 100, 48, 0xFFFFFF, 40, 20)); blah4 = tff("4", 140, 48, 0, 50, 20, false, true, 0xFFFFFF); chordBreakdown.addChild(blah4); chordBreakdown.addChild(tff("Min range of chord (semitones)?", 8, 95, 0xFFFFFF, 300, 20)); blah3 = tff("0", 8, 115, 0, 50, 20, false, true, 0xFFFFFF); chordBreakdown.addChild(blah3); chordBreakdown.addChild(tff("Max range of chord (semitones)?", 8, 135, 0xFFFFFF, 300, 20)); blah2 = tff("12", 8, 155, 0, 50, 20, false, true, 0xFFFFFF); chordBreakdown.addChild(blah2); num3 = 0; foo = new Array("Only chord before breakdown", "Play First Note Too", "Play Last Note Too"); chordBreakdown.addChild(makeDropDown(8, 195, foo, num3, function (_arg1:Event):void{ num3 = _arg1.target.selectedIndex; }, 200)); disablekeys = true; chordBreakdown.addChild(simpleButton(" Start Listen Mode", 66, 250, 0xFFFFFF, 105, 17, 10053171, function (_arg1:MouseEvent):void{ var _local2:*; makeTick(); triadBreakdown(int(blah1.text), int(blah4.text), int(blah3.text), int(blah2.text), num3); _local2 = Sprite(getChildByName("chordBreakdown")); removeChild(_local2); disablekeys = false; })); addChild(chordBreakdown); } public function listenIntervals():void{ newQuestion(); addDot(absoluteAnswer, "blue", new bluedot()); addNote(absoluteAnswer); callback = songCallback; } public function drawPiano(_arg1, _arg2, _arg3){ var _local8:Sprite; var _local9:Sprite; if (getChildByName("showPiano")){ removeChild(getChildByName("showPiano")); }; var _local4:Sprite = new Sprite(); _local4.name = "showPiano"; this.addChild(_local4); var _local5:Number = 0; var _local6:Number = 2; var _local7:Array = new Array(true, false, true, true, false, true, true); var _local10:Boolean; var _local11:Number = 0; while (true) { _local9 = addPianoNote(false, (_arg1 + _local5), _arg2, _local11); _local4.addChild(_local9); if (_local10){ _local4.swapChildren(_local9, _local8); }; ++_local11; if (_local11 > _arg3){ break; }; var _temp1 = _local6; _local6 = (_local6 + 1); if (_local7[_temp1]){ _local8 = addPianoNote(true, ((_arg1 + 13) + _local5), (_arg2 - 2), _local11); _local4.addChild(_local8); _local10 = true; _local11++; } else { _local10 = false; }; if (_local11 > _arg3){ break; }; if (_local6 > (_local7.length - 1)){ _local6 = 0; }; _local5 = (_local5 + 17); }; } public function drawScale(){ var _local3:Array; var _local4:Array; var _local5:Sprite; var _local7:int; var _local8:*; if (keySignature[optKey] == "Key of C"){ return; }; var _local1:Boolean = keySignatureDefinitions[optKey][1]; var _local2:int = keySignatureDefinitions[optKey][2]; if (_local1 == true){ _local3 = clone(flatsTreble); _local4 = clone(flatsBass); } else { _local3 = clone(sharpsTreble); _local4 = clone(sharpsBass); }; var _local6:* = 0; while (_local6 < _local2) { _local7 = (_local1) ? -3 : 0; _local5 = (_local1) ? new flat() : new ksharp(); _local5.x = (43 + (drawScaleOffset * 8)); for (_local8 in mapNotes) { if (mapNotes[_local8][0] == _local3[_local6]){ break; }; }; _local5.y = (mapNotes[_local8][1] + _local7); staffContainer.addChild(_local5); _local5 = (_local1) ? new flat() : new ksharp(); _local5.x = (43 + (drawScaleOffset * 8)); for (_local8 in mapNotes) { if (mapNotes[_local8][0] == _local4[_local6]){ break; }; }; _local5.y = (mapNotes[_local8][1] + _local7); staffContainer.addChild(_local5); drawScaleOffset++; _local6++; }; } public function bigButtons(_arg1, _arg2, _arg3, _arg4:Function){ teh = new buttonpl0x(); tehbutt = new nicebutton(); teh.addChild(tehbutt); teh.swapChildren(tehbutt, teh.tf); teh.x = _arg2; teh.y = _arg3; teh.tf.text = _arg1; teh.removeChild(teh.tf1); teh.buttonMode = true; teh.addEventListener(MouseEvent.CLICK, _arg4); return (teh); } public function playSong(_arg1:Boolean=false){ var _local2:Date; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Array; var _local7:Number; var _local8:Number; var _local9:String; var _local10:Boolean; singleMode = _arg1; clearStaff(); smMissed = false; firstMiss = -1; _local2 = new Date(); lastplaytime = _local2.getTime(); _local3 = 0; _local4 = 0; drawMenu(); _local5 = 0; if (smQueue.length > 0){ sequence = clone(smQueue); smQueue = new Array(); } else { sequence = new Array(); }; backupSequence = new Array(); questionType = optselect; _local6 = new Array(); _local6.push(0); _local7 = 0; _local8 = 0; if (_arg1){ _local5 = generateInterval(); }; while (++_local3 < songmodesongs) { if (!_arg1){ _local5 = generateInterval(); }; if (((((((!((questionType == 1))) && (!((questionType == 2))))) && (!((questionType == 3))))) && ((Math.round(Math.random()) == 1)))){ _local5 = (_local5 * -1); } else { if (questionType == 2){ _local5 = (_local5 * -1); }; }; if (((((_local4 + _local5) >= notesAvailable)) || (((_local4 + _local5) <= -(notesAvailable))))){ _local5 = (_local5 * -1); }; _local4 = (_local4 + _local5); if (_local4 < _local7){ _local7 = _local4; }; if (_local4 > _local8){ _local8 = _local4; }; _local6.push(_local5); trace(((((("questionType: " + questionType) + " k=") + _local4) + " out=") + _local5)); }; if (_local7 < 0){ _local7 = (_local7 * -1); }; startplz = rand(_local7, (notesAvailable - _local8)); _local6[0] = startplz; addNote(startplz); clearDots(); addDot(startplz, "green", new greendot()); songModeIndex = 0; trace(((("Lowest: " + _local7) + " Highest: ") + (notesAvailable - _local8))); _local4 = 0; _local3 = 0; while (_local3 < _local6.length) { if (((((_local4 + _local6[_local3]) > notesAvailable)) || (((_local4 + _local6[_local3]) < 0)))){ _local6[_local3] = (_local6[_local3] * -1); }; _local4 = (_local4 + _local6[_local3]); sequence.push(_local4); backupSequence.push(_local4); _local3++; }; trace(_local6); trace(sequence); ascF = false; if (backupSequence[songModeIndex] < backupSequence[(songModeIndex + 1)]){ ascF = true; }; absoluteAnswer = backupSequence[(songModeIndex + 1)]; num = backupSequence[songModeIndex]; if (questionType != 3){ questionType = (ascF) ? 1 : 2; }; num = backupSequence[songModeIndex]; answer = (Math.abs((backupSequence[(songModeIndex + 1)] - backupSequence[songModeIndex])) - 1); questionIndex = (answer + 1); if (optionsTypes[lastIntervalIndex] == "Intervals: Solfege Buttons"){ notes = ((((((((questionType < 2)) && (!((optionsDescIndex == 2))))) || ((((questionType == 3)) && ((optionsHarmonicIndex == 0)))))) || ((((questionType == 2)) && ((optionsDescIndex == 1)))))) ? optionsNoteLocation : optionsNoteLocationDesc; drawButtons(); } else { if (optionsTypes[lastIntervalIndex] == "Intervals: Song Buttons"){ notes = songButtons((((((((questionType < 2)) && (!((optionsDescIndex == 2))))) || ((((questionType == 3)) && ((optionsHarmonicIndex == 0)))))) || ((((questionType == 2)) && ((optionsDescIndex == 1)))))); drawButtons(false); }; }; if (optionsTypes[optionsTypesIndex] == "Sight Singing"){ playSequence(new Array(sequence[0], "s"), new Array(), false); } else { if (questionType == 3){ playSequence(new Array(sequence), new Array(), false); } else { _local9 = smPlay[smPlayIndex]; _local10 = ((smBreakDownIndex)==0) ? true : false; if (_local9 == "Normal Song Mode"){ playSequence(sequence, new Array(), false); } else { if (_local9 == "Breakdown Song"){ playSequence(breakDownSong(sequence, _local10), new Array(), false); } else { if (_local9 == "Play Normal Then Broken Down"){ sequence.push("s"); playSequence(sequence.concat(breakDownSong(backupSequence, _local10)), new Array(), false); } else { if (_local9 == "Play Broken Down Then Normal"){ sequence.unshift("s"); playSequence(breakDownSong(backupSequence, _local10).concat(sequence), new Array(), false); }; }; }; }; }; }; } public function dropDownWithText(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9=100, _arg10=""){ _arg7.addChild(tff(_arg1, _arg3, _arg4, 0, 130, 20)); _arg7.addChild(makeDropDown(_arg3, (_arg4 + 17), _arg5, _arg6, _arg8, _arg9, _arg10)); } public function dscNewSong(_arg1:String, _arg2:String, _arg3:String, _arg4:Number){ var _local5:RegExp = /\-?\d+/g; dsc[_arg4].push(new Array(sanitize(_arg1), intPlz(_arg2.match(_local5)), intPlz(_arg3.match(_local5)))); } public function genericWin(){ goodJobBro(); feedback.text = "Correct!\n\nAnother question is automatically loaded."; playNext(); } public function ascParseValues(_arg1:String, _arg2:String, _arg3:String, _arg4:Number){ var _local5:RegExp = /\-?\d+/g; asc[_arg4][ascselected[_arg4]][0] = sanitize(_arg1); asc[_arg4][ascselected[_arg4]][1] = intPlz(_arg2.match(_local5)); asc[_arg4][ascselected[_arg4]][2] = intPlz(_arg3.match(_local5)); } public function harmonicFunc(_arg1:Event){ var _local2:* = 0; while (_local2 < harmonicNotes.length) { harmonicNotes[_local2].getChan().stop(); harmonicNotes[_local2].gimmie().stop(); _local2++; }; harmonicNotes = new Array(); } public function tff1(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7=false, _arg8=true, _arg9=false, _arg10=false){ var _local13:TextFormat; var _local11:TextField = new TextField(); if (_arg7 != false){ _local13 = new TextFormat("Arial", _arg7); _local11.defaultTextFormat = _local13; }; var _local12:TextFormat = new TextFormat("Arial", 12); _local12.bold = true; _local11.defaultTextFormat = _local12; _local11.border = _arg9; _local11.width = _arg5; _local11.height = _arg6; if (_arg9){ _local11.type = TextFieldType.INPUT; _local11.borderColor = 0; }; _local11.textColor = _arg4; _local11.x = _arg2; _local11.y = _arg3; _local11.wordWrap = _arg8; _local11.text = _arg1; _local11.mouseEnabled = _arg9; _local11.selectable = _arg9; if (_arg10 != false){ _local11.background = true; _local11.backgroundColor = _arg10; }; return (_local11); } public function drawAnswerChoices(_arg1){ var _local8:Boolean; var _local9:googleButton; var _local10:*; var _local2:String = optionsTypes[optionsTypesIndex]; if ((((((((((_local2 == "Note Comparison")) || ((_local2 == "Sight Singing")))) || ((_local2 == "Note Comparison: Tuning")))) || (!((_local2.match("Listen") == null))))) || ((_local2 == "Speed Math")))){ return; }; var _local3:Sprite = Sprite(getChildByName("buttonmess")); _local3.removeChild(_local3.getChildByName("buttonAnswerChoices")); var _local4:Sprite = new Sprite(); _local4.name = "buttonAnswerChoices"; _local3.addChild(_local4); var _local5:Number = 245; var _local6:Number = 0; var _local7:Number = 0; for (_local10 in notes) { _local8 = (deactivated[_local10] == 1); if (_local8 == false){ if (_arg1){ if (_local7 > 6){ _local7 = 0; _local5 = (_local5 + 55); }; var _temp1 = _local7; _local7 = (_local7 + 1); _local4.addChild(niceButton(((_temp1 * 65) + 20), _local5, notes[_local10], _local10, checkAnswer)); } else { _local9 = new googleButton(); _local9.makeButton(notes[_local10], 0, 0, checkAnswer, _local10, _local10); if ((_local9.width + _local6) > 545){ _local6 = 0; _local5 = (_local5 + 23); }; _local9.reposition((_local6 + 10), _local5); _local4.addChild(_local9); _local6 = (_local6 + (_local9.width + 6)); }; }; }; } public function changePreset(_arg1:Event):void{ var _local3:*; makeTick(); removeChild(getChildByName("overlay")); disablekeys = false; var _local2:String = optionsTypes[optionsTypesIndex]; if ((((_local2.substr(0, 9) == "Intervals")) || ((_local2.substr(0, 9) == "Song Mode")))){ optLevelPresets = _arg1.target.selectedIndex; if (intervalPresetsBuiltSettings[optLevelPresets][2]){ optionsTypesIndex = optionsTypes.indexOf("Song Mode"); } else { if (_local2.substr(0, 9) != "Intervals"){ if (optionsTypes[lastIntervalIndex] == "Intervals: Song Buttons"){ optionsTypesIndex = optionsTypes.indexOf("Intervals: Song Buttons"); } else { if (optionsTypes[lastIntervalIndex] == "Intervals: Solfege Buttons"){ optionsTypesIndex = optionsTypes.indexOf("Intervals: Solfege Buttons"); } else { if (optionsTypes[lastIntervalIndex] == "Intervals"){ optionsTypesIndex = optionsTypes.indexOf("Intervals"); } else { optionsTypesIndex = optionsTypes.indexOf("Intervals: Song Buttons"); }; }; }; }; }; optselect = intervalPresetsBuiltSettings[optLevelPresets][1]; for (_local3 in notes) { deactivated[_local3] = 1; }; for (_local3 in intervalPresetsBuiltSettings[optLevelPresets][0]) { deactivated[(intervalPresetsBuiltSettings[optLevelPresets][0][_local3] - 1)] = 0; }; drawOptions(); if (optionsTypes[lastIntervalIndex] == "Intervals: Song Buttons"){ drawButtons(false); } else { drawButtons(false); }; }; } public function str2dToArray(_arg1:String){ var _local2:Array; var _local3:Array; var _local4:RegExp; var _local5:*; _local2 = new Array(); _local3 = new Array(); _local4 = /[^@\|]+/g; _local3 = _arg1.match(_local4); _local5 = 0; while (_local5 < _local3.length) { _local2.push(strToArray(_local3[_local5])); _local5++; }; return (_local2); } public function showLinks(){ var overlay:Sprite; var k:*; if (getChildByName("overlay")){ removeChild(getChildByName("overlay")); }; disablekeys = true; overlay = new Sprite(); addChild(overlay); overlay.name = "overlay"; overlay.graphics.beginFill(0x222222); overlay.graphics.drawRoundRect(5, 5, 540, 490, 10, 10); overlay.graphics.endFill(); var offsetx:Number = 0; var offsety:Number = 0; var links:Array = new Array(" Ear Training Links", new Array(new Array(" Trainear.com: Donate if you Like!", "http://www.trainear.com/"), new Array(" More Free Ear Training Software", "http://www.trainear.com/Ear_Training_Software_Comparison_07_2008.php")), " My Other Flash Apps", new Array(new Array(" Flash Speed Math Trainer", "http://www.jimmyr.com/blog/Speed_Math_Trainer_Program_126_2006.php"), new Array(" Flash Hearing Test", "http://www.jimmyr.com/blog/hearingloss.html")), " My Websites", new Array(new Array(" Digg, Reddit, Delicious Mashup", "http://www.jimmyr.com/"), new Array(" Follow Me on Youtube", "http://www.youtube.com/subscription_center?add_user=JimmyRcom"), new Array(" Follow Me on Twitter", "http://twitter.com/JimmyRcom"), new Array(" Follow Me on Facebook", "http://www.facebook.com/people/Jimmy-Ruska/687340710"), new Array(" Free Online Roleplay", "http://www.eliteskills.com/rp/"), new Array(" Free Tech Video Tutorials", "http://youtube.jimmyr.com/"), new Array(" Free Flash Cards App", "http://www.buildquiz.com/"), new Array(" Free Education Online", "http://education.jimmyr.com/"), new Array(" Writing Community", "http://www.eliteskills.com/"), new Array(" Download mp3s Free", "http://www.jimmyr.com/mp3_search.php"), new Array(" Funny Pictures Blog", "http://blog.jimmyr.com/"), new Array(" Free Streaming Anime", "http://www.crawlanime.com/"), new Array(" Firefox Translate Extension", "http://blog.jimmyr.com/Unofficial_Google_Translate_Firefox_Extension_05_2008.php"))); var offset2:Number = 10; var q:* = 0; while (q < links.length) { overlay.addChild(simpleButton(links[q], (10 + offsetx), ((10 + offset2) + offsety), 0xFFFFFF, 200, 17, 0x333333, function (_arg1:MouseEvent):void{ trace("test1"); })); offset2 = (offset2 + 20); q = (q + 1); k = 0; while (k < links[q].length) { overlay.addChild(simpleButton(links[q][k][0], (10 + offsetx), ((10 + offset2) + offsety), 2267647, 190, 17, 0x444444, function (_arg1:MouseEvent):void{ navigateToURL(new URLRequest(_arg1.target.name), "_blank"); }, links[q][k][1])); offset2 = (offset2 + 20); k = (k + 1); }; q = (q + 1); }; overlay.addChild(simpleButton("Exit", 230, 360, 0xFFFFFF, 30, 17, 0, function (_arg1:MouseEvent):void{ makeTick(); removeChild(overlay); disablekeys = false; })); overlay.addChild(tff1("Find the latest version of this program at the official website (trainear.com). Donate if you like it!\n\n\nDo you like this ear trainer? Checkout my other work, it's all not-for-profit useful goodness.", 250, 15, 0xFFFFFF, 250, 400, 16)); } public function triadBreakdown(_arg1:Number=3, _arg2:Number=3, _arg3:Number=0, _arg4:Number=12, _arg5:Number=0):void{ var quant:uint; var triad:Array; var tot:Number; var tmp:Number; var k:*; var foo:Array; var i:*; var howMany = _arg1; var howManyMax = _arg2; var min = _arg3; var maxLen = _arg4; var hint = _arg5; quant = rand(howMany, howManyMax); triad = new Array(); tot = 0; tmp = 0; k = 0; while (k < (quant - 1)) { var _local7 = ((k)==0) ? rand(1, (maxLen - (quant - 2))) : rand(1, (maxLen - tot)); tmp = _local7; tot = (tot + _local7); triad.push(tmp); k = (k + 1); }; if (tot < min){ tot = min; }; triad.unshift(rand(0, (notesAvailable - tot))); triad = relativeToAbsolute(triad); if ((triad[(triad.length - 1)] - triad[0]) < min){ triad[(triad.length - 1)] = (triad[0] + min); }; clearStaff(); clearDots(); feedback.text = ""; for (k in triad) { addNote(triad[k]); addDot(triad[k], "yellow", new yellowDot()); }; foo = absoluteToRelativeTonic(clone(triad)); for (i in foo) { if (i == 0){ feedback.text = "Relative: Tonic, "; } else { feedback.appendText((intervalName(foo[i]) + ", ")); }; }; feedback.text = feedback.text.substr(0, -2); foo = absoluteToRelative(clone(triad)); feedback.appendText("\n\n"); for (i in foo) { if (i == 0){ feedback.appendText("Absolute: Root, "); } else { feedback.appendText((intervalName(foo[i]) + ", ")); }; }; feedback.text = feedback.text.substr(0, -2); if (hint == 0){ playSequence(new Array(clone(triad)), new Array()); } else { if (hint == 1){ playSequence(new Array(clone(triad), "s", triad[0]), new Array(), false); } else { if (hint == 2){ playSequence(new Array(clone(triad), "s", triad[(triad.length - 1)]), new Array(), false); }; }; }; callback = function ():void{ intervalId = setTimeout(function ():void{ playSequence(clone(triad).concat(new Array("s", clone(triad))), new Array(), false); callback = function (){ intervalId = setTimeout(function ():void{ triadBreakdown(howMany, howManyMax, min, maxLen, hint); }, listenTimeout); }; }, listenAnswerTimeout); }; } public function customButtons(_arg1:Array, _arg2:Function){ var _local8:googleButton; var _local9:*; var _local3:Sprite = Sprite(getChildByName("buttonmess")); if (_local3.getChildByName("buttonAnswerChoices")){ _local3.removeChild(_local3.getChildByName("buttonAnswerChoices")); }; var _local4:Sprite = new Sprite(); _local4.name = "buttonAnswerChoices"; var _local5:Number = 245; var _local6:Number = 0; var _local7:Number = 0; for (_local9 in _arg1) { _local8 = new googleButton(); _local8.makeButton(_arg1[_local9], 0, 0, checkAnswer, _local9, _local9); if ((_local8.width + _local6) > 545){ _local6 = 0; _local5 = (_local5 + 23); }; _local8.reposition((_local6 + 10), _local5); _local4.addChild(_local8); _local6 = (_local6 + (_local8.width + 6)); }; _local3.addChild(_local4); } public function arrayToStr(_arg1:Array){ var _local2:String; var _local3:*; _local2 = ""; _local3 = 0; while (_local3 < _arg1.length) { _local2 = (_local2 + (_arg1[_local3] + ",")); _local3++; }; return (_local2); } public function importSettings(_arg1:String){ var _local2:RegExp; var _local3:RegExp; var _local4:String; _local2 = /<ascSongs>([^<]*)/mg; _local3 = /<([^>]*)>/mg; _local4 = _arg1.match(_local2)[0].replace(_local3, ""); if (_local4.length > 0){ asc = buildSongs(_local4); }; _local2 = /<dscSongs>([^<]*)/mg; _local4 = _arg1.match(_local2)[0].replace(_local3, ""); if (_local4.length > 0){ dsc = buildSongs(_local4); }; _local2 = /<options>([^<]*)/mg; _local4 = _arg1.match(_local2)[0].replace(_local3, ""); if (_local4.length > 0){ parseOptions(_local4); }; _local2 = /<stats>([^<]*)/mg; _local4 = _arg1.match(_local2)[0].replace(_local3, ""); if (_local4.length > 0){ parseStats(_local4); }; drawStats(); drawOptions(); drawButtons(); } public function checkAnswer(_arg1:MouseEvent):void{ var _local3:Boolean; var _local4:Date; var _local5:Number; var _local6:Number; var _local7:Number; var _local2:String = optionsTypes[optionsTypesIndex]; if ((((_local2.substr(0, 9) == "Intervals")) || ((_local2.substr(0, 9) == "Song Mode")))){ myAnswer = _arg1.target.num; evalAnswer(); } else { if ((((_local2 == "Chords")) || ((_local2 == "Scales")))){ trace(_arg1.target.num); _local3 = ((optionsTypes[optionsTypesIndex])=="Scales") ? true : false; if (_arg1.target.num == answer){ playChord(_local3); feedback.text = "Correct!\n\nAnother question is automatically loaded."; } else { makeTick(); feedback.text = ("Answer: " + notes[answer]); }; } else { if (_local2 == "Previous Note Reference"){ if (_arg1.target.num == (questionIndex - 1)){ feedback.text = "Correct!"; clearDots(); playNext(); } else { makeTick(); clearDots(); addDot(num, "blue", new bluedot()); addDot(absoluteAnswer, "red", new reddot()); feedback.text = ("Incorrect, " + intervalSet[(questionIndex - 1)]); }; } else { if ((((((_local2 == "Scales: Number of Flats")) || ((_local2 == "Scales: Number of Sharps")))) || ((_local2 == "Scales: Number of Flats and Sharps")))){ if (answer == _arg1.target.num){ genericWin(); } else { makeTick(); feedback.text = ("Answer: " + notes[answer]); }; } else { if ((((_local2 == "Notes as Numbers")) || ((_local2 == "Interval Numbers")))){ if (answer == _arg1.target.num){ genericWin(); } else { makeTick(); feedback.text = ("Answer: " + notes[answer]); }; } else { if ((((((_local2 == "Identify Scales: Flats")) || ((_local2 == "Identify Scales: Sharps")))) || ((_local2 == "Identify All Scales")))){ if (answerText == _arg1.target.tf.text){ genericWin(); } else { makeTick(); feedback.text = ("Answer: " + answerText); }; } else { if ((((((_local2 == "Identify Notes on Treble Clef")) || ((_local2 == "Identify Notes on Bass Clef")))) || ((_local2 == "Identify All Notes")))){ if (answerText == _arg1.target.tf.text){ genericWin(); } else { if (noteIds[answer]){ snd = new (noteIds[answer]); snd.transf = new SoundTransform(vol, 0); snd.playsnd(1); }; makeTick(); addDot(answer, "red", new reddot()); feedback.text = ("Answer: " + noteNames[answer]); }; } else { if (_local2 == "Perfect Pitch"){ if (pitchAnsweredFlag == false){ _local4 = new Date(); _local5 = (Math.floor(((_local4.getTime() - pitchLastPlayTime) / 10)) / 100); pitchTotalTiming = (pitchTotalTiming + _local5); pitchTiming[questionIndex] = (pitchTiming[questionIndex] + _local5); trace(((((((("Timetak " + _local5) + " last ") + pitchLastPlayTime) + " tot") + pitchTotalTiming) + " now ") + _local4.getTime())); }; if (noteNames[answer].replace(/[0-9]/, "") == _arg1.target.tf.text){ if (pitchMissedFlag == false){ pitchTotal++; var _local8 = pitchQuestions; var _local9 = questionIndex; var _local10 = (_local8[_local9] + 1); _local8[_local9] = _local10; pitchTotalCorrect++; _local8 = pitchCorrect; _local9 = questionIndex; _local10 = (_local8[_local9] + 1); _local8[_local9] = _local10; _local8 = pitchStreaks; _local9 = questionIndex; _local10 = (_local8[_local9] + 1); _local8[_local9] = _local10; pitchStreak++; pitchAnsweredFlag = true; }; pitchMissedFlag = false; drawPitchStats(); genericWin(); } else { if (pitchMissedFlag == false){ pitchTotal++; _local8 = pitchQuestions; _local9 = questionIndex; _local10 = (_local8[_local9] + 1); _local8[_local9] = _local10; myAnswer = notesList.indexOf(_arg1.target.tf.text); feedback.text = "Incorrect"; pitchTotalIncorrect++; _local8 = pitchIncorrect; _local9 = questionIndex; _local10 = (_local8[_local9] + 1); _local8[_local9] = _local10; trace(("It was incorrect so " + pitchIncorrect[questionIndex])); trace(("Also questionIndex is " + questionIndex)); if (pitchTopStreak < pitchStreak){ pitchTopStreak = pitchStreak; }; pitchStreak = 0; if (pitchTopStreaks[questionIndex] < pitchStreaks[questionIndex]){ pitchTopStreaks[questionIndex] = pitchStreaks[questionIndex]; }; pitchStreaks[questionIndex] = 0; _local8 = pitchConfused[questionIndex]; _local9 = myAnswer; _local10 = (_local8[_local9] + 1); _local8[_local9] = _local10; _local6 = ((myAnswer)>questionIndex) ? ((11 - myAnswer) + questionIndex) : (questionIndex - myAnswer); _local7 = ((myAnswer)<questionIndex) ? (myAnswer + (11 - questionIndex)) : (myAnswer - questionIndex); trace(((("goingUP: " + _local6) + " goingDown: ") + _local7)); pitchSemitonesOff[questionIndex] = (pitchSemitonesOff[questionIndex] + ((_local6)<_local7) ? _local6 : _local7); pitchTotalSemitonesOff = (pitchTotalSemitonesOff + ((_local6)<_local7) ? _local6 : _local7); pitchAnsweredFlag = true; pitchMissedFlag = true; }; drawPitchStats(); if (noteIds[answer]){ snd = new (noteIds[answer]); snd.transf = new SoundTransform(vol, 0); snd.playsnd(1); }; makeTick(); addNote(answer); addDot(answer, "red", new reddot()); feedback.text = ("Answer: " + noteNames[answer]); }; }; }; }; }; }; }; }; }; if (_local2 == "Identify Notes on Piano"){ if (noteNames[answer].replace(/[0-9]/, "") == _arg1.target.tf.text){ genericWin(); } else { if (noteIds[answer]){ snd = new (noteIds[answer]); snd.transf = new SoundTransform(vol, 0); snd.playsnd(1); }; makeTick(); addNote(answer); addDot(answer, "red", new reddot()); feedback.text = ("Answer: " + noteNames[answer]); }; } else { if ((((_local2 == "Interval Math: Note to Interval")) || ((_local2 == "Interval Math: Note to Note")))){ if (answerText == _arg1.target.tf.text){ genericWin(); } else { makeTick(); feedback.text = ("Answer: " + answerText); }; } else { if ((((_local2 == "Note Comparison")) || ((_local2 == "Note Comparison: Tuning")))){ if (answerText == _arg1.target.tf.text){ genericWin(); } else { makeTick(); feedback.text = ("Answer: " + answerText); }; }; }; }; } public function breakDownSong(_arg1, _arg2:Boolean=false){ var _local3:Array; var _local4:Array; var _local5:Number; var _local6:*; _local3 = clone(_arg1); _local4 = new Array(); _local5 = _local3[0]; for (_local6 in _local3) { if (_local6 == 0){ } else { _local4.push(_local5, _local3[_local6]); if (_arg2){ _local4.push("s"); }; _local5 = _local3[_local6]; }; }; return (_local4); } public function playSequence(_arg1, _arg2, _arg3=true){ var _local4:Event; speed = _arg2; arr = _arg1; relative = _arg3; numback = 0; trace(((((("Notes " + arr) + " Speed: ") + _arg2) + " which: ") + true)); if (harmonicNotes.length > 0){ harmonicFunc(_local4); }; if (tune.gimmie()){ tune.gimmie().stop(); }; if (tune.isDone == 1){ tune.transf.volume = 0; tune.getChan().stop(); }; tune.isDone = 0; playNextNote(_local4); } public function redrawNotes(){ var _local2:*; if (noob){ return; }; var _local1:Array = clone(staffNotes); staffNotes = new Array(); for (_local2 in _local1) { addNote(_local1[_local2]); }; } public function redrawStaff(){ if (noob){ return; }; st.removeChild(st.getChildByName("staffNotes")); staffContainer = new staff(); staffContainer.name = "staffNotes"; st.addChild(staffContainer); staffOffset = 0; drawScaleOffset = 0; drawScale(); redrawNotes(); } public function ascNewSong(_arg1:String, _arg2:String, _arg3:String, _arg4:Number){ var _local5:RegExp = /\-?\d+/g; asc[_arg4].push(new Array(sanitize(_arg1), intPlz(_arg2.match(_local5)), intPlz(_arg3.match(_local5)))); } public function pitch(){ var _local1:Date; var _local2:Array; var _local3:*; var _local4:String; var _local5:Array; pitchAnsweredFlag = false; _local1 = new Date(); pitchLastPlayTime = _local1.getTime(); _local2 = new Array(); for (_local3 in deactivated) { if (deactivated[_local3] == 0){ _local2.push(notes[_local3]); }; }; _local4 = _local2[Math.round((Math.random() * (_local2.length - 1)))]; _local5 = new Array(); for (_local3 in noteNames) { if (noteNames[_local3].replace(/[0-9]/, "") == _local4){ _local5.push(_local3); }; }; answer = (num = _local5[Math.round((Math.random() * (_local5.length - 1)))]); questionIndex = notesList.indexOf(noteNames[answer].replace(/[0-9]/, "")); clearDots(); snd = new (noteIds[num]); snd.transf = new SoundTransform(vol, 0); snd.playsnd(1); drawPitchStats(); } public function absoluteToRelative(_arg1:Array){ var _local4:*; if (!_arg1[1]){ return (_arg1); }; var _local2:Number = _arg1[0]; var _local3:Number = 0; for (_local4 in _arg1) { _arg1[_local4] = (_arg1[_local4] - (_local2 + _local3)); _local3 = (_local3 + _arg1[_local4]); }; return (_arg1); } public function resetJobBro(){ var _local1:Sprite = new Sprite(); if (getChildByName("feedbackBar")){ removeChild(getChildByName("feedbackBar")); }; _local1.name = "feedbackBar"; _local1.graphics.beginFill(0xFFFFFF); _local1.graphics.lineStyle(1, 0xEEEEEE); _local1.graphics.moveTo(0, 0); _local1.graphics.lineTo(10, 0); _local1.graphics.lineTo(10, 10); _local1.graphics.lineTo(0, 10); _local1.graphics.lineTo(0, 0); _local1.graphics.endFill(); _local1.x = 172; _local1.y = 354; addChild(_local1); } public function songEval(){ var _local1:String; var _local2:Array; if (answer == myAnswer){ if (smMissed != true){ wellDone(); generalStats(); } else { if (firstMiss == -1){ firstMiss = myAnswer; }; mistake(); smMissed = false; generalStats(); }; feedback.text = "Correct!"; goodJobBro(); _local1 = smCorrect[smCorrectIndex]; if ((((backupSequence[(songModeIndex + 2)] == null)) || (singleMode))){ if (_local1 == "Play Current Note When Correct"){ smQueue = new Array(backupSequence[(songModeIndex + 1)], "s"); } else { if (_local1 == "Play Interval"){ smQueue = new Array(backupSequence[songModeIndex], backupSequence[(songModeIndex + 1)], "s"); }; }; if (optionsTypes[optionsTypesIndex] == "Song Mode Single"){ playSong(true); } else { playSong(); }; } else { if (smMissed != true){ addNote(backupSequence[(songModeIndex + 1)]); }; if (_local1 == "Play Current Note When Correct"){ playSequence(new Array(backupSequence[(songModeIndex + 1)], "s"), new Array(), false); if (songModeIndex == 0){ playSequence(new Array(backupSequence[songModeIndex], backupSequence[(songModeIndex + 1)]), new Array(), false); }; } else { if (_local1 == "Replay song until next question"){ playSequence(new Array(backupSequence[songModeIndex], backupSequence[(songModeIndex + 1)], backupSequence[(songModeIndex + 2)]), new Array(), false); } else { if (_local1 == "Play Tick"){ makeTick(); } else { if (_local1 == "Play Interval"){ playSequence(new Array(backupSequence[songModeIndex], backupSequence[(songModeIndex + 1)]), new Array(), false); }; }; }; }; songModeIndex++; ascF = false; if (backupSequence[songModeIndex] < backupSequence[(songModeIndex + 1)]){ ascF = true; }; absoluteAnswer = backupSequence[(songModeIndex + 1)]; num = backupSequence[songModeIndex]; questionIndex = (myAnswer + 1); questionType = (ascF) ? ((1) || (3)) : 2; if (optionsTypes[lastIntervalIndex] == "Intervals: Solfege Buttons"){ notes = ((((((((questionType < 2)) && (!((optionsDescIndex == 2))))) || ((((questionType == 3)) && ((optionsHarmonicIndex == 0)))))) || ((((questionType == 2)) && ((optionsDescIndex == 1)))))) ? optionsNoteLocation : optionsNoteLocationDesc; drawButtons(); } else { if (optionsTypes[lastIntervalIndex] == "Intervals: Song Buttons"){ notes = songButtons((((((((questionType < 2)) && (!((optionsDescIndex == 2))))) || ((((questionType == 3)) && ((optionsHarmonicIndex == 0)))))) || ((((questionType == 2)) && ((optionsDescIndex == 1)))))); drawButtons(false); }; }; clearDots(); addDot(backupSequence[songModeIndex], "green", new greendot()); trace("correct"); }; } else { makeTick(); _local1 = smWrong[smWrongIndex]; if (smMissed != true){ addNote(backupSequence[(songModeIndex + 1)]); }; badJobBro(); if (((ascF) && ((optionsFeedbackIndex == 0)))){ feedback.text = ((((((((((((("Incorrect, sounds like \"" + asc[answer][ascselected[answer]][0]) + "\".\nInterval: ") + properIntervalSet[answer]) + " (") + intervalSet[answer]) + "), ") + (answer + 1)) + " Semitones, Solfege '") + optionsNoteLocation[answer]) + "'\nNotes: ") + noteNames[num]) + " to ") + noteNames[(num + questionIndex)]); } else { if (((!(ascF)) && ((optionsFeedbackIndex == 0)))){ feedback.text = ((((((((((((("Incorrect, sounds like \"" + dsc[answer][dscselected[answer]][0]) + "\".\nInterval: ") + properIntervalSet[answer]) + " (") + intervalSet[answer]) + "), ") + (answer + 1)) + " Semitones, Solfege '") + optionsNoteLocation[answer]) + "'\nNotes: ") + noteNames[num]) + " to ") + noteNames[(num - questionIndex)]); }; }; if (smMissed != true){ smMissed = true; firstMiss = myAnswer; }; if (_local1 == "Replay Until Question + Repeat Interval"){ if (songModeIndex > 0){ _local2 = clone(backupSequence); _local2 = _local2.slice(0, (songModeIndex + 2)); _local2.push("s", backupSequence[songModeIndex], backupSequence[(songModeIndex + 1)]); playSequence(_local2, new Array(), false); } else { _local1 = "Replay Interval on Mistake"; }; }; if (_local1 == "Replay Interval on Mistake"){ playSequence(new Array(backupSequence[songModeIndex], backupSequence[(songModeIndex + 1)]), new Array(), false); } else { if (_local1 == "Play First Note + Current Note Interval"){ playSequence(new Array(backupSequence[0], backupSequence[(songModeIndex + 1)]), new Array(), false); } else { if ((((((_local1 == "Play Song")) || ((_local1 == "Play Interval + Play Song")))) || ((_local1 == "Play Song + Play Interval")))){ numback = 0; if (ascF){ arr = clone(asc[answer][ascselected[answer]][1]); speed = clone(asc[answer][ascselected[answer]][2]); } else { arr = clone(dsc[answer][dscselected[answer]][1]); speed = clone(dsc[answer][dscselected[answer]][2]); }; arr[0] = backupSequence[songModeIndex]; if (_local1 == "Play Interval + Play Song"){ arr[0] = backupSequence[songModeIndex]; queue.push(new Array(true, true, clone(arr), clone(speed))); arr = new Array(backupSequence[songModeIndex], (backupSequence[(songModeIndex + 1)] - backupSequence[songModeIndex]), "s"); trace(queue); } else { if (_local1 == "Play Song + Play Interval"){ arr.push("s"); queue.push(new Array(true, true, new Array(backupSequence[songModeIndex], (backupSequence[(songModeIndex + 1)] - backupSequence[songModeIndex])), new Array())); }; }; playSequence(arr, speed); } else { if (_local1 == "Replay Question"){ rep(); } else { if (_local1 == "Replay Current Note"){ playSequence(new Array(backupSequence[(songModeIndex + 1)], "s"), new Array(), false); } else { if (_local1 == "Replay Question + Force Redo"){ rep(); callback = doNothing; }; }; }; }; }; }; trace("incorrect"); clearDots(); addDot(backupSequence[songModeIndex], "green", new greendot()); addDot(backupSequence[(songModeIndex + 1)], "blue", new bluedot()); addDot((ascF) ? ((num + myAnswer) + 1) : ((num - myAnswer) + 1), "red", new reddot()); if (_local1 == "Replay Question + Force Redo"){ songModeIndex = 0; }; }; num = backupSequence[songModeIndex]; answer = (Math.abs((backupSequence[(songModeIndex + 1)] - backupSequence[songModeIndex])) - 1); drawStats(); } public function pitchOptions(){ var overlay:Sprite; disablekeys = true; overlay = new Sprite(); addChild(overlay); overlay.graphics.beginFill(0x333333); overlay.graphics.drawRoundRect(5, 5, 540, 490, 10, 10); overlay.graphics.endFill(); overlay.addChild(tff("Preset Color Associations", 5, 50, 10070783, 200, 20)); overlay.addChild(makeDropDown(5, 70, pitchColorPresets, pitchColorPresetsSelect, function (_arg1:Event):void{ }, 150)); overlay.addChild(tff("Custom Pitch Associations", 5, 100, 10070783, 200, 20)); overlay.addChild(makeDropDown(5, 120, notesList, 0, function (_arg1:Event):void{ }, 150)); overlay.addChild(simpleButton("Edit Color", 180, 120, 0, 60, 17, 0xFFFFFF, function (_arg1:MouseEvent):void{ }, false)); overlay.addChild(simpleButton("Edit Text", 245, 120, 0, 60, 17, 0xFFFFFF, function (_arg1:MouseEvent):void{ }, false)); overlay.addChild(simpleButton("Edit Picture", 310, 120, 0, 70, 17, 0xFFFFFF, function (_arg1:MouseEvent):void{ }, false)); overlay.addChild(simpleButton("Stream Song", 395, 120, 0, 76, 17, 0xFFFFFF, function (_arg1:MouseEvent):void{ }, false)); } public function dscParseValues(_arg1:String, _arg2:String, _arg3:String, _arg4:Number){ var _local5:RegExp = /\-?\d+/g; dsc[_arg4][ascselected[_arg4]][0] = sanitize(_arg1); dsc[_arg4][ascselected[_arg4]][1] = intPlz(_arg2.match(_local5)); dsc[_arg4][ascselected[_arg4]][2] = intPlz(_arg3.match(_local5)); } public function mistake(){ totalmisses++; var _local1 = misses; var _local2 = (questionIndex - 1); var _local3 = (_local1[_local2] + 1); _local1[_local2] = _local3; _local1 = incorrect[(questionIndex - 1)]; _local2 = firstMiss; _local3 = (_local1[_local2] + 1); _local1[_local2] = _local3; streak = 0; streaks[(questionIndex - 1)] = 0; if (questionType == 1){ _local1 = ascmisses; _local2 = (questionIndex - 1); _local3 = (_local1[_local2] + 1); _local1[_local2] = _local3; ascmissesTotal++; } else { if (questionType == 2){ _local1 = descmisses; _local2 = (questionIndex - 1); _local3 = (_local1[_local2] + 1); _local1[_local2] = _local3; descmissesTotal++; }; }; } public function evalAnswer(){ var correctAction:String; var wrongAction:String; var style:String = optionsTypes[optionsTypesIndex]; if ((((style == "Song Mode")) || ((style == "Song Mode Single")))){ songEval(); return; }; if ((((num < 0)) || ((num > notesAvailable)))){ return; }; trace(((answer + " ") + myAnswer)); if (answer == myAnswer){ if (((missed) && ((countedCorrectAlready == false)))){ mistake(); generalStats(); } else { if (countedCorrectAlready == false){ wellDone(); generalStats(); }; }; countedCorrectAlready = true; if (((myTimer) && (myTimer.running))){ myTimer.stop(); }; goodJobBro(); if (((ascF) && ((optionsFeedbackIndex == 0)))){ feedback.text = ((((((((((((("Correct! Sounds like \"" + asc[answer][ascselected[answer]][0]) + "\".\nClick play or hit right arrow for a new interval.\nInterval: ") + properIntervalSet[answer]) + " (") + intervalSet[answer]) + "), ") + (answer + 1)) + " Semitones, Solfege '") + optionsNoteLocation[answer]) + "', Notes: ") + noteNames[num]) + " to ") + noteNames[(num + questionIndex)]); } else { if (((!(ascF)) && ((optionsFeedbackIndex == 0)))){ feedback.text = ((((((((((((("Correct! Sounds like \"" + dsc[answer][dscselected[answer]][0]) + "\".\nClick play or hit right arrow for a new interval\nInterval: ") + properIntervalSet[answer]) + " (") + intervalSet[answer]) + "), ") + (answer + 1)) + " Semitones, Solfege '") + optionsNoteLocation[answer]) + "', Notes: ") + noteNames[num]) + " to ") + noteNames[(num - questionIndex)]); }; }; correctAction = optionsActionCorrect[optionsActionCorrectIndex]; if (correctAction == "Immediately Play New Question"){ newQuestion(); feedback.text = "Correct! Playing a new interval..."; callback = function ():void{ feedback.text = "Two notes are played. Which song starts with those notes?\nWant to change or hear a song? Click the 'songs' button below the two dropdowns."; callback = doNothing; }; } else { if (correctAction == "Play Associated Song"){ playAssociationFiltered(answer); } else { if (correctAction == "Play Interval and Associated Song"){ playInterval(num, (answer + 1)); callback = function (){ playAssociationFiltered(answer); callback = doNothing; }; } else { if (correctAction == "Play Interval"){ playInterval(num, (answer + 1)); }; }; }; }; } else { SoundMixer.stopAll(); if ((((missed == false)) && ((countedCorrectAlready == false)))){ addNote(absoluteAnswer); makeTick(); missed = true; firstMiss = myAnswer; }; drawMenu(); wrongAction = optionsActionWrong[optionsActionWrongIndex]; if (wrongAction == "Play Song of Correct Answer"){ playAssociationFiltered(answer); } else { if (wrongAction == "Make Click Sound and Repeat Interval"){ makeTick(); rep(); } else { if (wrongAction == "Play Song of Incorrect Answer"){ playAssociationFiltered(myAnswer); } else { if (wrongAction == "Play Click Sound"){ makeTick(); } else { if (wrongAction == "Play Incorrect Interval"){ playInterval(num, (myAnswer + 1)); } else { if (wrongAction == "Play incorrect interval then the Correct one"){ playInterval(num, (myAnswer + 1)); callback = function (){ playInterval(num, (answer + 1)); callback = doNothing; }; } else { if (wrongAction == "Repeat Interval and Play Correct Song"){ playInterval(num, (answer + 1)); callback = function (){ playAssociationFiltered(answer); callback = doNothing; }; } else { if (wrongAction == "Play Wrong Answer and Play Incorrect Song"){ playInterval(num, (myAnswer + 1)); callback = function (){ playAssociationFiltered(myAnswer); callback = doNothing; }; } else { if (wrongAction == "Play Wrong Answer and Play Correct Song"){ playInterval(num, (myAnswer + 1)); callback = function (){ playAssociationFiltered(answer); callback = doNothing; }; }; }; }; }; }; }; }; }; }; addDot(absoluteAnswer, "blue", new bluedot()); if (ascF){ addDot((num + (myAnswer + 1)), "red", new reddot()); } else { addDot((num - (myAnswer + 1)), "red", new reddot()); }; badJobBro(); if (((ascF) && ((optionsFeedbackIndex == 0)))){ feedback.text = ((((((((((((("Incorrect, sounds like \"" + asc[answer][ascselected[answer]][0]) + "\".\nInterval: ") + properIntervalSet[answer]) + " (") + intervalSet[answer]) + "), ") + (answer + 1)) + " Semitones, Solfege '") + optionsNoteLocation[answer]) + "'\nNotes: ") + noteNames[num]) + " to ") + noteNames[(num + questionIndex)]); } else { if (((!(ascF)) && ((optionsFeedbackIndex == 0)))){ feedback.text = ((((((((((((("Incorrect, sounds like \"" + dsc[answer][dscselected[answer]][0]) + "\".\nInterval: ") + properIntervalSet[answer]) + " (") + intervalSet[answer]) + "), ") + (answer + 1)) + " Semitones, Solfege '") + optionsNoteLocation[answer]) + "'\nNotes: ") + noteNames[num]) + " to ") + noteNames[(num - questionIndex)]); }; }; }; drawStats(); } public function simpleButton(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Function, _arg9=false, _arg10:Number=0){ var _local11:sidepl0x = new sidepl0x(); _local11 = new sidepl0x(); _local11.drawplz((_arg5 + 1), (_arg6 + 1), 0x444444); _local11.drawplz(_arg5, _arg6, _arg7); _local11.x = _arg2; _local11.y = _arg3; _local11.buttonMode = true; _local11.side.text = _arg1; _local11.side.textColor = _arg4; _local11.addEventListener(MouseEvent.CLICK, _arg8); _local11.num = _arg10; if (_arg9 != false){ _local11.name = _arg9; }; return (_local11); } public function intPlz(_arg1:Array){ var _local2:* = 0; while (_local2 < _arg1.length) { _arg1[_local2] = int(_arg1[_local2]); _local2++; }; return (_arg1); } public function chords(){ } public function simpleCheckbox(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6:Function, _arg7=0, _arg8=0xDDDDDD, _arg9=122, _arg10=17){ var _local12:Sprite; var _local11:googleButton = new googleButton(); _local11.makeButton((" " + _arg3), _arg1, _arg2, _arg6, ("noh" + _arg4), _arg4, 18, _arg9); if (_arg5){ _local12 = new checkboxy(); } else { _local12 = new checkboxchecked(); }; _local12.x = 3; _local12.y = 4; _local12.name = "checkboxer"; _local12.mouseEnabled = false; _local11.addChild(_local12); return (_local11); } public function listenVoice():void{ gp(); playSequence(new Array(num, "s"), new Array(qspeed, 8)); clearDots(); clearStaff(); callback = function (){ lolTimer(100, 1, function (_arg1:TimerEvent):void{ snd = new (voiceIds[(questionIndex - 1)]); snd.transf = new SoundTransform(vol, 0); snd.playsnd(1); snd.getChan().addEventListener(Event.SOUND_COMPLETE, listenVoice1); }); }; } public function ascComboChange(_arg1:Event){ ascselected[_arg1.target.name] = _arg1.target.selectedIndex; } public function timerFunc(_arg1:Event){ var _local2:Event; tune.isDone = 0; tune.gimmie().stop(); tune.getChan().stop(); playNextNote(_local2); } public function statPitchOptions(){ var i:*; if (noob){ return; }; if (getChildByName("statOptionsMess")){ removeChild(getChildByName("statOptionsMess")); }; var statOptionsMess:Sprite = new Sprite(); statOptionsMess.name = "statOptionsMess"; statOptionsMess.x = 285; statOptionsMess.y = 0; this.addChild(statOptionsMess); statOptionsMess.addChild(tff("Statistics", 30, 0, 0xDDDDDD, 90, 14)); var foo:Array = notesList; num3 = 0; var yplz:Number = 20; for (i in notes) { if (++num3 > 6){ num3 = 1; yplz = (yplz + 19); }; statOptionsMess.addChild(simpleButton(foo[i], (27 * num3), yplz, 0, 24, 16, ((optstats)==i) ? 0xFFFFFF : 0xF0F0F0, function (_arg1:MouseEvent):void{ makeTick(); optstats = _arg1.target.num; drawPitchStats(); statPitchOptions(); }, ("noh" + i), i)); }; statOptionsMess.addChild(simpleButton("All", (27 * num3), yplz, 0, 24, 16, ((optstats)==-1) ? 0xFFFFFF : 0xF0F0F0, function (_arg1:MouseEvent):void{ makeTick(); optstats = _arg1.target.num; drawPitchStats(); statPitchOptions(); }, "noh-1", -1)); } public function instrumentAssign(){ if (optionsInstrumentIndex == 0){ pianoPlz(); } else { if (optionsInstrumentIndex == 1){ guitarPlz(); } else { if (optionsInstrumentIndex == 2){ tonesPlz(); }; }; }; notesAvailable = (noteIds.length - 1); drawPiano(20, 448, notesAvailable); } public function resetStatistics(){ firstMiss = -1; feedback.text = ""; missed = false; countedCorrectAlready = false; skipped = -1; streak = 0; ascmisses = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); descmisses = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); skippedlist = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); ascmissesTotal = 0; descmissesTotal = 0; total = 0; totalmisses = 0; totalcorrect = 0; totalreplays = 0; totaltiming = 0; var _local1:Date = new Date(); lastplaytime = _local1.getTime(); streaks = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); timing = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); streaks = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); topstreaks = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); replays = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); questions = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); correct = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); misses = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); pianocorrect = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); pianoflag = false; pianototal = 0; incorrect = new Array(new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); topstreak = 0; drawStats(); } public function createDeactivated(_arg1:Array, _arg2:Number=0){ var _local4:*; var _local3:Array = new Array(); for (_local4 in _arg1) { _local3[_local4] = _arg2; }; return (_local3); } public function earTrainers(_arg1:Event):void{ var isAsc:Boolean; var buttonmess:Sprite; var buttonAnswerChoices:Sprite; var inputTextField:TextField; var evt = _arg1; missedback = missed; missedback1 = questionIndex; answer = -1; disablekeys = false; prevOptionsTypesIndex = optionsTypesIndex; if (optionsTypes[prevOptionsTypesIndex] == "Perfect Pitch"){ statOptions(); }; callback = doNothing; feedback.text = ""; if (intervalId){ clearInterval(intervalId); }; intervalId = 0; if (((myTimer) && (myTimer.running))){ myTimer.stop(); }; optionsTypesIndex = evt.target.selectedIndex; var style:String = optionsTypes[optionsTypesIndex]; if (style == "Intervals: Song Buttons"){ isAsc = (((((((optselect < 2)) && (!((optionsDescIndex == 2))))) || ((((optselect == 3)) && ((optionsHarmonicIndex == 0)))))) || ((((optselect == 2)) && ((optionsDescIndex == 1))))); notes = songButtons(isAsc); deactivated = intervalsDeactived; optionsPresetLevels = intervalPresetsBuilt; drawButtons(false); feedback.text = "Instructions: Click the 'Play' button and listen carefully."; lastIntervalIndex = optionsTypesIndex; } else { if (style == "Intervals"){ notes = intervalSet; deactivated = intervalsDeactived; optionsPresetLevels = intervalPresetsBuilt; drawButtons(); feedback.text = "Instructions: Click the 'Play' button and listen carefully."; lastIntervalIndex = optionsTypesIndex; }; }; if (style == "Intervals: Solfege Buttons"){ notes = optionsNoteLocation; deactivated = intervalsDeactived; optionsPresetLevels = intervalPresetsBuilt; drawButtons(); feedback.text = "Instructions: Click the 'Play' button and listen carefully."; lastIntervalIndex = optionsTypesIndex; } else { if (style == "Song Mode"){ notes = intervalSet; deactivated = intervalsDeactived; optionsPresetLevels = intervalPresetsBuilt; drawButtons(); feedback.text = "Instructions: A sequence of notes will be played. You must select which intervals were played starting from the first and second note, second to third, ... Answer with the buttons or the piano. Many behaviors can be configured in the options menu."; } else { if (style == "Song Mode Single"){ notes = intervalSet; deactivated = intervalsDeactived; optionsPresetLevels = intervalPresetsBuilt; drawButtons(); feedback.text = "This is the same as song mode but it selects only one interval throughout the sequence of notes."; } else { if (style == "Previous Note Reference"){ notes = intervalSet; deactivated = intervalsDeactived; optionsPresetLevels = intervalPresetsBuilt; drawButtons(); prevNote = -1; feedback.text = "First you're given a regular interval, next question and all subsequent questions, you'll be given only 1 note. You have to use the previous question's last note as your reference."; } else { if (style == "Chords"){ notes = defaultChords; deactivated = defaultChordsDeactivated; optionsPresetLevels = optionsChords; drawButtons(false); feedback.text = "Click play to start. If you'll notice there's little arrow bottons near the button of the\n list of checkboxes. You can use them to scroll and see all options.\n Google 'wikipedia musical chords' for info on how chords work."; } else { if (style == "Scales"){ notes = defaultScales; deactivated = defaultScalesDeactivated; drawButtons(false); feedback.text = "Click play to start. If you'll notice there's little arrow bottons near the button of the\n list of checkboxes. You can use them to scroll and see all options.\n Google 'wikipedia musical scales' for info on how scales work."; } else { if (style == "Sight Singing"){ notes = intervalSet; deactivated = intervalsSightSingingDeactived; drawButtons(false); feedback.text = "Click play and try to sight sing the sequence shown(first note given). Click 'Answer' to compare. Amount of notes configurable in options under 'Notes in song', section also obeys enabled intervals / asc&desc settings."; } else { if (style == "Chord Progressions: 2 Chords"){ notes = optionsProgressions2; deactivated = optionsProgressions2Deactivated; drawButtons(false); } else { if (style == "Chord Progressions: 3 Chords"){ notes = optionsProgressions3; deactivated = optionsProgressions3Deactivated; drawButtons(false); } else { if (style == "Chord Progressions: 4 Chords"){ notes = optionsProgressions4; deactivated = optionsProgressions4Deactivated; drawButtons(false); } else { if (style == "Cadences: Good-Ear"){ notes = optionsCadence; deactivated = optionsCadenceDeactivated; drawButtons(false); } else { if (style == "Note Location: Good-Ear"){ notes = optionsNoteLocation; deactivated = optionsNoteLocationDeactivated; drawButtons(false); } else { if (style == "Jazz Chords: Good-Ear"){ notes = optionsChordsGoodEar; drawButtons(false); } else { if (style == "Scales: Good-Ear"){ notes = optionsScalesGoodEar; drawButtons(false); } else { if ((((style == "Notes as Numbers")) || ((style == "Interval Numbers")))){ notes = numbersList; deactivated = numbersListDeactivated; drawButtons(false); feedback.text = "Associating notes and Interval Numbers makes things easier, eg whats the interval from C up to F#? If C is 4 and F# is 10 then 10-4=6 (tritone). Numbers are faster to work with. In case of overlap just remember 12 is base."; } else { if (style == "Interval Math: Note to Interval"){ notes = notesList; deactivated = numbersListDeactivated; drawButtons(false); feedback.text = "Mastered your intervals? Work on making it easier and more fluent moving around in intervals. Enable all checkboxes."; } else { if (style == "Interval Math: Note to Note"){ notes = intervalSet; deactivated = numbersListDeactivated; drawButtons(false); feedback.text = "Mastered your intervals? Work on making it easier and more fluent moving around in intervals. Enable all checkboxes."; } else { if (style == "Counterpoint Movement"){ notes = optionsCounterPoint; deactivated = optionsCounterPointDeactivated; drawButtons(false); } else { if ((((((style == "Identify Notes on Treble Clef")) || ((style == "Identify Notes on Bass Clef")))) || ((style == "Identify All Notes")))){ notes = notesList; trace(notes); deactivated = notesListDeactivated; drawButtons(false); feedback.text = "Click play to start. The question will be shown as notes below. Use the piano or buttons to answer."; } else { if ((((style == "Scales: Number of Flats")) || ((style == "Scales: Number of Sharps")))){ notes = seven; deactivated = sevenDeactivated; drawButtons(false); feedback.text = "Click play to start. The question will be asked here and you must use the buttons above to answer."; } else { if (style == "Scales: Number of Flats and Sharps"){ notes = keyList; deactivated = keyListDeactivated; drawButtons(false); feedback.text = "Click play to start. The question will be asked here and you must use the buttons above to answer."; } else { if (style == "Identify Scales: Sharps"){ notes = keyListSharps; deactivated = keyListSharpsDeactivated; drawButtons(false); feedback.text = "Click play to start, the scale will be shown below on the music staff. Click the buttons above to answer."; } else { if (style == "Identify Scales: Flats"){ notes = keyListFlats; deactivated = keyListFlatsDeactivated; drawButtons(false); feedback.text = "Click play to start, the scale will be shown below on the music staff. Click the buttons above to answer."; } else { if (style == "Identify All Scales"){ notes = keyList; deactivated = keyListDeactivated; drawButtons(false); feedback.text = "Click play to start, the scale will be shown below on the music staff. Click the buttons above to answer."; } else { if (style == "Identify Notes on Piano"){ notes = notesList; trace(notes); deactivated = notesListDeactivated; drawButtons(false); feedback.text = "Click play to start, a not will be shown on the piano and you must identify with the buttons."; } else { if (style == "Note Comparison"){ notes = intervalSet; deactivated = intervalsCompareDeactived; optionsPresetLevels = intervalPresetsBuilt; drawButtons(false); customButtons(new Array("Higher", "Lower", "Equal"), checkAnswer); feedback.text = "Click play to start. An interval is played. Is the second note higher, lower or equal?"; } else { if (style == "Note Comparison: Tuning"){ notes = intervalSet; deactivated = intervalsCompareDeactived; optionsPresetLevels = intervalPresetsBuilt; drawButtons(false); customButtons(new Array("Flat", "In Tune", "Sharp"), checkAnswer); feedback.text = "Click play to start. Two notes will be played with a tiny offset. If the second note is higher click sharp, if lower, flat, and if equal click in-tune. Inspired by 'ear toner', which does it better (customizable to the semitone)."; } else { if (style == "Perfect Pitch"){ notes = notesList; deactivated = notesListDeactivated; drawButtons(false); feedback.text = "A note is played, try to find the correct pitch with the buttons or piano. Which octave is not important."; } else { if (style == "Piano Memory Game"){ notes = intervalSet; memoryIndex = 0; deactivated = intervalsDeactived; optionsPresetLevels = intervalPresetsBuilt; drawButtons(); feedback.text = "Click the notes shown on the piano. Kinda like simon says except with piano. Inspired by Bruno Basseto's 'Memoria'. Selected intervals/settings will determine what random leaps are taken. The first note is given."; } else { if (style == "Speed Math"){ notes = optionsSpeedMath; deactivated = optionsSpeedMathDeactivated; drawButtons(false); disablekeys = true; buttonmess = Sprite(getChildByName("buttonmess")); if (buttonmess.getChildByName("buttonAnswerChoices")){ buttonmess.removeChild(buttonmess.getChildByName("buttonAnswerChoices")); }; buttonAnswerChoices = new Sprite(); buttonAnswerChoices.name = "buttonAnswerChoices"; buttonAnswerChoices.addChild(tff1("- Enter Answer - ", 10, 300, 0, 200, 20)); inputTextField = tff("", 10, 320, 0, 100, 16, "sm", true, 0xFFFFFF); inputTextField.addEventListener(Event.CHANGE, speedMathEval); buttonAnswerChoices.addChild(inputTextField); buttonAnswerChoices.addChild(tff1("Min: ", 250, 260, 0, 35, 20)); buttonAnswerChoices.addChild(tff("0", 290, 260, 0, 50, 16, "min", true, 0xFFFFFF)); buttonAnswerChoices.addChild(tff1("Max: ", 250, 280, 0, 35, 20)); buttonAnswerChoices.addChild(tff("9", 290, 280, 0, 50, 16, "max", true, 0xFFFFFF)); buttonAnswerChoices.addChild(tff1("Anchor: ", 250, 300, 0, 50, 20)); buttonAnswerChoices.addChild(tff("", 300, 300, 0, 50, 16, "anchorNumber", true, 0xFFFFFF)); buttonmess.addChild(buttonAnswerChoices); speedMath(); } else { if (style == "Listen Mode"){ notes = intervalSet; deactivated = intervalsDeactived; optionsPresetLevels = intervalPresetsBuilt; listenIntervals(); feedback.text = "You can practice while not actively using the ear trainer with Listen Mode. It plays an interval then the associated song repeatedly based on the timeouts specificed in the options menu(milliseconds). It obeys all options selected."; drawButtons(); } else { if (style == "Listen: Sing Intervals"){ notes = intervalSet; deactivated = intervalsDeactived; optionsPresetLevels = intervalPresetsBuilt; listenVoice(); feedback.text = "You're given a tone then a voice saying a number. The number specifies the interval in terms of the distance in semitones. Try to sing the next note."; drawButtons(); } else { if (style == "Listen: Random Triad Breakdown"){ triadBreakdown(); } else { if (style == "Listen: Random X Breakdown"){ breakDown(); return; }; if (style == "Listen: Song Mode"){ notes = intervalSet; deactivated = intervalsDeactived; optionsPresetLevels = intervalPresetsBuilt; playSong(); callback = function (){ intervalId = setTimeout(playSong, listenTimeout); }; feedback.text = "Same as song mode but set so you can play along. Set the timeout between plays in options: 'Time btw questions'."; } else { if (style == "Listen: Song Mode Breakdown"){ notes = intervalSet; deactivated = intervalsDeactived; optionsPresetLevels = intervalPresetsBuilt; playSong(); callback = function (){ intervalId = setTimeout(songModeListen, listenAnswerTimeout); }; feedback.text = "Same as song mode listen but breaks repeats the song with the intervals broken down before moving to a new one."; } else { if (style == "Listen: Song Mode Breakdown with Rests"){ notes = intervalSet; deactivated = intervalsDeactived; optionsPresetLevels = intervalPresetsBuilt; playSong(); callback = function (){ intervalId = setTimeout(function (){ songModeListen(true); }, listenAnswerTimeout); }; feedback.text = "Same as song mode listen but breaks repeats the song with the intervals broken down before moving to a new one."; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; drawOptions(); drawMenu(); } public function speedMath(){ var _local1:Sprite; var _local2:Sprite; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Array; var _local7:*; var _local8:String; var _local9:Number; _local1 = Sprite(getChildByName("buttonmess")); _local2 = Sprite(_local1.getChildByName("buttonAnswerChoices")); _local3 = int(TextField(_local2.getChildByName("min")).text); _local4 = int(TextField(_local2.getChildByName("max")).text); _local6 = new Array(); for (_local7 in optionsSpeedMath) { if (optionsSpeedMathDeactivated[_local7] == 0){ _local6.push(optionsSpeedMath[_local7]); }; }; _local8 = _local6[rand(0, (_local6.length - 1))]; if (TextField(_local2.getChildByName("anchorNumber")).text != ""){ _local5 = int(TextField(_local2.getChildByName("anchorNumber")).text); } else { _local5 = rand(_local3, _local4); }; _local9 = rand(_local3, _local4); if (_local8 == "*"){ answer = (_local5 * _local9); } else { if (_local8 == "-"){ answer = (_local5 - _local9); } else { if (_local8 == "+"){ answer = (_local5 + _local9); } else { if (_local8 == "/"){ answer = (Math.floor(((_local5 / _local9) * 1000)) / 1000); }; }; }; }; feedback.text = (((((("Question: " + _local5) + " ") + _local8) + " ") + _local9) + " = ?"); } public function pianoPlz(){ anchorNote = 18; noteIds = new Array(c2p, c2sp, d2p, d2sp, e2p, f2p, f2sp, g2p, g2sp, a3p, a3sp, b3p, c3p, c3sp, d3p, d3sp, e3p, f3p, f3sp, g3p, g3sp, a4p, a4sp, b4p, c4p, c4sp, d4p, d4sp, e4p, f4p, f4sp, g4p, g4sp, a5p, a5sp, b5p, c5p); noteNames = new Array("c2", "c#2", "d2", "d#2", "e2", "f2", "f#2", "g2", "g#2", "a3", "a#3", "b3", "c3", "c#3", "d3", "d#3", "e3", "f3", "f#3", "g3", "g#3", "a4", "a#4", "b4", "c4", "c#4", "d4", "d#4", "e4", "f4", "f#4", "g4", "g#4", "a5", "a#5", "b5", "c5"); } } }//package eartrain_rewrite43_fla
Section 7
//BaseScrollPane (fl.containers.BaseScrollPane) package fl.containers { import fl.core.*; import fl.controls.*; import flash.display.*; import flash.events.*; import fl.events.*; import flash.geom.*; public class BaseScrollPane extends UIComponent { protected var defaultLineScrollSize:Number;// = 4 protected var _maxHorizontalScrollPosition:Number;// = 0 protected var vScrollBar:Boolean; protected var disabledOverlay:Shape; protected var hScrollBar:Boolean; protected var availableWidth:Number; protected var _verticalPageScrollSize:Number;// = 0 protected var vOffset:Number;// = 0 protected var _verticalScrollBar:ScrollBar; protected var useFixedHorizontalScrolling:Boolean;// = false protected var contentWidth:Number;// = 0 protected var contentHeight:Number;// = 0 protected var _horizontalPageScrollSize:Number;// = 0 protected var background:DisplayObject; protected var _useBitmpScrolling:Boolean;// = false protected var contentPadding:Number;// = 0 protected var availableHeight:Number; protected var _horizontalScrollBar:ScrollBar; protected var contentScrollRect:Rectangle; protected var _horizontalScrollPolicy:String; protected var _verticalScrollPolicy:String; protected static const SCROLL_BAR_STYLES:Object = {upArrowDisabledSkin:"upArrowDisabledSkin", upArrowDownSkin:"upArrowDownSkin", upArrowOverSkin:"upArrowOverSkin", upArrowUpSkin:"upArrowUpSkin", downArrowDisabledSkin:"downArrowDisabledSkin", downArrowDownSkin:"downArrowDownSkin", downArrowOverSkin:"downArrowOverSkin", downArrowUpSkin:"downArrowUpSkin", thumbDisabledSkin:"thumbDisabledSkin", thumbDownSkin:"thumbDownSkin", thumbOverSkin:"thumbOverSkin", thumbUpSkin:"thumbUpSkin", thumbIcon:"thumbIcon", trackDisabledSkin:"trackDisabledSkin", trackDownSkin:"trackDownSkin", trackOverSkin:"trackOverSkin", trackUpSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"}; private static var defaultStyles:Object = {repeatDelay:500, repeatInterval:35, skin:"ScrollPane_upSkin", contentPadding:0, disabledAlpha:0.5}; public function BaseScrollPane(){ contentWidth = 0; contentHeight = 0; contentPadding = 0; vOffset = 0; _maxHorizontalScrollPosition = 0; _horizontalPageScrollSize = 0; _verticalPageScrollSize = 0; defaultLineScrollSize = 4; useFixedHorizontalScrolling = false; _useBitmpScrolling = false; super(); } protected function handleWheel(_arg1:MouseEvent):void{ if (((((!(enabled)) || (!(_verticalScrollBar.visible)))) || ((contentHeight <= availableHeight)))){ return; }; _verticalScrollBar.scrollPosition = (_verticalScrollBar.scrollPosition - (_arg1.delta * verticalLineScrollSize)); setVerticalScrollPosition(_verticalScrollBar.scrollPosition); dispatchEvent(new ScrollEvent(ScrollBarDirection.VERTICAL, _arg1.delta, horizontalScrollPosition)); } public function get verticalScrollPosition():Number{ return (_verticalScrollBar.scrollPosition); } protected function drawDisabledOverlay():void{ if (enabled){ if (contains(disabledOverlay)){ removeChild(disabledOverlay); }; } else { disabledOverlay.x = (disabledOverlay.y = contentPadding); disabledOverlay.width = availableWidth; disabledOverlay.height = availableHeight; disabledOverlay.alpha = (getStyleValue("disabledAlpha") as Number); addChild(disabledOverlay); }; } public function set verticalScrollPosition(_arg1:Number):void{ drawNow(); _verticalScrollBar.scrollPosition = _arg1; setVerticalScrollPosition(_verticalScrollBar.scrollPosition, false); } protected function setContentSize(_arg1:Number, _arg2:Number):void{ if ((((((contentWidth == _arg1)) || (useFixedHorizontalScrolling))) && ((contentHeight == _arg2)))){ return; }; contentWidth = _arg1; contentHeight = _arg2; invalidate(InvalidationType.SIZE); } public function get horizontalScrollPosition():Number{ return (_horizontalScrollBar.scrollPosition); } public function get horizontalScrollBar():ScrollBar{ return (_horizontalScrollBar); } override public function set enabled(_arg1:Boolean):void{ if (enabled == _arg1){ return; }; _verticalScrollBar.enabled = _arg1; _horizontalScrollBar.enabled = _arg1; super.enabled = _arg1; } public function get verticalLineScrollSize():Number{ return (_verticalScrollBar.lineScrollSize); } public function get horizontalScrollPolicy():String{ return (_horizontalScrollPolicy); } protected function calculateAvailableSize():void{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = ScrollBar.WIDTH; _local2 = (contentPadding = Number(getStyleValue("contentPadding"))); _local3 = ((height - (2 * _local2)) - vOffset); vScrollBar = (((_verticalScrollPolicy == ScrollPolicy.ON)) || ((((_verticalScrollPolicy == ScrollPolicy.AUTO)) && ((contentHeight > _local3))))); _local4 = ((width - (vScrollBar) ? _local1 : 0) - (2 * _local2)); _local5 = (useFixedHorizontalScrolling) ? _maxHorizontalScrollPosition : (contentWidth - _local4); hScrollBar = (((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((_local5 > 0))))); if (hScrollBar){ _local3 = (_local3 - _local1); }; if (((((((hScrollBar) && (!(vScrollBar)))) && ((_verticalScrollPolicy == ScrollPolicy.AUTO)))) && ((contentHeight > _local3)))){ vScrollBar = true; _local4 = (_local4 - _local1); }; availableHeight = (_local3 + vOffset); availableWidth = _local4; } public function get maxVerticalScrollPosition():Number{ drawNow(); return (Math.max(0, (contentHeight - availableHeight))); } public function set horizontalScrollPosition(_arg1:Number):void{ drawNow(); _horizontalScrollBar.scrollPosition = _arg1; setHorizontalScrollPosition(_horizontalScrollBar.scrollPosition, false); } public function get horizontalLineScrollSize():Number{ return (_horizontalScrollBar.lineScrollSize); } public function set verticalPageScrollSize(_arg1:Number):void{ _verticalPageScrollSize = _arg1; invalidate(InvalidationType.SIZE); } public function get verticalScrollPolicy():String{ return (_verticalScrollPolicy); } protected function setHorizontalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ } public function get useBitmapScrolling():Boolean{ return (_useBitmpScrolling); } protected function handleScroll(_arg1:ScrollEvent):void{ if (_arg1.target == _verticalScrollBar){ setVerticalScrollPosition(_arg1.position); } else { setHorizontalScrollPosition(_arg1.position); }; } public function set verticalLineScrollSize(_arg1:Number):void{ _verticalScrollBar.lineScrollSize = _arg1; } public function get verticalScrollBar():ScrollBar{ return (_verticalScrollBar); } protected function setVerticalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ } public function set horizontalPageScrollSize(_arg1:Number):void{ _horizontalPageScrollSize = _arg1; invalidate(InvalidationType.SIZE); } override protected function draw():void{ if (isInvalid(InvalidationType.STYLES)){ setStyles(); drawBackground(); if (contentPadding != getStyleValue("contentPadding")){ invalidate(InvalidationType.SIZE, false); }; }; if (isInvalid(InvalidationType.SIZE, InvalidationType.STATE)){ drawLayout(); }; updateChildren(); super.draw(); } public function set horizontalScrollPolicy(_arg1:String):void{ _horizontalScrollPolicy = _arg1; invalidate(InvalidationType.SIZE); } override protected function configUI():void{ var _local1:Graphics; super.configUI(); contentScrollRect = new Rectangle(0, 0, 85, 85); _verticalScrollBar = new ScrollBar(); _verticalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScroll, false, 0, true); _verticalScrollBar.visible = false; _verticalScrollBar.lineScrollSize = defaultLineScrollSize; addChild(_verticalScrollBar); copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES); _horizontalScrollBar = new ScrollBar(); _horizontalScrollBar.direction = ScrollBarDirection.HORIZONTAL; _horizontalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScroll, false, 0, true); _horizontalScrollBar.visible = false; _horizontalScrollBar.lineScrollSize = defaultLineScrollSize; addChild(_horizontalScrollBar); copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES); disabledOverlay = new Shape(); _local1 = disabledOverlay.graphics; _local1.beginFill(0xFFFFFF); _local1.drawRect(0, 0, width, height); _local1.endFill(); addEventListener(MouseEvent.MOUSE_WHEEL, handleWheel, false, 0, true); } protected function calculateContentWidth():void{ } public function get verticalPageScrollSize():Number{ if (isNaN(availableHeight)){ drawNow(); }; return (((((_verticalPageScrollSize == 0)) && (!(isNaN(availableHeight))))) ? availableHeight : _verticalPageScrollSize); } protected function drawLayout():void{ calculateAvailableSize(); calculateContentWidth(); background.width = width; background.height = height; if (vScrollBar){ _verticalScrollBar.visible = true; _verticalScrollBar.x = ((width - ScrollBar.WIDTH) - contentPadding); _verticalScrollBar.y = contentPadding; _verticalScrollBar.height = availableHeight; } else { _verticalScrollBar.visible = false; }; _verticalScrollBar.setScrollProperties(availableHeight, 0, (contentHeight - availableHeight), verticalPageScrollSize); setVerticalScrollPosition(_verticalScrollBar.scrollPosition, false); if (hScrollBar){ _horizontalScrollBar.visible = true; _horizontalScrollBar.x = contentPadding; _horizontalScrollBar.y = ((height - ScrollBar.WIDTH) - contentPadding); _horizontalScrollBar.width = availableWidth; } else { _horizontalScrollBar.visible = false; }; _horizontalScrollBar.setScrollProperties(availableWidth, 0, (useFixedHorizontalScrolling) ? _maxHorizontalScrollPosition : (contentWidth - availableWidth), horizontalPageScrollSize); setHorizontalScrollPosition(_horizontalScrollBar.scrollPosition, false); drawDisabledOverlay(); } protected function drawBackground():void{ var _local1:DisplayObject; _local1 = background; background = getDisplayObjectInstance(getStyleValue("skin")); background.width = width; background.height = height; addChildAt(background, 0); if (((!((_local1 == null))) && (!((_local1 == background))))){ removeChild(_local1); }; } public function set horizontalLineScrollSize(_arg1:Number):void{ _horizontalScrollBar.lineScrollSize = _arg1; } public function get horizontalPageScrollSize():Number{ if (isNaN(availableWidth)){ drawNow(); }; return (((((_horizontalPageScrollSize == 0)) && (!(isNaN(availableWidth))))) ? availableWidth : _horizontalPageScrollSize); } public function get maxHorizontalScrollPosition():Number{ drawNow(); return (Math.max(0, (contentWidth - availableWidth))); } protected function setStyles():void{ copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES); copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES); } protected function updateChildren():void{ _verticalScrollBar.enabled = (_horizontalScrollBar.enabled = enabled); _verticalScrollBar.drawNow(); _horizontalScrollBar.drawNow(); } public function set verticalScrollPolicy(_arg1:String):void{ _verticalScrollPolicy = _arg1; invalidate(InvalidationType.SIZE); } public function set useBitmapScrolling(_arg1:Boolean):void{ _useBitmpScrolling = _arg1; invalidate(InvalidationType.STATE); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, ScrollBar.getStyleDefinition())); } } }//package fl.containers
Section 8
//CellRenderer (fl.controls.listClasses.CellRenderer) package fl.controls.listClasses { import fl.controls.*; import flash.events.*; public class CellRenderer extends LabelButton implements ICellRenderer { protected var _data:Object; protected var _listData:ListData; private static var defaultStyles:Object = {upSkin:"CellRenderer_upSkin", downSkin:"CellRenderer_downSkin", overSkin:"CellRenderer_overSkin", disabledSkin:"CellRenderer_disabledSkin", selectedDisabledSkin:"CellRenderer_selectedDisabledSkin", selectedUpSkin:"CellRenderer_selectedUpSkin", selectedDownSkin:"CellRenderer_selectedDownSkin", selectedOverSkin:"CellRenderer_selectedOverSkin", textFormat:null, disabledTextFormat:null, embedFonts:null, textPadding:5}; public function CellRenderer():void{ toggle = true; focusEnabled = false; } override protected function toggleSelected(_arg1:MouseEvent):void{ } override public function get selected():Boolean{ return (super.selected); } public function set listData(_arg1:ListData):void{ _listData = _arg1; label = _listData.label; setStyle("icon", _listData.icon); } override public function set selected(_arg1:Boolean):void{ super.selected = _arg1; } public function set data(_arg1:Object):void{ _data = _arg1; } public function get listData():ListData{ return (_listData); } override public function setSize(_arg1:Number, _arg2:Number):void{ super.setSize(_arg1, _arg2); } override protected function drawLayout():void{ var _local1:Number; var _local2:Number; var _local3:Number; _local1 = Number(getStyleValue("textPadding")); _local2 = 0; if (icon != null){ icon.x = _local1; icon.y = Math.round(((height - icon.height) >> 1)); _local2 = (icon.width + _local1); }; if (label.length > 0){ textField.visible = true; _local3 = Math.max(0, ((width - _local2) - (_local1 * 2))); textField.width = _local3; textField.height = (textField.textHeight + 4); textField.x = (_local2 + _local1); textField.y = Math.round(((height - textField.height) >> 1)); } else { textField.visible = false; }; background.width = width; background.height = height; } public function get data():Object{ return (_data); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls.listClasses
Section 9
//ICellRenderer (fl.controls.listClasses.ICellRenderer) package fl.controls.listClasses { public interface ICellRenderer { function setSize(_arg1:Number, _arg2:Number):void; function get listData():ListData; function get data():Object; function setMouseState(_arg1:String):void; function set x(_arg1:Number):void; function set y(_arg1:Number):void; function set data(_arg1:Object):void; function set selected(_arg1:Boolean):void; function set listData(_arg1:ListData):void; function get selected():Boolean; } }//package fl.controls.listClasses
Section 10
//ListData (fl.controls.listClasses.ListData) package fl.controls.listClasses { import fl.core.*; public class ListData { protected var _index:uint; protected var _owner:UIComponent; protected var _label:String; protected var _icon:Object;// = null protected var _row:uint; protected var _column:uint; public function ListData(_arg1:String, _arg2:Object, _arg3:UIComponent, _arg4:uint, _arg5:uint, _arg6:uint=0){ _icon = null; super(); _label = _arg1; _icon = _arg2; _owner = _arg3; _index = _arg4; _row = _arg5; _column = _arg6; } public function get owner():UIComponent{ return (_owner); } public function get label():String{ return (_label); } public function get row():uint{ return (_row); } public function get index():uint{ return (_index); } public function get icon():Object{ return (_icon); } public function get column():uint{ return (_column); } } }//package fl.controls.listClasses
Section 11
//BaseButton (fl.controls.BaseButton) package fl.controls { import fl.core.*; import flash.display.*; import flash.events.*; import flash.utils.*; import fl.events.*; public class BaseButton extends UIComponent { protected var _selected:Boolean;// = false private var unlockedMouseState:String; protected var pressTimer:Timer; protected var mouseState:String; protected var background:DisplayObject; private var _mouseStateLocked:Boolean;// = false protected var _autoRepeat:Boolean;// = false private static var defaultStyles:Object = {upSkin:"Button_upSkin", downSkin:"Button_downSkin", overSkin:"Button_overSkin", disabledSkin:"Button_disabledSkin", selectedDisabledSkin:"Button_selectedDisabledSkin", selectedUpSkin:"Button_selectedUpSkin", selectedDownSkin:"Button_selectedDownSkin", selectedOverSkin:"Button_selectedOverSkin", focusRectSkin:null, focusRectPadding:null, repeatDelay:500, repeatInterval:35}; public function BaseButton(){ _selected = false; _autoRepeat = false; _mouseStateLocked = false; super(); buttonMode = true; mouseChildren = false; useHandCursor = false; setupMouseEvents(); setMouseState("up"); pressTimer = new Timer(1, 0); pressTimer.addEventListener(TimerEvent.TIMER, buttonDown, false, 0, true); } protected function endPress():void{ pressTimer.reset(); } public function set mouseStateLocked(_arg1:Boolean):void{ _mouseStateLocked = _arg1; if (_arg1 == false){ setMouseState(unlockedMouseState); } else { unlockedMouseState = mouseState; }; } public function get autoRepeat():Boolean{ return (_autoRepeat); } public function set autoRepeat(_arg1:Boolean):void{ _autoRepeat = _arg1; } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; mouseEnabled = _arg1; } public function get selected():Boolean{ return (_selected); } protected function mouseEventHandler(_arg1:MouseEvent):void{ if (_arg1.type == MouseEvent.MOUSE_DOWN){ setMouseState("down"); startPress(); } else { if ((((_arg1.type == MouseEvent.ROLL_OVER)) || ((_arg1.type == MouseEvent.MOUSE_UP)))){ setMouseState("over"); endPress(); } else { if (_arg1.type == MouseEvent.ROLL_OUT){ setMouseState("up"); endPress(); }; }; }; } public function setMouseState(_arg1:String):void{ if (_mouseStateLocked){ unlockedMouseState = _arg1; return; }; if (mouseState == _arg1){ return; }; mouseState = _arg1; invalidate(InvalidationType.STATE); } protected function startPress():void{ if (_autoRepeat){ pressTimer.delay = Number(getStyleValue("repeatDelay")); pressTimer.start(); }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } protected function buttonDown(_arg1:TimerEvent):void{ if (!_autoRepeat){ endPress(); return; }; if (pressTimer.currentCount == 1){ pressTimer.delay = Number(getStyleValue("repeatInterval")); }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } public function set selected(_arg1:Boolean):void{ if (_selected == _arg1){ return; }; _selected = _arg1; invalidate(InvalidationType.STATE); } override public function get enabled():Boolean{ return (super.enabled); } override protected function draw():void{ if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawBackground(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; super.draw(); } protected function setupMouseEvents():void{ addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.MOUSE_UP, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler, false, 0, true); } protected function drawLayout():void{ background.width = width; background.height = height; } protected function drawBackground():void{ var _local1:String; var _local2:DisplayObject; _local1 = (enabled) ? mouseState : "disabled"; if (selected){ _local1 = (("selected" + _local1.substr(0, 1).toUpperCase()) + _local1.substr(1)); }; _local1 = (_local1 + "Skin"); _local2 = background; background = getDisplayObjectInstance(getStyleValue(_local1)); addChildAt(background, 0); if (((!((_local2 == null))) && (!((_local2 == background))))){ removeChild(_local2); }; } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 12
//Button (fl.controls.Button) package fl.controls { import fl.core.*; import flash.display.*; import fl.managers.*; public class Button extends LabelButton implements IFocusManagerComponent { protected var emphasizedBorder:DisplayObject; protected var _emphasized:Boolean;// = false private static var defaultStyles:Object = {emphasizedSkin:"Button_emphasizedSkin", emphasizedPadding:2}; public static var createAccessibilityImplementation:Function; public function Button(){ _emphasized = false; super(); } override public function drawFocus(_arg1:Boolean):void{ var _local2:Number; var _local3:*; super.drawFocus(_arg1); if (_arg1){ _local2 = Number(getStyleValue("emphasizedPadding")); if ((((_local2 < 0)) || (!(_emphasized)))){ _local2 = 0; }; _local3 = getStyleValue("focusRectPadding"); _local3 = ((_local3)==null) ? 2 : _local3; _local3 = (_local3 + _local2); uiFocusRect.x = -(_local3); uiFocusRect.y = -(_local3); uiFocusRect.width = (width + (_local3 * 2)); uiFocusRect.height = (height + (_local3 * 2)); }; } public function set emphasized(_arg1:Boolean):void{ _emphasized = _arg1; invalidate(InvalidationType.STYLES); } override protected function draw():void{ if (((isInvalid(InvalidationType.STYLES)) || (isInvalid(InvalidationType.SIZE)))){ drawEmphasized(); }; super.draw(); if (emphasizedBorder != null){ setChildIndex(emphasizedBorder, (numChildren - 1)); }; } public function get emphasized():Boolean{ return (_emphasized); } override protected function initializeAccessibility():void{ if (Button.createAccessibilityImplementation != null){ Button.createAccessibilityImplementation(this); }; } protected function drawEmphasized():void{ var _local1:Object; var _local2:Number; if (emphasizedBorder != null){ removeChild(emphasizedBorder); }; emphasizedBorder = null; if (!_emphasized){ return; }; _local1 = getStyleValue("emphasizedSkin"); if (_local1 != null){ emphasizedBorder = getDisplayObjectInstance(_local1); }; if (emphasizedBorder != null){ addChildAt(emphasizedBorder, 0); _local2 = Number(getStyleValue("emphasizedPadding")); emphasizedBorder.x = (emphasizedBorder.y = -(_local2)); emphasizedBorder.width = (width + (_local2 * 2)); emphasizedBorder.height = (height + (_local2 * 2)); }; } public static function getStyleDefinition():Object{ return (UIComponent.mergeStyles(LabelButton.getStyleDefinition(), defaultStyles)); } } }//package fl.controls
Section 13
//ButtonLabelPlacement (fl.controls.ButtonLabelPlacement) package fl.controls { public class ButtonLabelPlacement { public static const TOP:String = "top"; public static const LEFT:String = "left"; public static const BOTTOM:String = "bottom"; public static const RIGHT:String = "right"; } }//package fl.controls
Section 14
//ComboBox (fl.controls.ComboBox) package fl.controls { import fl.controls.listClasses.*; import fl.core.*; import flash.display.*; import flash.events.*; import fl.data.*; import fl.managers.*; import fl.events.*; import flash.text.*; import flash.geom.*; import flash.ui.*; public class ComboBox extends UIComponent implements IFocusManagerComponent { protected var _dropdownWidth:Number; protected var highlightedCell:int;// = -1 protected var _prompt:String; protected var isOpen:Boolean;// = false protected var list:List; protected var _rowCount:uint;// = 5 protected var currentIndex:int; protected var isKeyDown:Boolean;// = false protected var _labels:Array; protected var background:BaseButton; protected var inputField:TextInput; protected var listOverIndex:uint; protected var editableValue:String; protected var _editable:Boolean;// = false private var collectionItemImport:SimpleCollectionItem; protected static const BACKGROUND_STYLES:Object = {overSkin:"overSkin", downSkin:"downSkin", upSkin:"upSkin", disabledSkin:"disabledSkin", repeatInterval:"repeatInterval"}; protected static const LIST_STYLES:Object = {upSkin:"comboListUpSkin", overSkin:"comboListOverSkin", downSkin:"comobListDownSkin", disabledSkin:"comboListDisabledSkin", downArrowDisabledSkin:"downArrowDisabledSkin", downArrowDownSkin:"downArrowDownSkin", downArrowOverSkin:"downArrowOverSkin", downArrowUpSkin:"downArrowUpSkin", upArrowDisabledSkin:"upArrowDisabledSkin", upArrowDownSkin:"upArrowDownSkin", upArrowOverSkin:"upArrowOverSkin", upArrowUpSkin:"upArrowUpSkin", thumbDisabledSkin:"thumbDisabledSkin", thumbDownSkin:"thumbDownSkin", thumbOverSkin:"thumbOverSkin", thumbUpSkin:"thumbUpSkin", thumbIcon:"thumbIcon", trackDisabledSkin:"trackDisabledSkin", trackDownSkin:"trackDownSkin", trackOverSkin:"trackOverSkin", trackUpSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval", textFormat:"textFormat", disabledAlpha:"disabledAlpha", skin:"listSkin"}; private static var defaultStyles:Object = {upSkin:"ComboBox_upSkin", downSkin:"ComboBox_downSkin", overSkin:"ComboBox_overSkin", disabledSkin:"ComboBox_disabledSkin", focusRectSkin:null, focusRectPadding:null, textFormat:null, disabledTextFormat:null, textPadding:3, buttonWidth:24, disabledAlpha:null, listSkin:null}; public static var createAccessibilityImplementation:Function; public function ComboBox(){ _rowCount = 5; _editable = false; isOpen = false; highlightedCell = -1; isKeyDown = false; super(); } protected function drawList():void{ list.rowCount = Math.max(0, Math.min(_rowCount, list.dataProvider.length)); } public function set imeMode(_arg1:String):void{ inputField.imeMode = _arg1; } public function get dropdown():List{ return (list); } public function get dropdownWidth():Number{ return (list.width); } public function sortItemsOn(_arg1:String, _arg2:Object=null){ return (list.sortItemsOn(_arg1, _arg2)); } protected function onEnter(_arg1:ComponentEvent):void{ _arg1.stopPropagation(); } public function removeItemAt(_arg1:uint):void{ list.removeItemAt(_arg1); invalidate(InvalidationType.DATA); } public function open():void{ currentIndex = selectedIndex; if (((isOpen) || ((length == 0)))){ return; }; dispatchEvent(new Event(Event.OPEN)); isOpen = true; addEventListener(Event.ENTER_FRAME, addCloseListener, false, 0, true); positionList(); list.scrollToSelected(); stage.addChild(list); } public function get selectedItem():Object{ return (list.selectedItem); } public function set text(_arg1:String):void{ if (!editable){ return; }; inputField.text = _arg1; } public function get labelField():String{ return (list.labelField); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ var _local2:int; var _local3:uint; var _local4:Number; var _local5:int; isKeyDown = true; if (_arg1.ctrlKey){ switch (_arg1.keyCode){ case Keyboard.UP: if (highlightedCell > -1){ selectedIndex = highlightedCell; dispatchEvent(new Event(Event.CHANGE)); }; close(); break; case Keyboard.DOWN: open(); break; }; return; }; _arg1.stopPropagation(); _local2 = Math.max(((calculateAvailableHeight() / list.rowHeight) << 0), 1); _local3 = selectedIndex; _local4 = ((highlightedCell)==-1) ? selectedIndex : highlightedCell; _local5 = -1; switch (_arg1.keyCode){ case Keyboard.SPACE: if (isOpen){ close(); } else { open(); }; return; case Keyboard.ESCAPE: if (isOpen){ if (highlightedCell > -1){ selectedIndex = selectedIndex; }; close(); }; return; case Keyboard.UP: _local5 = Math.max(0, (_local4 - 1)); break; case Keyboard.DOWN: _local5 = Math.min((length - 1), (_local4 + 1)); break; case Keyboard.PAGE_UP: _local5 = Math.max((_local4 - _local2), 0); break; case Keyboard.PAGE_DOWN: _local5 = Math.min((_local4 + _local2), (length - 1)); break; case Keyboard.HOME: _local5 = 0; break; case Keyboard.END: _local5 = (length - 1); break; case Keyboard.ENTER: if (((_editable) && ((highlightedCell == -1)))){ editableValue = inputField.text; selectedIndex = -1; } else { if (((isOpen) && ((highlightedCell > -1)))){ editableValue = null; selectedIndex = highlightedCell; dispatchEvent(new Event(Event.CHANGE)); }; }; dispatchEvent(new ComponentEvent(ComponentEvent.ENTER)); close(); return; default: if (editable){ break; }; _local5 = list.getNextIndexAtLetter(String.fromCharCode(_arg1.keyCode), _local4); break; }; if (_local5 > -1){ if (isOpen){ highlightCell(_local5); inputField.text = list.itemToLabel(getItemAt(_local5)); } else { highlightCell(); selectedIndex = _local5; dispatchEvent(new Event(Event.CHANGE)); }; }; } public function set dropdownWidth(_arg1:Number):void{ _dropdownWidth = _arg1; invalidate(InvalidationType.SIZE); } public function get editable():Boolean{ return (_editable); } override protected function focusInHandler(_arg1:FocusEvent):void{ super.focusInHandler(_arg1); if (editable){ stage.focus = inputField.textField; }; } protected function onStageClick(_arg1:MouseEvent):void{ if (!isOpen){ return; }; if (((!(contains((_arg1.target as DisplayObject)))) && (!(list.contains((_arg1.target as DisplayObject)))))){ if (highlightedCell != -1){ selectedIndex = highlightedCell; dispatchEvent(new Event(Event.CHANGE)); }; close(); }; } protected function handleDataChange(_arg1:DataChangeEvent):void{ invalidate(InvalidationType.DATA); } override protected function keyUpHandler(_arg1:KeyboardEvent):void{ isKeyDown = false; } protected function onListItemUp(_arg1:MouseEvent):void{ var _local2:*; stage.removeEventListener(MouseEvent.MOUSE_UP, onListItemUp); if (((!((_arg1.target is ICellRenderer))) || (!(list.contains((_arg1.target as DisplayObject)))))){ return; }; editableValue = null; _local2 = selectedIndex; selectedIndex = _arg1.target.listData.index; if (_local2 != selectedIndex){ dispatchEvent(new Event(Event.CHANGE)); }; close(); } public function removeAll():void{ list.removeAll(); inputField.text = ""; invalidate(InvalidationType.DATA); } public function set selectedItem(_arg1:Object):void{ list.selectedItem = _arg1; invalidate(InvalidationType.SELECTED); } protected function highlightCell(_arg1:int=-1):void{ var _local2:ICellRenderer; if (highlightedCell > -1){ _local2 = list.itemToCellRenderer(getItemAt(highlightedCell)); if (_local2 != null){ _local2.setMouseState("up"); }; }; if (_arg1 == -1){ return; }; list.scrollToIndex(_arg1); list.drawNow(); _local2 = list.itemToCellRenderer(getItemAt(_arg1)); if (_local2 != null){ _local2.setMouseState("over"); highlightedCell = _arg1; }; } public function itemToLabel(_arg1:Object):String{ if (_arg1 == null){ return (""); }; return (list.itemToLabel(_arg1)); } public function addItemAt(_arg1:Object, _arg2:uint):void{ list.addItemAt(_arg1, _arg2); invalidate(InvalidationType.DATA); } public function replaceItemAt(_arg1:Object, _arg2:uint):Object{ return (list.replaceItemAt(_arg1, _arg2)); } protected function showPrompt():void{ inputField.text = _prompt; } public function set rowCount(_arg1:uint):void{ _rowCount = _arg1; invalidate(InvalidationType.SIZE); } public function get restrict():String{ return (inputField.restrict); } protected function setEmbedFonts():void{ var _local1:Object; _local1 = getStyleValue("embedFonts"); if (_local1 != null){ inputField.textField.embedFonts = _local1; }; } public function sortItems(... _args){ return (list.sortItems.apply(list, _args)); } public function set labelField(_arg1:String):void{ list.labelField = _arg1; invalidate(InvalidationType.DATA); } public function set editable(_arg1:Boolean):void{ _editable = _arg1; drawTextField(); } public function set prompt(_arg1:String):void{ if (_arg1 == ""){ _prompt = null; } else { _prompt = _arg1; }; invalidate(InvalidationType.STATE); } public function get length():int{ return (list.length); } protected function drawTextField():void{ inputField.setStyle("upSkin", ""); inputField.setStyle("disabledSkin", ""); inputField.enabled = enabled; inputField.editable = _editable; inputField.textField.selectable = ((enabled) && (_editable)); inputField.mouseEnabled = (inputField.mouseChildren = ((enabled) && (_editable))); inputField.focusEnabled = false; if (_editable){ inputField.addEventListener(FocusEvent.FOCUS_IN, onInputFieldFocus, false, 0, true); inputField.addEventListener(FocusEvent.FOCUS_OUT, onInputFieldFocusOut, false, 0, true); } else { inputField.removeEventListener(FocusEvent.FOCUS_IN, onInputFieldFocus); inputField.removeEventListener(FocusEvent.FOCUS_OUT, onInputFieldFocusOut); }; } protected function onInputFieldFocusOut(_arg1:FocusEvent):void{ inputField.removeEventListener(ComponentEvent.ENTER, onEnter); selectedIndex = selectedIndex; } protected function passEvent(_arg1:Event):void{ dispatchEvent(_arg1); } public function get imeMode():String{ return (inputField.imeMode); } public function get labelFunction():Function{ return (list.labelFunction); } protected function calculateAvailableHeight():Number{ var _local1:Number; _local1 = Number(getStyleValue("contentPadding")); return ((list.height - (_local1 * 2))); } public function get selectedIndex():int{ return (list.selectedIndex); } override protected function focusOutHandler(_arg1:FocusEvent):void{ isKeyDown = false; if (isOpen){ if (((!(_arg1.relatedObject)) || (!(list.contains(_arg1.relatedObject))))){ if (((!((highlightedCell == -1))) && (!((highlightedCell == selectedIndex))))){ selectedIndex = highlightedCell; dispatchEvent(new Event(Event.CHANGE)); }; close(); }; }; super.focusOutHandler(_arg1); } public function get selectedLabel():String{ if (editableValue != null){ return (editableValue); }; if (selectedIndex == -1){ return (null); }; return (itemToLabel(selectedItem)); } public function get text():String{ return (inputField.text); } protected function onListChange(_arg1:Event):void{ editableValue = null; dispatchEvent(_arg1); invalidate(InvalidationType.SELECTED); if (isKeyDown){ return; }; close(); } protected function onToggleListVisibility(_arg1:MouseEvent):void{ _arg1.stopPropagation(); dispatchEvent(_arg1); if (isOpen){ close(); } else { open(); stage.addEventListener(MouseEvent.MOUSE_UP, onListItemUp, false, 0, true); }; } override protected function draw():void{ var _local1:*; _local1 = selectedIndex; if ((((_local1 == -1)) && (((((!((prompt == null))) || (editable))) || ((length == 0)))))){ _local1 = Math.max(-1, Math.min(_local1, (length - 1))); } else { editableValue = null; _local1 = Math.max(0, Math.min(_local1, (length - 1))); }; if (list.selectedIndex != _local1){ list.selectedIndex = _local1; invalidate(InvalidationType.SELECTED, false); }; if (isInvalid(InvalidationType.STYLES)){ setStyles(); setEmbedFonts(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE, InvalidationType.DATA, InvalidationType.STATE)){ drawTextFormat(); drawLayout(); invalidate(InvalidationType.DATA); }; if (isInvalid(InvalidationType.DATA)){ drawList(); invalidate(InvalidationType.SELECTED, true); }; if (isInvalid(InvalidationType.SELECTED)){ if ((((_local1 == -1)) && (!((editableValue == null))))){ inputField.text = editableValue; } else { if (_local1 > -1){ if (length > 0){ inputField.horizontalScrollPosition = 0; inputField.text = itemToLabel(list.selectedItem); }; } else { if ((((_local1 == -1)) && (!((_prompt == null))))){ showPrompt(); } else { inputField.text = ""; }; }; }; if (((((editable) && ((selectedIndex > -1)))) && ((stage.focus == inputField.textField)))){ inputField.setSelection(0, inputField.length); }; }; drawTextField(); super.draw(); } public function addItem(_arg1:Object):void{ list.addItem(_arg1); invalidate(InvalidationType.DATA); } public function get rowCount():uint{ return (_rowCount); } override protected function configUI():void{ super.configUI(); background = new BaseButton(); background.focusEnabled = false; copyStylesToChild(background, BACKGROUND_STYLES); background.addEventListener(MouseEvent.MOUSE_DOWN, onToggleListVisibility, false, 0, true); addChild(background); inputField = new TextInput(); inputField.focusTarget = (this as IFocusManagerComponent); inputField.focusEnabled = false; inputField.addEventListener(Event.CHANGE, onTextInput, false, 0, true); addChild(inputField); list = new List(); list.focusEnabled = false; copyStylesToChild(list, LIST_STYLES); list.addEventListener(Event.CHANGE, onListChange, false, 0, true); list.addEventListener(ListEvent.ITEM_CLICK, onListChange, false, 0, true); list.addEventListener(ListEvent.ITEM_ROLL_OUT, passEvent, false, 0, true); list.addEventListener(ListEvent.ITEM_ROLL_OVER, passEvent, false, 0, true); list.verticalScrollBar.addEventListener(Event.SCROLL, passEvent, false, 0, true); } protected function positionList():void{ var _local1:Point; _local1 = localToGlobal(new Point(0, 0)); list.x = _local1.x; if (((_local1.y + height) + list.height) > stage.stageHeight){ list.y = (_local1.y - list.height); } else { list.y = (_local1.y + height); }; } public function get value():String{ var _local1:Object; if (editableValue != null){ return (editableValue); }; _local1 = selectedItem; if (((!(_editable)) && (!((_local1.data == null))))){ return (_local1.data); }; return (itemToLabel(_local1)); } public function get prompt():String{ return (_prompt); } public function set dataProvider(_arg1:DataProvider):void{ _arg1.addEventListener(DataChangeEvent.DATA_CHANGE, handleDataChange, false, 0, true); list.dataProvider = _arg1; invalidate(InvalidationType.DATA); } public function set restrict(_arg1:String):void{ if (((componentInspectorSetting) && ((_arg1 == "")))){ _arg1 = null; }; if (!_editable){ return; }; inputField.restrict = _arg1; } protected function onTextInput(_arg1:Event):void{ _arg1.stopPropagation(); if (!_editable){ return; }; editableValue = inputField.text; selectedIndex = -1; dispatchEvent(new Event(Event.CHANGE)); } protected function onInputFieldFocus(_arg1:FocusEvent):void{ inputField.addEventListener(ComponentEvent.ENTER, onEnter, false, 0, true); close(); } public function getItemAt(_arg1:uint):Object{ return (list.getItemAt(_arg1)); } override protected function initializeAccessibility():void{ if (ComboBox.createAccessibilityImplementation != null){ ComboBox.createAccessibilityImplementation(this); }; } protected function drawLayout():void{ var _local1:Number; var _local2:Number; _local1 = (getStyleValue("buttonWidth") as Number); _local2 = (getStyleValue("textPadding") as Number); background.setSize(width, height); inputField.x = (inputField.y = _local2); inputField.setSize(((width - _local1) - _local2), (height - _local2)); list.width = (isNaN(_dropdownWidth)) ? width : _dropdownWidth; background.enabled = enabled; background.drawNow(); } public function removeItem(_arg1:Object):Object{ return (list.removeItem(_arg1)); } private function addCloseListener(_arg1:Event){ removeEventListener(Event.ENTER_FRAME, addCloseListener); if (!isOpen){ return; }; stage.addEventListener(MouseEvent.MOUSE_DOWN, onStageClick, false, 0, true); } public function get dataProvider():DataProvider{ return (list.dataProvider); } public function get textField():TextInput{ return (inputField); } protected function setStyles():void{ copyStylesToChild(background, BACKGROUND_STYLES); copyStylesToChild(list, LIST_STYLES); } public function set labelFunction(_arg1:Function):void{ list.labelFunction = _arg1; invalidate(InvalidationType.DATA); } protected function drawTextFormat():void{ var _local1:TextFormat; _local1 = (getStyleValue((_enabled) ? "textFormat" : "disabledTextFormat") as TextFormat); if (_local1 == null){ _local1 = new TextFormat(); }; inputField.textField.defaultTextFormat = _local1; inputField.textField.setTextFormat(_local1); setEmbedFonts(); } public function set selectedIndex(_arg1:int):void{ list.selectedIndex = _arg1; highlightCell(); invalidate(InvalidationType.SELECTED); } public function close():void{ highlightCell(); highlightedCell = -1; if (!isOpen){ return; }; dispatchEvent(new Event(Event.CLOSE)); stage.removeEventListener(MouseEvent.MOUSE_DOWN, onStageClick); isOpen = false; stage.removeChild(list); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, List.getStyleDefinition())); } } }//package fl.controls
Section 15
//LabelButton (fl.controls.LabelButton) package fl.controls { import fl.core.*; import flash.display.*; import flash.events.*; import fl.managers.*; import fl.events.*; import flash.text.*; import flash.ui.*; public class LabelButton extends BaseButton implements IFocusManagerComponent { protected var _labelPlacement:String;// = "right" protected var _toggle:Boolean;// = false protected var icon:DisplayObject; protected var oldMouseState:String; protected var mode:String;// = "center" public var textField:TextField; protected var _label:String;// = "Label" private static var defaultStyles:Object = {icon:null, upIcon:null, downIcon:null, overIcon:null, disabledIcon:null, selectedDisabledIcon:null, selectedUpIcon:null, selectedDownIcon:null, selectedOverIcon:null, textFormat:null, disabledTextFormat:null, textPadding:5, embedFonts:false}; public static var createAccessibilityImplementation:Function; public function LabelButton(){ _labelPlacement = ButtonLabelPlacement.RIGHT; _toggle = false; _label = "Label"; mode = "center"; super(); } protected function toggleSelected(_arg1:MouseEvent):void{ selected = !(selected); dispatchEvent(new Event(Event.CHANGE, true)); } public function get labelPlacement():String{ return (_labelPlacement); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ if (!enabled){ return; }; if (_arg1.keyCode == Keyboard.SPACE){ if (oldMouseState == null){ oldMouseState = mouseState; }; setMouseState("down"); startPress(); }; } protected function setEmbedFont(){ var _local1:Object; _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; } override protected function keyUpHandler(_arg1:KeyboardEvent):void{ if (!enabled){ return; }; if (_arg1.keyCode == Keyboard.SPACE){ setMouseState(oldMouseState); oldMouseState = null; endPress(); dispatchEvent(new MouseEvent(MouseEvent.CLICK)); }; } override public function get selected():Boolean{ return ((_toggle) ? _selected : false); } public function set labelPlacement(_arg1:String):void{ _labelPlacement = _arg1; invalidate(InvalidationType.SIZE); } public function set toggle(_arg1:Boolean):void{ if (((!(_arg1)) && (super.selected))){ selected = false; }; _toggle = _arg1; if (_toggle){ addEventListener(MouseEvent.CLICK, toggleSelected, false, 0, true); } else { removeEventListener(MouseEvent.CLICK, toggleSelected); }; invalidate(InvalidationType.STATE); } public function get label():String{ return (_label); } override public function set selected(_arg1:Boolean):void{ _selected = _arg1; if (_toggle){ invalidate(InvalidationType.STATE); }; } override protected function draw():void{ if (textField.text != _label){ label = _label; }; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawBackground(); drawIcon(); drawTextFormat(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){ if (((isFocused) && (focusManager.showFocusIndicator))){ drawFocus(true); }; }; validate(); } public function get toggle():Boolean{ return (_toggle); } override protected function configUI():void{ super.configUI(); textField = new TextField(); textField.type = TextFieldType.DYNAMIC; textField.selectable = false; addChild(textField); } override protected function drawLayout():void{ var _local1:Number; var _local2:String; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local1 = Number(getStyleValue("textPadding")); _local2 = ((((icon == null)) && ((mode == "center")))) ? ButtonLabelPlacement.TOP : _labelPlacement; textField.height = (textField.textHeight + 4); _local3 = (textField.textWidth + 4); _local4 = (textField.textHeight + 4); _local5 = ((icon)==null) ? 0 : (icon.width + _local1); _local6 = ((icon)==null) ? 0 : (icon.height + _local1); textField.visible = (label.length > 0); if (icon != null){ icon.x = Math.round(((width - icon.width) / 2)); icon.y = Math.round(((height - icon.height) / 2)); }; if (textField.visible == false){ textField.width = 0; textField.height = 0; } else { if ((((_local2 == ButtonLabelPlacement.BOTTOM)) || ((_local2 == ButtonLabelPlacement.TOP)))){ _local7 = Math.max(0, Math.min(_local3, (width - (2 * _local1)))); if ((height - 2) > _local4){ _local8 = _local4; } else { _local8 = (height - 2); }; _local3 = _local7; textField.width = _local3; _local4 = _local8; textField.height = _local4; textField.x = Math.round(((width - _local3) / 2)); textField.y = Math.round(((((height - textField.height) - _local6) / 2) + ((_local2)==ButtonLabelPlacement.BOTTOM) ? _local6 : 0)); if (icon != null){ icon.y = Math.round(((_local2)==ButtonLabelPlacement.BOTTOM) ? (textField.y - _local6) : ((textField.y + textField.height) + _local1)); }; } else { _local7 = Math.max(0, Math.min(_local3, ((width - _local5) - (2 * _local1)))); _local3 = _local7; textField.width = _local3; textField.x = Math.round(((((width - _local3) - _local5) / 2) + ((_local2)!=ButtonLabelPlacement.LEFT) ? _local5 : 0)); textField.y = Math.round(((height - textField.height) / 2)); if (icon != null){ icon.x = Math.round(((_local2)!=ButtonLabelPlacement.LEFT) ? (textField.x - _local5) : ((textField.x + _local3) + _local1)); }; }; }; super.drawLayout(); } override protected function initializeAccessibility():void{ if (LabelButton.createAccessibilityImplementation != null){ LabelButton.createAccessibilityImplementation(this); }; } protected function drawIcon():void{ var _local1:DisplayObject; var _local2:String; var _local3:Object; _local1 = icon; _local2 = (enabled) ? mouseState : "disabled"; if (selected){ _local2 = (("selected" + _local2.substr(0, 1).toUpperCase()) + _local2.substr(1)); }; _local2 = (_local2 + "Icon"); _local3 = getStyleValue(_local2); if (_local3 == null){ _local3 = getStyleValue("icon"); }; if (_local3 != null){ icon = getDisplayObjectInstance(_local3); }; if (icon != null){ addChildAt(icon, 1); }; if (((!((_local1 == null))) && (!((_local1 == icon))))){ removeChild(_local1); }; } public function set label(_arg1:String):void{ _label = _arg1; if (textField.text != _label){ textField.text = _label; dispatchEvent(new ComponentEvent(ComponentEvent.LABEL_CHANGE)); }; invalidate(InvalidationType.SIZE); invalidate(InvalidationType.STYLES); } protected function drawTextFormat():void{ var _local1:Object; var _local2:TextFormat; var _local3:TextFormat; _local1 = UIComponent.getStyleDefinition(); _local2 = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat); textField.setTextFormat(_local2); _local3 = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat); if (_local3 != null){ textField.setTextFormat(_local3); } else { _local3 = _local2; }; textField.defaultTextFormat = _local3; setEmbedFont(); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, BaseButton.getStyleDefinition())); } } }//package fl.controls
Section 16
//List (fl.controls.List) package fl.controls { import fl.controls.listClasses.*; import fl.core.*; import flash.display.*; import flash.events.*; import flash.utils.*; import fl.managers.*; import flash.geom.*; import flash.ui.*; public class List extends SelectableList implements IFocusManagerComponent { protected var _labelField:String;// = "label" protected var _rowHeight:Number;// = 20 protected var _cellRenderer:Object; protected var _iconField:String;// = "icon" protected var _labelFunction:Function; protected var _iconFunction:Function; private static var defaultStyles:Object = {focusRectSkin:null, focusRectPadding:null}; public static var createAccessibilityImplementation:Function; public function List(){ _rowHeight = 20; _labelField = "label"; _iconField = "icon"; super(); } public function get iconField():String{ return (_iconField); } protected function doKeySelection(_arg1:int, _arg2:Boolean, _arg3:Boolean):void{ var _local4:Boolean; var _local5:int; var _local6:Array; var _local7:int; var _local8:int; _local4 = false; if (_arg2){ _local6 = []; _local7 = lastCaretIndex; _local8 = _arg1; if (_local7 == -1){ _local7 = ((caretIndex)!=-1) ? caretIndex : _arg1; }; if (_local7 > _local8){ _local8 = _local7; _local7 = _arg1; }; _local5 = _local7; while (_local5 <= _local8) { _local6.push(_local5); _local5++; }; selectedIndices = _local6; caretIndex = _arg1; _local4 = true; } else { selectedIndex = _arg1; caretIndex = (lastCaretIndex = _arg1); _local4 = true; }; if (_local4){ dispatchEvent(new Event(Event.CHANGE)); }; invalidate(InvalidationType.DATA); } override protected function drawList():void{ var _local1:Rectangle; var _local2:uint; var _local3:uint; var _local4:uint; var _local5:Object; var _local6:ICellRenderer; var _local7:Dictionary; var _local8:Dictionary; var _local9:Boolean; var _local10:String; var _local11:Object; var _local12:Sprite; var _local13:String; listHolder.x = (listHolder.y = contentPadding); _local1 = listHolder.scrollRect; _local1.x = _horizontalScrollPosition; _local1.y = (Math.floor(_verticalScrollPosition) % rowHeight); listHolder.scrollRect = _local1; listHolder.cacheAsBitmap = useBitmapScrolling; _local2 = Math.floor((_verticalScrollPosition / rowHeight)); _local3 = Math.min(length, ((_local2 + rowCount) + 1)); _local7 = (renderedItems = new Dictionary(true)); _local4 = _local2; while (_local4 < _local3) { _local7[_dataProvider.getItemAt(_local4)] = true; _local4++; }; _local8 = new Dictionary(true); while (activeCellRenderers.length > 0) { _local6 = (activeCellRenderers.pop() as ICellRenderer); _local5 = _local6.data; if ((((_local7[_local5] == null)) || ((invalidItems[_local5] == true)))){ availableCellRenderers.push(_local6); } else { _local8[_local5] = _local6; invalidItems[_local5] = true; }; list.removeChild((_local6 as DisplayObject)); }; invalidItems = new Dictionary(true); _local4 = _local2; while (_local4 < _local3) { _local9 = false; _local5 = _dataProvider.getItemAt(_local4); if (_local8[_local5] != null){ _local9 = true; _local6 = _local8[_local5]; delete _local8[_local5]; } else { if (availableCellRenderers.length > 0){ _local6 = (availableCellRenderers.pop() as ICellRenderer); } else { _local6 = (getDisplayObjectInstance(getStyleValue("cellRenderer")) as ICellRenderer); _local12 = (_local6 as Sprite); if (_local12 != null){ _local12.addEventListener(MouseEvent.CLICK, handleCellRendererClick, false, 0, true); _local12.addEventListener(MouseEvent.ROLL_OVER, handleCellRendererMouseEvent, false, 0, true); _local12.addEventListener(MouseEvent.ROLL_OUT, handleCellRendererMouseEvent, false, 0, true); _local12.addEventListener(Event.CHANGE, handleCellRendererChange, false, 0, true); _local12.doubleClickEnabled = true; _local12.addEventListener(MouseEvent.DOUBLE_CLICK, handleCellRendererDoubleClick, false, 0, true); if (_local12["setStyle"] != null){ for (_local13 in rendererStyles) { var _local16 = _local12; _local16["setStyle"](_local13, rendererStyles[_local13]); }; }; }; }; }; list.addChild((_local6 as Sprite)); activeCellRenderers.push(_local6); _local6.y = (rowHeight * (_local4 - _local2)); _local6.setSize((availableWidth + _maxHorizontalScrollPosition), rowHeight); _local10 = itemToLabel(_local5); _local11 = null; if (_iconFunction != null){ _local11 = _iconFunction(_local5); } else { if (_iconField != null){ _local11 = _local5[_iconField]; }; }; if (!_local9){ _local6.data = _local5; }; _local6.listData = new ListData(_local10, _local11, this, _local4, _local4, 0); _local6.selected = !((_selectedIndices.indexOf(_local4) == -1)); if ((_local6 is UIComponent)){ (_local6 as UIComponent).drawNow(); }; _local4++; }; } public function get iconFunction():Function{ return (_iconFunction); } public function set iconField(_arg1:String):void{ if (_arg1 == _iconField){ return; }; _iconField = _arg1; invalidate(InvalidationType.DATA); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ var _local2:int; if (!selectable){ return; }; switch (_arg1.keyCode){ case Keyboard.UP: case Keyboard.DOWN: case Keyboard.END: case Keyboard.HOME: case Keyboard.PAGE_UP: case Keyboard.PAGE_DOWN: moveSelectionVertically(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection))); break; case Keyboard.LEFT: case Keyboard.RIGHT: moveSelectionHorizontally(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection))); break; case Keyboard.SPACE: if (caretIndex == -1){ caretIndex = 0; }; doKeySelection(caretIndex, _arg1.shiftKey, _arg1.ctrlKey); scrollToSelected(); break; default: _local2 = getNextIndexAtLetter(String.fromCharCode(_arg1.keyCode), selectedIndex); if (_local2 > -1){ selectedIndex = _local2; scrollToSelected(); }; break; }; _arg1.stopPropagation(); } override public function itemToLabel(_arg1:Object):String{ if (_labelFunction != null){ return (String(_labelFunction(_arg1))); }; return (((_arg1[_labelField])!=null) ? String(_arg1[_labelField]) : ""); } public function get labelField():String{ return (_labelField); } override protected function moveSelectionVertically(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{ var _local4:int; var _local5:int; var _local6:int; _local4 = Math.max(Math.floor((calculateAvailableHeight() / rowHeight)), 1); _local5 = -1; _local6 = 0; switch (_arg1){ case Keyboard.UP: if (caretIndex > 0){ _local5 = (caretIndex - 1); }; break; case Keyboard.DOWN: if (caretIndex < (length - 1)){ _local5 = (caretIndex + 1); }; break; case Keyboard.PAGE_UP: if (caretIndex > 0){ _local5 = Math.max((caretIndex - _local4), 0); }; break; case Keyboard.PAGE_DOWN: if (caretIndex < (length - 1)){ _local5 = Math.min((caretIndex + _local4), (length - 1)); }; break; case Keyboard.HOME: if (caretIndex > 0){ _local5 = 0; }; break; case Keyboard.END: if (caretIndex < (length - 1)){ _local5 = (length - 1); }; break; }; if (_local5 >= 0){ doKeySelection(_local5, _arg2, _arg3); scrollToSelected(); }; } public function set labelField(_arg1:String):void{ if (_arg1 == _labelField){ return; }; _labelField = _arg1; invalidate(InvalidationType.DATA); } public function set rowCount(_arg1:uint):void{ var _local2:Number; var _local3:Number; _local2 = Number(getStyleValue("contentPadding")); _local3 = ((((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((_maxHorizontalScrollPosition > 0)))))) ? 15 : 0; height = (((rowHeight * _arg1) + (2 * _local2)) + _local3); } override protected function setHorizontalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ list.x = -(_arg1); super.setHorizontalScrollPosition(_arg1, true); } public function set iconFunction(_arg1:Function):void{ if (_iconFunction == _arg1){ return; }; _iconFunction = _arg1; invalidate(InvalidationType.DATA); } public function get labelFunction():Function{ return (_labelFunction); } override protected function moveSelectionHorizontally(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{ } override protected function setVerticalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ invalidate(InvalidationType.SCROLL); super.setVerticalScrollPosition(_arg1, true); } protected function calculateAvailableHeight():Number{ var _local1:Number; _local1 = Number(getStyleValue("contentPadding")); return (((height - (_local1 * 2)) - ((((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((_maxHorizontalScrollPosition > 0)))))) ? 15 : 0)); } override protected function draw():void{ var _local1:Boolean; _local1 = !((contentHeight == (rowHeight * length))); contentHeight = (rowHeight * length); if (isInvalid(InvalidationType.STYLES)){ setStyles(); drawBackground(); if (contentPadding != getStyleValue("contentPadding")){ invalidate(InvalidationType.SIZE, false); }; if (_cellRenderer != getStyleValue("cellRenderer")){ _invalidateList(); _cellRenderer = getStyleValue("cellRenderer"); }; }; if (((isInvalid(InvalidationType.SIZE, InvalidationType.STATE)) || (_local1))){ drawLayout(); }; if (isInvalid(InvalidationType.RENDERER_STYLES)){ updateRendererStyles(); }; if (isInvalid(InvalidationType.STYLES, InvalidationType.SIZE, InvalidationType.DATA, InvalidationType.SCROLL, InvalidationType.SELECTED)){ drawList(); }; updateChildren(); validate(); } override protected function configUI():void{ useFixedHorizontalScrolling = true; _horizontalScrollPolicy = ScrollPolicy.AUTO; _verticalScrollPolicy = ScrollPolicy.AUTO; super.configUI(); } override public function get rowCount():uint{ return (Math.ceil((calculateAvailableHeight() / rowHeight))); } override protected function initializeAccessibility():void{ if (List.createAccessibilityImplementation != null){ List.createAccessibilityImplementation(this); }; } override public function scrollToIndex(_arg1:int):void{ var _local2:uint; var _local3:uint; drawNow(); _local2 = (Math.floor(((_verticalScrollPosition + availableHeight) / rowHeight)) - 1); _local3 = Math.ceil((_verticalScrollPosition / rowHeight)); if (_arg1 < _local3){ verticalScrollPosition = (_arg1 * rowHeight); } else { if (_arg1 > _local2){ verticalScrollPosition = (((_arg1 + 1) * rowHeight) - availableHeight); }; }; } public function get rowHeight():Number{ return (_rowHeight); } public function set labelFunction(_arg1:Function):void{ if (_labelFunction == _arg1){ return; }; _labelFunction = _arg1; invalidate(InvalidationType.DATA); } public function set rowHeight(_arg1:Number):void{ _rowHeight = _arg1; invalidate(InvalidationType.SIZE); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, SelectableList.getStyleDefinition())); } } }//package fl.controls
Section 17
//ScrollBar (fl.controls.ScrollBar) package fl.controls { import fl.core.*; import flash.events.*; import fl.events.*; public class ScrollBar extends UIComponent { private var _direction:String;// = "vertical" protected var inDrag:Boolean;// = false protected var upArrow:BaseButton; private var _pageScrollSize:Number;// = 0 protected var downArrow:BaseButton; private var _pageSize:Number;// = 10 private var thumbScrollOffset:Number; private var _maxScrollPosition:Number;// = 0 private var _scrollPosition:Number;// = 0 protected var track:BaseButton; private var _minScrollPosition:Number;// = 0 private var _lineScrollSize:Number;// = 1 protected var thumb:LabelButton; protected static const THUMB_STYLES:Object = {disabledSkin:"thumbDisabledSkin", downSkin:"thumbDownSkin", overSkin:"thumbOverSkin", upSkin:"thumbUpSkin", icon:"thumbIcon", textPadding:0}; public static const WIDTH:Number = 15; protected static const DOWN_ARROW_STYLES:Object = {disabledSkin:"downArrowDisabledSkin", downSkin:"downArrowDownSkin", overSkin:"downArrowOverSkin", upSkin:"downArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"}; protected static const UP_ARROW_STYLES:Object = {disabledSkin:"upArrowDisabledSkin", downSkin:"upArrowDownSkin", overSkin:"upArrowOverSkin", upSkin:"upArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"}; protected static const TRACK_STYLES:Object = {disabledSkin:"trackDisabledSkin", downSkin:"trackDownSkin", overSkin:"trackOverSkin", upSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"}; private static var defaultStyles:Object = {downArrowDisabledSkin:"ScrollArrowDown_disabledSkin", downArrowDownSkin:"ScrollArrowDown_downSkin", downArrowOverSkin:"ScrollArrowDown_overSkin", downArrowUpSkin:"ScrollArrowDown_upSkin", thumbDisabledSkin:"ScrollThumb_upSkin", thumbDownSkin:"ScrollThumb_downSkin", thumbOverSkin:"ScrollThumb_overSkin", thumbUpSkin:"ScrollThumb_upSkin", trackDisabledSkin:"ScrollTrack_skin", trackDownSkin:"ScrollTrack_skin", trackOverSkin:"ScrollTrack_skin", trackUpSkin:"ScrollTrack_skin", upArrowDisabledSkin:"ScrollArrowUp_disabledSkin", upArrowDownSkin:"ScrollArrowUp_downSkin", upArrowOverSkin:"ScrollArrowUp_overSkin", upArrowUpSkin:"ScrollArrowUp_upSkin", thumbIcon:"ScrollBar_thumbIcon", repeatDelay:500, repeatInterval:35}; public function ScrollBar(){ _pageSize = 10; _pageScrollSize = 0; _lineScrollSize = 1; _minScrollPosition = 0; _maxScrollPosition = 0; _scrollPosition = 0; _direction = ScrollBarDirection.VERTICAL; inDrag = false; super(); setStyles(); focusEnabled = false; } public function get minScrollPosition():Number{ return (_minScrollPosition); } public function set minScrollPosition(_arg1:Number):void{ setScrollProperties(_pageSize, _arg1, _maxScrollPosition); } public function setScrollPosition(_arg1:Number, _arg2:Boolean=true):void{ var _local3:Number; _local3 = scrollPosition; _scrollPosition = Math.max(_minScrollPosition, Math.min(_maxScrollPosition, _arg1)); if (_local3 == _scrollPosition){ return; }; if (_arg2){ dispatchEvent(new ScrollEvent(_direction, (scrollPosition - _local3), scrollPosition)); }; updateThumb(); } public function set scrollPosition(_arg1:Number):void{ setScrollPosition(_arg1, true); } public function get pageScrollSize():Number{ return (((_pageScrollSize)==0) ? _pageSize : _pageScrollSize); } public function set pageSize(_arg1:Number):void{ if (_arg1 > 0){ _pageSize = _arg1; }; } public function setScrollProperties(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0):void{ this.pageSize = _arg1; _minScrollPosition = _arg2; _maxScrollPosition = _arg3; if (_arg4 >= 0){ _pageScrollSize = _arg4; }; enabled = (_maxScrollPosition > _minScrollPosition); setScrollPosition(_scrollPosition, false); updateThumb(); } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; downArrow.enabled = (track.enabled = (thumb.enabled = (upArrow.enabled = ((enabled) && ((_maxScrollPosition > _minScrollPosition)))))); updateThumb(); } protected function updateThumb():void{ var _local1:Number; _local1 = ((_maxScrollPosition - _minScrollPosition) + _pageSize); if ((((((track.height <= 12)) || ((_maxScrollPosition <= _minScrollPosition)))) || ((((_local1 == 0)) || (isNaN(_local1)))))){ thumb.height = 12; thumb.visible = false; } else { thumb.height = Math.max(13, ((_pageSize / _local1) * track.height)); thumb.y = (track.y + ((track.height - thumb.height) * ((_scrollPosition - _minScrollPosition) / (_maxScrollPosition - _minScrollPosition)))); thumb.visible = enabled; }; } protected function thumbPressHandler(_arg1:MouseEvent):void{ inDrag = true; thumbScrollOffset = (mouseY - thumb.y); thumb.mouseStateLocked = true; mouseChildren = false; stage.addEventListener(MouseEvent.MOUSE_MOVE, handleThumbDrag, false, 0, true); stage.addEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler, false, 0, true); } protected function thumbReleaseHandler(_arg1:MouseEvent):void{ inDrag = false; mouseChildren = true; thumb.mouseStateLocked = false; stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleThumbDrag); stage.removeEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler); } public function set pageScrollSize(_arg1:Number):void{ if (_arg1 >= 0){ _pageScrollSize = _arg1; }; } protected function handleThumbDrag(_arg1:MouseEvent):void{ var _local2:Number; _local2 = Math.max(0, Math.min((track.height - thumb.height), ((mouseY - track.y) - thumbScrollOffset))); setScrollPosition((((_local2 / (track.height - thumb.height)) * (_maxScrollPosition - _minScrollPosition)) + _minScrollPosition)); } public function set direction(_arg1:String):void{ var _local2:Boolean; if (_direction == _arg1){ return; }; _direction = _arg1; if (isLivePreview){ return; }; setScaleY(1); _local2 = (_direction == ScrollBarDirection.HORIZONTAL); if (((_local2) && (componentInspectorSetting))){ if (rotation == 90){ return; }; setScaleX(-1); rotation = -90; }; if (!componentInspectorSetting){ if (((_local2) && ((rotation == 0)))){ rotation = -90; setScaleX(-1); } else { if (((!(_local2)) && ((rotation == -90)))){ rotation = 0; setScaleX(1); }; }; }; invalidate(InvalidationType.SIZE); } public function set lineScrollSize(_arg1:Number):void{ if (_arg1 > 0){ _lineScrollSize = _arg1; }; } override public function get height():Number{ return (((_direction)==ScrollBarDirection.HORIZONTAL) ? super.width : super.height); } protected function scrollPressHandler(_arg1:ComponentEvent):void{ var _local2:Number; var _local3:Number; _arg1.stopImmediatePropagation(); if (_arg1.currentTarget == upArrow){ setScrollPosition((_scrollPosition - _lineScrollSize)); } else { if (_arg1.currentTarget == downArrow){ setScrollPosition((_scrollPosition + _lineScrollSize)); } else { _local2 = (((track.mouseY / track.height) * (_maxScrollPosition - _minScrollPosition)) + _minScrollPosition); _local3 = ((pageScrollSize)==0) ? pageSize : pageScrollSize; if (_scrollPosition < _local2){ setScrollPosition(Math.min(_local2, (_scrollPosition + _local3))); } else { if (_scrollPosition > _local2){ setScrollPosition(Math.max(_local2, (_scrollPosition - _local3))); }; }; }; }; } public function get pageSize():Number{ return (_pageSize); } public function set maxScrollPosition(_arg1:Number):void{ setScrollProperties(_pageSize, _minScrollPosition, _arg1); } public function get scrollPosition():Number{ return (_scrollPosition); } override public function get enabled():Boolean{ return (super.enabled); } override protected function draw():void{ var _local1:Number; if (isInvalid(InvalidationType.SIZE)){ _local1 = super.height; downArrow.move(0, Math.max(upArrow.height, (_local1 - downArrow.height))); track.setSize(WIDTH, Math.max(0, (_local1 - (downArrow.height + upArrow.height)))); updateThumb(); }; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ setStyles(); }; downArrow.drawNow(); upArrow.drawNow(); track.drawNow(); thumb.drawNow(); validate(); } override protected function configUI():void{ super.configUI(); track = new BaseButton(); track.move(0, 14); track.useHandCursor = false; track.autoRepeat = true; track.focusEnabled = false; addChild(track); thumb = new LabelButton(); thumb.label = ""; thumb.setSize(WIDTH, 15); thumb.move(0, 15); thumb.focusEnabled = false; addChild(thumb); downArrow = new BaseButton(); downArrow.setSize(WIDTH, 14); downArrow.autoRepeat = true; downArrow.focusEnabled = false; addChild(downArrow); upArrow = new BaseButton(); upArrow.setSize(WIDTH, 14); upArrow.move(0, 0); upArrow.autoRepeat = true; upArrow.focusEnabled = false; addChild(upArrow); upArrow.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true); downArrow.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true); track.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true); thumb.addEventListener(MouseEvent.MOUSE_DOWN, thumbPressHandler, false, 0, true); enabled = false; } public function get direction():String{ return (_direction); } public function get lineScrollSize():Number{ return (_lineScrollSize); } override public function setSize(_arg1:Number, _arg2:Number):void{ if (_direction == ScrollBarDirection.HORIZONTAL){ super.setSize(_arg2, _arg1); } else { super.setSize(_arg1, _arg2); }; } public function get maxScrollPosition():Number{ return (_maxScrollPosition); } override public function get width():Number{ return (((_direction)==ScrollBarDirection.HORIZONTAL) ? super.height : super.width); } protected function setStyles():void{ copyStylesToChild(downArrow, DOWN_ARROW_STYLES); copyStylesToChild(thumb, THUMB_STYLES); copyStylesToChild(track, TRACK_STYLES); copyStylesToChild(upArrow, UP_ARROW_STYLES); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 18
//ScrollBarDirection (fl.controls.ScrollBarDirection) package fl.controls { public class ScrollBarDirection { public static const HORIZONTAL:String = "horizontal"; public static const VERTICAL:String = "vertical"; } }//package fl.controls
Section 19
//ScrollPolicy (fl.controls.ScrollPolicy) package fl.controls { public class ScrollPolicy { public static const OFF:String = "off"; public static const ON:String = "on"; public static const AUTO:String = "auto"; } }//package fl.controls
Section 20
//SelectableList (fl.controls.SelectableList) package fl.controls { import fl.controls.listClasses.*; import fl.core.*; import flash.display.*; import flash.events.*; import fl.data.*; import flash.utils.*; import fl.managers.*; import fl.events.*; import fl.containers.*; import flash.ui.*; public class SelectableList extends BaseScrollPane implements IFocusManagerComponent { protected var invalidItems:Dictionary; protected var renderedItems:Dictionary; protected var listHolder:Sprite; protected var _allowMultipleSelection:Boolean;// = false protected var lastCaretIndex:int;// = -1 protected var _selectedIndices:Array; protected var availableCellRenderers:Array; protected var list:Sprite; protected var caretIndex:int;// = -1 protected var updatedRendererStyles:Object; protected var preChangeItems:Array; protected var activeCellRenderers:Array; protected var rendererStyles:Object; protected var _verticalScrollPosition:Number; protected var _dataProvider:DataProvider; protected var _horizontalScrollPosition:Number; private var collectionItemImport:SimpleCollectionItem; protected var _selectable:Boolean;// = true private static var defaultStyles:Object = {skin:"List_skin", cellRenderer:CellRenderer, contentPadding:null, disabledAlpha:null}; public static var createAccessibilityImplementation:Function; public function SelectableList(){ _allowMultipleSelection = false; _selectable = true; caretIndex = -1; lastCaretIndex = -1; super(); activeCellRenderers = []; availableCellRenderers = []; invalidItems = new Dictionary(true); renderedItems = new Dictionary(true); _selectedIndices = []; if (dataProvider == null){ dataProvider = new DataProvider(); }; verticalScrollPolicy = ScrollPolicy.AUTO; rendererStyles = {}; updatedRendererStyles = {}; } protected function drawList():void{ } public function set allowMultipleSelection(_arg1:Boolean):void{ if (_arg1 == _allowMultipleSelection){ return; }; _allowMultipleSelection = _arg1; if (((!(_arg1)) && ((_selectedIndices.length > 1)))){ _selectedIndices = [_selectedIndices.pop()]; invalidate(InvalidationType.DATA); }; } public function sortItemsOn(_arg1:String, _arg2:Object=null){ return (_dataProvider.sortOn(_arg1, _arg2)); } public function removeItemAt(_arg1:uint):Object{ return (_dataProvider.removeItemAt(_arg1)); } public function get selectedItem():Object{ return (((_selectedIndices.length)==0) ? null : _dataProvider.getItemAt(selectedIndex)); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ if (!selectable){ return; }; switch (_arg1.keyCode){ case Keyboard.UP: case Keyboard.DOWN: case Keyboard.END: case Keyboard.HOME: case Keyboard.PAGE_UP: case Keyboard.PAGE_DOWN: moveSelectionVertically(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection))); _arg1.stopPropagation(); break; case Keyboard.LEFT: case Keyboard.RIGHT: moveSelectionHorizontally(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection))); _arg1.stopPropagation(); break; }; } public function get selectable():Boolean{ return (_selectable); } public function itemToCellRenderer(_arg1:Object):ICellRenderer{ var _local2:*; var _local3:ICellRenderer; if (_arg1 != null){ for (_local2 in activeCellRenderers) { _local3 = (activeCellRenderers[_local2] as ICellRenderer); if (_local3.data == _arg1){ return (_local3); }; }; }; return (null); } public function getNextIndexAtLetter(_arg1:String, _arg2:int=-1):int{ var _local3:int; var _local4:Number; var _local5:Number; var _local6:Object; var _local7:String; if (length == 0){ return (-1); }; _arg1 = _arg1.toUpperCase(); _local3 = (length - 1); _local4 = 0; while (_local4 < _local3) { _local5 = ((_arg2 + 1) + _local4); if (_local5 > (length - 1)){ _local5 = (_local5 - length); }; _local6 = getItemAt(_local5); if (_local6 == null){ break; }; _local7 = itemToLabel(_local6); if (_local7 == null){ } else { if (_local7.charAt(0).toUpperCase() == _arg1){ return (_local5); }; }; _local4++; }; return (-1); } public function invalidateList():void{ _invalidateList(); invalidate(InvalidationType.DATA); } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; list.mouseChildren = _enabled; } public function get selectedIndices():Array{ return (_selectedIndices.concat()); } public function set selectable(_arg1:Boolean):void{ if (_arg1 == _selectable){ return; }; if (!_arg1){ selectedIndices = []; }; _selectable = _arg1; } public function itemToLabel(_arg1:Object):String{ return (_arg1["label"]); } public function addItemAt(_arg1:Object, _arg2:uint):void{ _dataProvider.addItemAt(_arg1, _arg2); invalidateList(); } public function replaceItemAt(_arg1:Object, _arg2:uint):Object{ return (_dataProvider.replaceItemAt(_arg1, _arg2)); } protected function handleDataChange(_arg1:DataChangeEvent):void{ var _local2:int; var _local3:int; var _local4:String; var _local5:uint; _local2 = _arg1.startIndex; _local3 = _arg1.endIndex; _local4 = _arg1.changeType; if (_local4 == DataChangeType.INVALIDATE_ALL){ clearSelection(); invalidateList(); } else { if (_local4 == DataChangeType.INVALIDATE){ _local5 = 0; while (_local5 < _arg1.items.length) { invalidateItem(_arg1.items[_local5]); _local5++; }; } else { if (_local4 == DataChangeType.ADD){ _local5 = 0; while (_local5 < _selectedIndices.length) { if (_selectedIndices[_local5] >= _local2){ _selectedIndices[_local5] = (_selectedIndices[_local5] + (_local2 - _local3)); }; _local5++; }; } else { if (_local4 == DataChangeType.REMOVE){ _local5 = 0; while (_local5 < _selectedIndices.length) { if (_selectedIndices[_local5] >= _local2){ if (_selectedIndices[_local5] <= _local3){ delete _selectedIndices[_local5]; } else { _selectedIndices[_local5] = (_selectedIndices[_local5] - ((_local2 - _local3) + 1)); }; }; _local5++; }; } else { if (_local4 == DataChangeType.REMOVE_ALL){ clearSelection(); } else { if (_local4 == DataChangeType.REPLACE){ } else { selectedItems = preChangeItems; preChangeItems = null; }; }; }; }; }; }; invalidate(InvalidationType.DATA); } protected function _invalidateList():void{ availableCellRenderers = []; while (activeCellRenderers.length > 0) { list.removeChild((activeCellRenderers.pop() as DisplayObject)); }; } protected function updateRendererStyles():void{ var _local1:Array; var _local2:uint; var _local3:uint; var _local4:String; _local1 = availableCellRenderers.concat(activeCellRenderers); _local2 = _local1.length; _local3 = 0; while (_local3 < _local2) { if (_local1[_local3].setStyle == null){ } else { for (_local4 in updatedRendererStyles) { _local1[_local3].setStyle(_local4, updatedRendererStyles[_local4]); }; _local1[_local3].drawNow(); }; _local3++; }; updatedRendererStyles = {}; } public function set selectedItem(_arg1:Object):void{ var _local2:int; _local2 = _dataProvider.getItemIndex(_arg1); selectedIndex = _local2; } public function sortItems(... _args){ return (_dataProvider.sort.apply(_dataProvider, _args)); } public function removeAll():void{ _dataProvider.removeAll(); } protected function handleCellRendererChange(_arg1:Event):void{ var _local2:ICellRenderer; var _local3:uint; _local2 = (_arg1.currentTarget as ICellRenderer); _local3 = _local2.listData.index; _dataProvider.invalidateItemAt(_local3); } protected function moveSelectionVertically(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{ } override protected function setHorizontalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ var _local3:Number; if (_arg1 == _horizontalScrollPosition){ return; }; _local3 = (_arg1 - _horizontalScrollPosition); _horizontalScrollPosition = _arg1; if (_arg2){ dispatchEvent(new ScrollEvent(ScrollBarDirection.HORIZONTAL, _local3, _arg1)); }; } public function scrollToSelected():void{ scrollToIndex(selectedIndex); } public function invalidateItem(_arg1:Object):void{ if (renderedItems[_arg1] == null){ return; }; invalidItems[_arg1] = true; invalidate(InvalidationType.DATA); } protected function handleCellRendererClick(_arg1:MouseEvent):void{ var _local2:ICellRenderer; var _local3:uint; var _local4:int; var _local5:int; var _local6:uint; if (!_enabled){ return; }; _local2 = (_arg1.currentTarget as ICellRenderer); _local3 = _local2.listData.index; if (((!(dispatchEvent(new ListEvent(ListEvent.ITEM_CLICK, false, true, _local2.listData.column, _local2.listData.row, _local3, _local2.data)))) || (!(_selectable)))){ return; }; _local4 = selectedIndices.indexOf(_local3); if (!_allowMultipleSelection){ if (_local4 != -1){ return; }; _local2.selected = true; _selectedIndices = [_local3]; lastCaretIndex = (caretIndex = _local3); } else { if (_arg1.shiftKey){ _local6 = ((_selectedIndices.length)>0) ? _selectedIndices[0] : _local3; _selectedIndices = []; if (_local6 > _local3){ _local5 = _local6; while (_local5 >= _local3) { _selectedIndices.push(_local5); _local5--; }; } else { _local5 = _local6; while (_local5 <= _local3) { _selectedIndices.push(_local5); _local5++; }; }; caretIndex = _local3; } else { if (_arg1.ctrlKey){ if (_local4 != -1){ _local2.selected = false; _selectedIndices.splice(_local4, 1); } else { _local2.selected = true; _selectedIndices.push(_local3); }; caretIndex = _local3; } else { _selectedIndices = [_local3]; lastCaretIndex = (caretIndex = _local3); }; }; }; dispatchEvent(new Event(Event.CHANGE)); invalidate(InvalidationType.DATA); } public function get length():uint{ return (_dataProvider.length); } public function get allowMultipleSelection():Boolean{ return (_allowMultipleSelection); } protected function onPreChange(_arg1:DataChangeEvent):void{ switch (_arg1.changeType){ case DataChangeType.REMOVE: case DataChangeType.ADD: case DataChangeType.INVALIDATE: case DataChangeType.REMOVE_ALL: case DataChangeType.REPLACE: case DataChangeType.INVALIDATE_ALL: break; default: preChangeItems = selectedItems; break; }; } public function getRendererStyle(_arg1:String, _arg2:int=-1):Object{ return (rendererStyles[_arg1]); } override protected function setVerticalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ var _local3:Number; if (_arg1 == _verticalScrollPosition){ return; }; _local3 = (_arg1 - _verticalScrollPosition); _verticalScrollPosition = _arg1; if (_arg2){ dispatchEvent(new ScrollEvent(ScrollBarDirection.VERTICAL, _local3, _arg1)); }; } protected function moveSelectionHorizontally(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{ } public function set selectedIndices(_arg1:Array):void{ if (!_selectable){ return; }; _selectedIndices = ((_arg1)==null) ? [] : _arg1.concat(); invalidate(InvalidationType.SELECTED); } public function get selectedIndex():int{ return (((_selectedIndices.length)==0) ? -1 : _selectedIndices[(_selectedIndices.length - 1)]); } override protected function draw():void{ super.draw(); } override protected function configUI():void{ super.configUI(); listHolder = new Sprite(); addChild(listHolder); listHolder.scrollRect = contentScrollRect; list = new Sprite(); listHolder.addChild(list); } public function addItem(_arg1:Object):void{ _dataProvider.addItem(_arg1); invalidateList(); } protected function handleCellRendererMouseEvent(_arg1:MouseEvent):void{ var _local2:ICellRenderer; var _local3:String; _local2 = (_arg1.target as ICellRenderer); _local3 = ((_arg1.type)==MouseEvent.ROLL_OVER) ? ListEvent.ITEM_ROLL_OVER : ListEvent.ITEM_ROLL_OUT; dispatchEvent(new ListEvent(_local3, false, false, _local2.listData.column, _local2.listData.row, _local2.listData.index, _local2.data)); } public function clearRendererStyle(_arg1:String, _arg2:int=-1):void{ delete rendererStyles[_arg1]; updatedRendererStyles[_arg1] = null; invalidate(InvalidationType.RENDERER_STYLES); } protected function handleCellRendererDoubleClick(_arg1:MouseEvent):void{ var _local2:ICellRenderer; var _local3:uint; if (!_enabled){ return; }; _local2 = (_arg1.currentTarget as ICellRenderer); _local3 = _local2.listData.index; dispatchEvent(new ListEvent(ListEvent.ITEM_DOUBLE_CLICK, false, true, _local2.listData.column, _local2.listData.row, _local3, _local2.data)); } public function get rowCount():uint{ return (0); } public function isItemSelected(_arg1:Object):Boolean{ return ((selectedItems.indexOf(_arg1) > -1)); } public function set dataProvider(_arg1:DataProvider):void{ if (_dataProvider != null){ _dataProvider.removeEventListener(DataChangeEvent.DATA_CHANGE, handleDataChange); _dataProvider.removeEventListener(DataChangeEvent.PRE_DATA_CHANGE, onPreChange); }; _dataProvider = _arg1; _dataProvider.addEventListener(DataChangeEvent.DATA_CHANGE, handleDataChange, false, 0, true); _dataProvider.addEventListener(DataChangeEvent.PRE_DATA_CHANGE, onPreChange, false, 0, true); clearSelection(); invalidateList(); } override protected function drawLayout():void{ super.drawLayout(); contentScrollRect = listHolder.scrollRect; contentScrollRect.width = availableWidth; contentScrollRect.height = availableHeight; listHolder.scrollRect = contentScrollRect; } public function getItemAt(_arg1:uint):Object{ return (_dataProvider.getItemAt(_arg1)); } override protected function initializeAccessibility():void{ if (SelectableList.createAccessibilityImplementation != null){ SelectableList.createAccessibilityImplementation(this); }; } public function scrollToIndex(_arg1:int):void{ } public function removeItem(_arg1:Object):Object{ return (_dataProvider.removeItem(_arg1)); } public function get dataProvider():DataProvider{ return (_dataProvider); } public function set maxHorizontalScrollPosition(_arg1:Number):void{ _maxHorizontalScrollPosition = _arg1; invalidate(InvalidationType.SIZE); } public function setRendererStyle(_arg1:String, _arg2:Object, _arg3:uint=0):void{ if (rendererStyles[_arg1] == _arg2){ return; }; updatedRendererStyles[_arg1] = _arg2; rendererStyles[_arg1] = _arg2; invalidate(InvalidationType.RENDERER_STYLES); } public function invalidateItemAt(_arg1:uint):void{ var _local2:Object; _local2 = _dataProvider.getItemAt(_arg1); if (_local2 != null){ invalidateItem(_local2); }; } public function set selectedItems(_arg1:Array):void{ var _local2:Array; var _local3:uint; var _local4:int; if (_arg1 == null){ selectedIndices = null; return; }; _local2 = []; _local3 = 0; while (_local3 < _arg1.length) { _local4 = _dataProvider.getItemIndex(_arg1[_local3]); if (_local4 != -1){ _local2.push(_local4); }; _local3++; }; selectedIndices = _local2; } public function clearSelection():void{ selectedIndex = -1; } override public function get maxHorizontalScrollPosition():Number{ return (_maxHorizontalScrollPosition); } public function get selectedItems():Array{ var _local1:Array; var _local2:uint; _local1 = []; _local2 = 0; while (_local2 < _selectedIndices.length) { _local1.push(_dataProvider.getItemAt(_selectedIndices[_local2])); _local2++; }; return (_local1); } public function set selectedIndex(_arg1:int):void{ selectedIndices = ((_arg1)==-1) ? null : [_arg1]; } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, BaseScrollPane.getStyleDefinition())); } } }//package fl.controls
Section 21
//TextInput (fl.controls.TextInput) package fl.controls { import fl.core.*; import flash.display.*; import flash.events.*; import fl.managers.*; import fl.events.*; import flash.text.*; import flash.ui.*; public class TextInput extends UIComponent implements IFocusManagerComponent { protected var _html:Boolean;// = false protected var _savedHTML:String; protected var background:DisplayObject; protected var _editable:Boolean;// = true public var textField:TextField; private static var defaultStyles:Object = {upSkin:"TextInput_upSkin", disabledSkin:"TextInput_disabledSkin", focusRectSkin:null, focusRectPadding:null, textFormat:null, disabledTextFormat:null, textPadding:0, embedFonts:false}; public static var createAccessibilityImplementation:Function; public function TextInput(){ _editable = true; _html = false; super(); } override public function drawFocus(_arg1:Boolean):void{ if (focusTarget != null){ focusTarget.drawFocus(_arg1); return; }; super.drawFocus(_arg1); } public function set imeMode(_arg1:String):void{ _imeMode = _arg1; } override protected function isOurFocus(_arg1:DisplayObject):Boolean{ return ((((_arg1 == textField)) || (super.isOurFocus(_arg1)))); } protected function handleKeyDown(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == Keyboard.ENTER){ dispatchEvent(new ComponentEvent(ComponentEvent.ENTER, true)); }; } public function set text(_arg1:String):void{ textField.text = _arg1; _html = false; invalidate(InvalidationType.DATA); invalidate(InvalidationType.STYLES); } protected function updateTextFieldType():void{ textField.type = (((enabled) && (editable))) ? TextFieldType.INPUT : TextFieldType.DYNAMIC; textField.selectable = enabled; } public function get selectionEndIndex():int{ return (textField.selectionEndIndex); } public function get editable():Boolean{ return (_editable); } override protected function focusInHandler(_arg1:FocusEvent):void{ var _local2:IFocusManager; if (_arg1.target == this){ stage.focus = textField; }; _local2 = focusManager; if (((editable) && (_local2))){ _local2.showFocusIndicator = true; if (((textField.selectable) && ((textField.selectionBeginIndex == textField.selectionBeginIndex)))){ setSelection(0, textField.length); }; }; super.focusInHandler(_arg1); if (editable){ setIMEMode(true); }; } public function get selectionBeginIndex():int{ return (textField.selectionBeginIndex); } public function set alwaysShowSelection(_arg1:Boolean):void{ textField.alwaysShowSelection = _arg1; } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; updateTextFieldType(); } protected function setEmbedFont(){ var _local1:Object; _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; } public function get horizontalScrollPosition():int{ return (textField.scrollH); } public function set condenseWhite(_arg1:Boolean):void{ textField.condenseWhite = _arg1; } public function set displayAsPassword(_arg1:Boolean):void{ textField.displayAsPassword = _arg1; } public function set horizontalScrollPosition(_arg1:int):void{ textField.scrollH = _arg1; } public function get restrict():String{ return (textField.restrict); } public function get textWidth():Number{ return (textField.textWidth); } public function get textHeight():Number{ return (textField.textHeight); } public function set editable(_arg1:Boolean):void{ _editable = _arg1; updateTextFieldType(); } public function get maxChars():int{ return (textField.maxChars); } public function get length():int{ return (textField.length); } public function getLineMetrics(_arg1:int):TextLineMetrics{ return (textField.getLineMetrics(_arg1)); } public function get imeMode():String{ return (_imeMode); } override protected function focusOutHandler(_arg1:FocusEvent):void{ super.focusOutHandler(_arg1); if (editable){ setIMEMode(false); }; } public function set htmlText(_arg1:String):void{ if (_arg1 == ""){ text = ""; return; }; _html = true; _savedHTML = _arg1; textField.htmlText = _arg1; invalidate(InvalidationType.DATA); invalidate(InvalidationType.STYLES); } public function get text():String{ return (textField.text); } override public function get enabled():Boolean{ return (super.enabled); } public function get condenseWhite():Boolean{ return (textField.condenseWhite); } public function get alwaysShowSelection():Boolean{ return (textField.alwaysShowSelection); } override protected function draw():void{ var _local1:Object; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawTextFormat(); drawBackground(); _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; super.draw(); } protected function handleTextInput(_arg1:TextEvent):void{ _arg1.stopPropagation(); dispatchEvent(new TextEvent(TextEvent.TEXT_INPUT, true, false, _arg1.text)); } override protected function configUI():void{ super.configUI(); tabChildren = true; textField = new TextField(); addChild(textField); updateTextFieldType(); textField.addEventListener(TextEvent.TEXT_INPUT, handleTextInput, false, 0, true); textField.addEventListener(Event.CHANGE, handleChange, false, 0, true); textField.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown, false, 0, true); } public function setSelection(_arg1:int, _arg2:int):void{ textField.setSelection(_arg1, _arg2); } public function get displayAsPassword():Boolean{ return (textField.displayAsPassword); } public function appendText(_arg1:String):void{ textField.appendText(_arg1); } public function set restrict(_arg1:String):void{ if (((componentInspectorSetting) && ((_arg1 == "")))){ _arg1 = null; }; textField.restrict = _arg1; } public function get htmlText():String{ return (textField.htmlText); } protected function drawBackground():void{ var _local1:DisplayObject; var _local2:String; _local1 = background; _local2 = (enabled) ? "upSkin" : "disabledSkin"; background = getDisplayObjectInstance(getStyleValue(_local2)); if (background == null){ return; }; addChildAt(background, 0); if (((((!((_local1 == null))) && (!((_local1 == background))))) && (contains(_local1)))){ removeChild(_local1); }; } override public function setFocus():void{ stage.focus = textField; } protected function drawLayout():void{ var _local1:Number; _local1 = Number(getStyleValue("textPadding")); if (background != null){ background.width = width; background.height = height; }; textField.width = (width - (2 * _local1)); textField.height = (height - (2 * _local1)); textField.x = (textField.y = _local1); } public function set maxChars(_arg1:int):void{ textField.maxChars = _arg1; } public function get maxHorizontalScrollPosition():int{ return (textField.maxScrollH); } protected function drawTextFormat():void{ var _local1:Object; var _local2:TextFormat; var _local3:TextFormat; _local1 = UIComponent.getStyleDefinition(); _local2 = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat); textField.setTextFormat(_local2); _local3 = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat); if (_local3 != null){ textField.setTextFormat(_local3); } else { _local3 = _local2; }; textField.defaultTextFormat = _local3; setEmbedFont(); if (_html){ textField.htmlText = _savedHTML; }; } protected function handleChange(_arg1:Event):void{ _arg1.stopPropagation(); dispatchEvent(new Event(Event.CHANGE, true)); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 22
//UIScrollBar (fl.controls.UIScrollBar) package fl.controls { import fl.core.*; import flash.events.*; import fl.events.*; import flash.text.*; public class UIScrollBar extends ScrollBar { protected var inScroll:Boolean;// = false protected var _scrollTarget:TextField; protected var inEdit:Boolean;// = false private static var defaultStyles:Object = {}; public function UIScrollBar(){ inEdit = false; inScroll = false; super(); } protected function handleTargetScroll(_arg1:Event):void{ if (inDrag){ return; }; if (!enabled){ return; }; inEdit = true; updateScrollTargetProperties(); scrollPosition = ((direction)==ScrollBarDirection.HORIZONTAL) ? _scrollTarget.scrollH : _scrollTarget.scrollV; inEdit = false; } override public function set minScrollPosition(_arg1:Number):void{ super.minScrollPosition = ((_arg1)<0) ? 0 : _arg1; } override public function setScrollPosition(_arg1:Number, _arg2:Boolean=true):void{ super.setScrollPosition(_arg1, _arg2); if (!_scrollTarget){ inScroll = false; return; }; updateTargetScroll(); } override public function setScrollProperties(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0):void{ var _local5:Number; var _local6:Number; _local5 = _arg3; _local6 = ((_arg2)<0) ? 0 : _arg2; if (_scrollTarget != null){ if (direction == ScrollBarDirection.HORIZONTAL){ _local5 = ((_arg3)>_scrollTarget.maxScrollH) ? _scrollTarget.maxScrollH : _local5; } else { _local5 = ((_arg3)>_scrollTarget.maxScrollV) ? _scrollTarget.maxScrollV : _local5; }; }; super.setScrollProperties(_arg1, _local6, _local5, _arg4); } public function get scrollTargetName():String{ return (_scrollTarget.name); } public function get scrollTarget():TextField{ return (_scrollTarget); } protected function updateScrollTargetProperties():void{ var _local1:Boolean; var _local2:Number; if (_scrollTarget == null){ setScrollProperties(pageSize, minScrollPosition, maxScrollPosition, pageScrollSize); scrollPosition = 0; } else { _local1 = (direction == ScrollBarDirection.HORIZONTAL); _local2 = (_local1) ? _scrollTarget.width : 10; setScrollProperties(_local2, (_local1) ? 0 : 1, (_local1) ? _scrollTarget.maxScrollH : _scrollTarget.maxScrollV, pageScrollSize); scrollPosition = (_local1) ? _scrollTarget.scrollH : _scrollTarget.scrollV; }; } public function update():void{ inEdit = true; updateScrollTargetProperties(); inEdit = false; } public function set scrollTargetName(_arg1:String):void{ var target = _arg1; try { scrollTarget = (parent.getChildByName(target) as TextField); } catch(error:Error) { throw (new Error("ScrollTarget not found, or is not a TextField")); }; } override public function set direction(_arg1:String):void{ if (isLivePreview){ return; }; super.direction = _arg1; updateScrollTargetProperties(); } protected function handleTargetChange(_arg1:Event):void{ inEdit = true; setScrollPosition(((direction)==ScrollBarDirection.HORIZONTAL) ? _scrollTarget.scrollH : _scrollTarget.scrollV, true); updateScrollTargetProperties(); inEdit = false; } override public function set maxScrollPosition(_arg1:Number):void{ var _local2:Number; _local2 = _arg1; if (_scrollTarget != null){ if (direction == ScrollBarDirection.HORIZONTAL){ _local2 = ((_local2)>_scrollTarget.maxScrollH) ? _scrollTarget.maxScrollH : _local2; } else { _local2 = ((_local2)>_scrollTarget.maxScrollV) ? _scrollTarget.maxScrollV : _local2; }; }; super.maxScrollPosition = _local2; } protected function updateTargetScroll(_arg1:ScrollEvent=null):void{ if (inEdit){ return; }; if (direction == ScrollBarDirection.HORIZONTAL){ _scrollTarget.scrollH = scrollPosition; } else { _scrollTarget.scrollV = scrollPosition; }; } override protected function draw():void{ if (isInvalid(InvalidationType.DATA)){ updateScrollTargetProperties(); }; super.draw(); } public function set scrollTarget(_arg1:TextField):void{ if (_scrollTarget != null){ _scrollTarget.removeEventListener(Event.CHANGE, handleTargetChange, false); _scrollTarget.removeEventListener(TextEvent.TEXT_INPUT, handleTargetChange, false); _scrollTarget.removeEventListener(Event.SCROLL, handleTargetScroll, false); removeEventListener(ScrollEvent.SCROLL, updateTargetScroll, false); }; _scrollTarget = _arg1; if (_scrollTarget != null){ _scrollTarget.addEventListener(Event.CHANGE, handleTargetChange, false, 0, true); _scrollTarget.addEventListener(TextEvent.TEXT_INPUT, handleTargetChange, false, 0, true); _scrollTarget.addEventListener(Event.SCROLL, handleTargetScroll, false, 0, true); addEventListener(ScrollEvent.SCROLL, updateTargetScroll, false, 0, true); }; invalidate(InvalidationType.DATA); } override public function get direction():String{ return (super.direction); } public static function getStyleDefinition():Object{ return (UIComponent.mergeStyles(defaultStyles, ScrollBar.getStyleDefinition())); } } }//package fl.controls
Section 23
//ComponentShim (fl.core.ComponentShim) package fl.core { import flash.display.*; public dynamic class ComponentShim extends MovieClip { } }//package fl.core
Section 24
//InvalidationType (fl.core.InvalidationType) package fl.core { public class InvalidationType { public static const SIZE:String = "size"; public static const ALL:String = "all"; public static const DATA:String = "data"; public static const SCROLL:String = "scroll"; public static const STATE:String = "state"; public static const STYLES:String = "styles"; public static const SELECTED:String = "selected"; public static const RENDERER_STYLES:String = "rendererStyles"; } }//package fl.core
Section 25
//UIComponent (fl.core.UIComponent) package fl.core { import flash.display.*; import flash.events.*; import flash.utils.*; import fl.managers.*; import fl.events.*; import flash.text.*; import flash.system.*; public class UIComponent extends Sprite { protected var _enabled:Boolean;// = true private var _mouseFocusEnabled:Boolean;// = true protected var startHeight:Number; protected var _height:Number; protected var _oldIMEMode:String;// = null protected var startWidth:Number; public var focusTarget:IFocusManagerComponent; protected var errorCaught:Boolean;// = false protected var uiFocusRect:DisplayObject; protected var _width:Number; public var version:String;// = "3.0.0.15" protected var isFocused:Boolean;// = false protected var callLaterMethods:Dictionary; private var _focusEnabled:Boolean;// = true private var tempText:TextField; protected var invalidateFlag:Boolean;// = false protected var _inspector:Boolean;// = false protected var sharedStyles:Object; protected var invalidHash:Object; protected var isLivePreview:Boolean;// = false protected var _imeMode:String;// = null protected var instanceStyles:Object; protected var _x:Number; protected var _y:Number; public static var inCallLaterPhase:Boolean = false; private static var defaultStyles:Object = {focusRectSkin:"focusRectSkin", focusRectPadding:2, textFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), disabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultTextFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultDisabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0)}; public static var createAccessibilityImplementation:Function; private static var focusManagers:Dictionary = new Dictionary(false); public function UIComponent(){ version = "3.0.0.15"; isLivePreview = false; invalidateFlag = false; _enabled = true; isFocused = false; _focusEnabled = true; _mouseFocusEnabled = true; _imeMode = null; _oldIMEMode = null; errorCaught = false; _inspector = false; super(); instanceStyles = {}; sharedStyles = {}; invalidHash = {}; callLaterMethods = new Dictionary(); StyleManager.registerInstance(this); configUI(); invalidate(InvalidationType.ALL); tabEnabled = (this is IFocusManagerComponent); focusRect = false; if (tabEnabled){ addEventListener(FocusEvent.FOCUS_IN, focusInHandler); addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler); addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); }; initializeFocusManager(); addEventListener(Event.ENTER_FRAME, hookAccessibility, false, 0, true); } public function drawFocus(_arg1:Boolean):void{ var _local2:Number; isFocused = _arg1; if (((!((uiFocusRect == null))) && (contains(uiFocusRect)))){ removeChild(uiFocusRect); uiFocusRect = null; }; if (_arg1){ uiFocusRect = (getDisplayObjectInstance(getStyleValue("focusRectSkin")) as Sprite); if (uiFocusRect == null){ return; }; _local2 = Number(getStyleValue("focusRectPadding")); uiFocusRect.x = -(_local2); uiFocusRect.y = -(_local2); uiFocusRect.width = (width + (_local2 * 2)); uiFocusRect.height = (height + (_local2 * 2)); addChildAt(uiFocusRect, 0); }; } private function callLaterDispatcher(_arg1:Event):void{ var _local2:Dictionary; var _local3:Object; if (_arg1.type == Event.ADDED_TO_STAGE){ removeEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher); stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true); stage.invalidate(); return; }; _arg1.target.removeEventListener(Event.RENDER, callLaterDispatcher); if (stage == null){ addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true); return; }; inCallLaterPhase = true; _local2 = callLaterMethods; for (_local3 in _local2) { _local3(); delete _local2[_local3]; }; inCallLaterPhase = false; } private function addedHandler(_arg1:Event):void{ removeEventListener("addedToStage", addedHandler); initializeFocusManager(); } protected function getStyleValue(_arg1:String):Object{ return (((instanceStyles[_arg1])==null) ? sharedStyles[_arg1] : instanceStyles[_arg1]); } protected function isOurFocus(_arg1:DisplayObject):Boolean{ return ((_arg1 == this)); } override public function get scaleX():Number{ return ((width / startWidth)); } override public function get scaleY():Number{ return ((height / startHeight)); } override public function set height(_arg1:Number):void{ if (_height == _arg1){ return; }; setSize(width, _arg1); } protected function keyDownHandler(_arg1:KeyboardEvent):void{ } protected function focusInHandler(_arg1:FocusEvent):void{ var _local2:IFocusManager; if (isOurFocus((_arg1.target as DisplayObject))){ _local2 = focusManager; if (((_local2) && (_local2.showFocusIndicator))){ drawFocus(true); isFocused = true; }; }; } public function setStyle(_arg1:String, _arg2:Object):void{ if ((((instanceStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; instanceStyles[_arg1] = _arg2; invalidate(InvalidationType.STYLES); } override public function get visible():Boolean{ return (super.visible); } public function get componentInspectorSetting():Boolean{ return (_inspector); } override public function get x():Number{ return ((isNaN(_x)) ? super.x : _x); } override public function get y():Number{ return ((isNaN(_y)) ? super.y : _y); } protected function setIMEMode(_arg1:Boolean){ var enabled = _arg1; if (_imeMode != null){ if (enabled){ IME.enabled = true; _oldIMEMode = IME.conversionMode; try { if (((!(errorCaught)) && (!((IME.conversionMode == IMEConversionMode.UNKNOWN))))){ IME.conversionMode = _imeMode; }; errorCaught = false; } catch(e:Error) { errorCaught = true; throw (new Error(("IME mode not supported: " + _imeMode))); }; } else { if (((!((IME.conversionMode == IMEConversionMode.UNKNOWN))) && (!((_oldIMEMode == IMEConversionMode.UNKNOWN))))){ IME.conversionMode = _oldIMEMode; }; IME.enabled = false; }; }; } public function set enabled(_arg1:Boolean):void{ if (_arg1 == _enabled){ return; }; _enabled = _arg1; invalidate(InvalidationType.STATE); } public function setSharedStyle(_arg1:String, _arg2:Object):void{ if ((((sharedStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; sharedStyles[_arg1] = _arg2; if (instanceStyles[_arg1] == null){ invalidate(InvalidationType.STYLES); }; } protected function keyUpHandler(_arg1:KeyboardEvent):void{ } public function set focusEnabled(_arg1:Boolean):void{ _focusEnabled = _arg1; } override public function set scaleX(_arg1:Number):void{ setSize((startWidth * _arg1), height); } public function get mouseFocusEnabled():Boolean{ return (_mouseFocusEnabled); } override public function set scaleY(_arg1:Number):void{ setSize(width, (startHeight * _arg1)); } protected function getDisplayObjectInstance(_arg1:Object):DisplayObject{ var classDef:Object; var skin = _arg1; classDef = null; if ((skin is Class)){ return ((new (skin) as DisplayObject)); }; if ((skin is DisplayObject)){ (skin as DisplayObject).x = 0; (skin as DisplayObject).y = 0; return ((skin as DisplayObject)); }; try { classDef = getDefinitionByName(skin.toString()); } catch(e:Error) { try { classDef = (loaderInfo.applicationDomain.getDefinition(skin.toString()) as Object); } catch(e:Error) { }; }; if (classDef == null){ return (null); }; return ((new (classDef) as DisplayObject)); } protected function copyStylesToChild(_arg1:UIComponent, _arg2:Object):void{ var _local3:String; for (_local3 in _arg2) { _arg1.setStyle(_local3, getStyleValue(_arg2[_local3])); }; } protected function beforeComponentParameters():void{ } protected function callLater(_arg1:Function):void{ if (inCallLaterPhase){ return; }; callLaterMethods[_arg1] = true; if (stage != null){ stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true); stage.invalidate(); } else { addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true); }; } protected function createFocusManager():void{ if (focusManagers[stage] == null){ focusManagers[stage] = new FocusManager(stage); }; } override public function set visible(_arg1:Boolean):void{ var _local2:String; if (super.visible == _arg1){ return; }; super.visible = _arg1; _local2 = (_arg1) ? ComponentEvent.SHOW : ComponentEvent.HIDE; dispatchEvent(new ComponentEvent(_local2, true)); } protected function hookAccessibility(_arg1:Event):void{ removeEventListener(Event.ENTER_FRAME, hookAccessibility); initializeAccessibility(); } public function set componentInspectorSetting(_arg1:Boolean):void{ _inspector = _arg1; if (_inspector){ beforeComponentParameters(); } else { afterComponentParameters(); }; } override public function set x(_arg1:Number):void{ move(_arg1, _y); } public function drawNow():void{ draw(); } override public function set y(_arg1:Number):void{ move(_x, _arg1); } protected function checkLivePreview():Boolean{ var className:String; if (parent == null){ return (false); }; try { className = getQualifiedClassName(parent); } catch(e:Error) { }; return ((className == "fl.livepreview::LivePreviewParent")); } protected function focusOutHandler(_arg1:FocusEvent):void{ if (isOurFocus((_arg1.target as DisplayObject))){ drawFocus(false); isFocused = false; }; } public function set mouseFocusEnabled(_arg1:Boolean):void{ _mouseFocusEnabled = _arg1; } public function getFocus():InteractiveObject{ if (stage){ return (stage.focus); }; return (null); } protected function validate():void{ invalidHash = {}; } override public function get height():Number{ return (_height); } public function invalidate(_arg1:String="all", _arg2:Boolean=true):void{ invalidHash[_arg1] = true; if (_arg2){ this.callLater(draw); }; } public function get enabled():Boolean{ return (_enabled); } protected function getScaleX():Number{ return (super.scaleX); } protected function getScaleY():Number{ return (super.scaleY); } public function get focusEnabled():Boolean{ return (_focusEnabled); } protected function afterComponentParameters():void{ } protected function draw():void{ if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){ if (((isFocused) && (focusManager.showFocusIndicator))){ drawFocus(true); }; }; validate(); } protected function configUI():void{ var _local1:Number; var _local2:Number; var _local3:Number; isLivePreview = checkLivePreview(); _local1 = rotation; rotation = 0; _local2 = super.width; _local3 = super.height; var _local4 = 1; super.scaleY = _local4; super.scaleX = _local4; setSize(_local2, _local3); move(super.x, super.y); rotation = _local1; startWidth = _local2; startHeight = _local3; if (numChildren > 0){ removeChildAt(0); }; } protected function setScaleX(_arg1:Number):void{ super.scaleX = _arg1; } protected function setScaleY(_arg1:Number):void{ super.scaleY = _arg1; } private function initializeFocusManager():void{ if (stage == null){ addEventListener(Event.ADDED_TO_STAGE, addedHandler, false, 0, true); } else { createFocusManager(); }; } public function set focusManager(_arg1:IFocusManager):void{ UIComponent.focusManagers[this] = _arg1; } public function clearStyle(_arg1:String):void{ setStyle(_arg1, null); } protected function isInvalid(_arg1:String, ... _args):Boolean{ if (((invalidHash[_arg1]) || (invalidHash[InvalidationType.ALL]))){ return (true); }; while (_args.length > 0) { if (invalidHash[_args.pop()]){ return (true); }; }; return (false); } public function setSize(_arg1:Number, _arg2:Number):void{ _width = _arg1; _height = _arg2; invalidate(InvalidationType.SIZE); dispatchEvent(new ComponentEvent(ComponentEvent.RESIZE, false)); } override public function set width(_arg1:Number):void{ if (_width == _arg1){ return; }; setSize(_arg1, height); } public function setFocus():void{ if (stage){ stage.focus = this; }; } protected function initializeAccessibility():void{ if (UIComponent.createAccessibilityImplementation != null){ UIComponent.createAccessibilityImplementation(this); }; } public function get focusManager():IFocusManager{ var _local1:DisplayObject; _local1 = this; while (_local1) { if (UIComponent.focusManagers[_local1] != null){ return (IFocusManager(UIComponent.focusManagers[_local1])); }; _local1 = _local1.parent; }; return (null); } override public function get width():Number{ return (_width); } public function move(_arg1:Number, _arg2:Number):void{ _x = _arg1; _y = _arg2; super.x = Math.round(_arg1); super.y = Math.round(_arg2); dispatchEvent(new ComponentEvent(ComponentEvent.MOVE)); } public function validateNow():void{ invalidate(InvalidationType.ALL, false); draw(); } public function getStyle(_arg1:String):Object{ return (instanceStyles[_arg1]); } public static function getStyleDefinition():Object{ return (defaultStyles); } public static function mergeStyles(... _args):Object{ var _local2:Object; var _local3:uint; var _local4:uint; var _local5:Object; var _local6:String; _local2 = {}; _local3 = _args.length; _local4 = 0; while (_local4 < _local3) { _local5 = _args[_local4]; for (_local6 in _local5) { if (_local2[_local6] != null){ } else { _local2[_local6] = _args[_local4][_local6]; }; }; _local4++; }; return (_local2); } } }//package fl.core
Section 26
//DataProvider (fl.data.DataProvider) package fl.data { import flash.events.*; import fl.events.*; public class DataProvider extends EventDispatcher { protected var data:Array; public function DataProvider(_arg1:Object=null){ if (_arg1 == null){ data = []; } else { data = getDataFromObject(_arg1); }; } protected function dispatchPreChangeEvent(_arg1:String, _arg2:Array, _arg3:int, _arg4:int):void{ dispatchEvent(new DataChangeEvent(DataChangeEvent.PRE_DATA_CHANGE, _arg1, _arg2, _arg3, _arg4)); } public function invalidateItemAt(_arg1:int):void{ checkIndex(_arg1, (data.length - 1)); dispatchChangeEvent(DataChangeType.INVALIDATE, [data[_arg1]], _arg1, _arg1); } public function getItemIndex(_arg1:Object):int{ return (data.indexOf(_arg1)); } protected function getDataFromObject(_arg1:Object):Array{ var _local2:Array; var _local3:Array; var _local4:uint; var _local5:Object; var _local6:XML; var _local7:XMLList; var _local8:XML; var _local9:XMLList; var _local10:XML; var _local11:XMLList; var _local12:XML; if ((_arg1 is Array)){ _local3 = (_arg1 as Array); if (_local3.length > 0){ if ((((_local3[0] is String)) || ((_local3[0] is Number)))){ _local2 = []; _local4 = 0; while (_local4 < _local3.length) { _local5 = {label:String(_local3[_local4]), data:_local3[_local4]}; _local2.push(_local5); _local4++; }; return (_local2); }; }; return (_arg1.concat()); //unresolved jump }; if ((_arg1 is DataProvider)){ return (_arg1.toArray()); }; if ((_arg1 is XML)){ _local6 = (_arg1 as XML); _local2 = []; _local7 = _local6.*; for each (_local8 in _local7) { _arg1 = {}; _local9 = _local8.attributes(); for each (_local10 in _local9) { _arg1[_local10.localName()] = _local10.toString(); }; _local11 = _local8.*; for each (_local12 in _local11) { if (_local12.hasSimpleContent()){ _arg1[_local12.localName()] = _local12.toString(); }; }; _local2.push(_arg1); }; return (_local2); //unresolved jump }; throw (new TypeError((("Error: Type Coercion failed: cannot convert " + _arg1) + " to Array or DataProvider."))); } public function removeItemAt(_arg1:uint):Object{ var _local2:Array; checkIndex(_arg1, (data.length - 1)); dispatchPreChangeEvent(DataChangeType.REMOVE, data.slice(_arg1, (_arg1 + 1)), _arg1, _arg1); _local2 = data.splice(_arg1, 1); dispatchChangeEvent(DataChangeType.REMOVE, _local2, _arg1, _arg1); return (_local2[0]); } public function addItem(_arg1:Object):void{ dispatchPreChangeEvent(DataChangeType.ADD, [_arg1], (data.length - 1), (data.length - 1)); data.push(_arg1); dispatchChangeEvent(DataChangeType.ADD, [_arg1], (data.length - 1), (data.length - 1)); } public function sortOn(_arg1:Object, _arg2:Object=null){ var _local3:Array; dispatchPreChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1)); _local3 = data.sortOn(_arg1, _arg2); dispatchChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1)); return (_local3); } public function sort(... _args){ var _local2:Array; dispatchPreChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1)); _local2 = data.sort.apply(data, _args); dispatchChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1)); return (_local2); } public function addItems(_arg1:Object):void{ addItemsAt(_arg1, data.length); } public function concat(_arg1:Object):void{ addItems(_arg1); } public function clone():DataProvider{ return (new DataProvider(data)); } public function toArray():Array{ return (data.concat()); } public function get length():uint{ return (data.length); } public function addItemAt(_arg1:Object, _arg2:uint):void{ checkIndex(_arg2, data.length); dispatchPreChangeEvent(DataChangeType.ADD, [_arg1], _arg2, _arg2); data.splice(_arg2, 0, _arg1); dispatchChangeEvent(DataChangeType.ADD, [_arg1], _arg2, _arg2); } public function getItemAt(_arg1:uint):Object{ checkIndex(_arg1, (data.length - 1)); return (data[_arg1]); } override public function toString():String{ return ((("DataProvider [" + data.join(" , ")) + "]")); } public function invalidateItem(_arg1:Object):void{ var _local2:uint; _local2 = getItemIndex(_arg1); if (_local2 == -1){ return; }; invalidateItemAt(_local2); } protected function dispatchChangeEvent(_arg1:String, _arg2:Array, _arg3:int, _arg4:int):void{ dispatchEvent(new DataChangeEvent(DataChangeEvent.DATA_CHANGE, _arg1, _arg2, _arg3, _arg4)); } protected function checkIndex(_arg1:int, _arg2:int):void{ if ((((_arg1 > _arg2)) || ((_arg1 < 0)))){ throw (new RangeError((((("DataProvider index (" + _arg1) + ") is not in acceptable range (0 - ") + _arg2) + ")"))); }; } public function addItemsAt(_arg1:Object, _arg2:uint):void{ var _local3:Array; checkIndex(_arg2, data.length); _local3 = getDataFromObject(_arg1); dispatchPreChangeEvent(DataChangeType.ADD, _local3, _arg2, ((_arg2 + _local3.length) - 1)); data.splice.apply(data, [_arg2, 0].concat(_local3)); dispatchChangeEvent(DataChangeType.ADD, _local3, _arg2, ((_arg2 + _local3.length) - 1)); } public function replaceItem(_arg1:Object, _arg2:Object):Object{ var _local3:int; _local3 = getItemIndex(_arg2); if (_local3 != -1){ return (replaceItemAt(_arg1, _local3)); }; return (null); } public function removeItem(_arg1:Object):Object{ var _local2:int; _local2 = getItemIndex(_arg1); if (_local2 != -1){ return (removeItemAt(_local2)); }; return (null); } public function merge(_arg1:Object):void{ var _local2:Array; var _local3:uint; var _local4:uint; var _local5:uint; var _local6:Object; _local2 = getDataFromObject(_arg1); _local3 = _local2.length; _local4 = data.length; dispatchPreChangeEvent(DataChangeType.ADD, data.slice(_local4, data.length), _local4, (this.data.length - 1)); _local5 = 0; while (_local5 < _local3) { _local6 = _local2[_local5]; if (getItemIndex(_local6) == -1){ data.push(_local6); }; _local5++; }; if (data.length > _local4){ dispatchChangeEvent(DataChangeType.ADD, data.slice(_local4, data.length), _local4, (this.data.length - 1)); } else { dispatchChangeEvent(DataChangeType.ADD, [], -1, -1); }; } public function replaceItemAt(_arg1:Object, _arg2:uint):Object{ var _local3:Array; checkIndex(_arg2, (data.length - 1)); _local3 = [data[_arg2]]; dispatchPreChangeEvent(DataChangeType.REPLACE, _local3, _arg2, _arg2); data[_arg2] = _arg1; dispatchChangeEvent(DataChangeType.REPLACE, _local3, _arg2, _arg2); return (_local3[0]); } public function invalidate():void{ dispatchEvent(new DataChangeEvent(DataChangeEvent.DATA_CHANGE, DataChangeType.INVALIDATE_ALL, data.concat(), 0, data.length)); } public function removeAll():void{ var _local1:Array; _local1 = data.concat(); dispatchPreChangeEvent(DataChangeType.REMOVE_ALL, _local1, 0, _local1.length); data = []; dispatchChangeEvent(DataChangeType.REMOVE_ALL, _local1, 0, _local1.length); } } }//package fl.data
Section 27
//SimpleCollectionItem (fl.data.SimpleCollectionItem) package fl.data { public dynamic class SimpleCollectionItem { public var label:String; public var data:String; public function toString():String{ return ((((("[SimpleCollectionItem: " + label) + ",") + data) + "]")); } } }//package fl.data
Section 28
//ComponentEvent (fl.events.ComponentEvent) package fl.events { import flash.events.*; public class ComponentEvent extends Event { public static const HIDE:String = "hide"; public static const BUTTON_DOWN:String = "buttonDown"; public static const MOVE:String = "move"; public static const RESIZE:String = "resize"; public static const ENTER:String = "enter"; public static const LABEL_CHANGE:String = "labelChange"; public static const SHOW:String = "show"; public function ComponentEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } override public function toString():String{ return (formatToString("ComponentEvent", "type", "bubbles", "cancelable")); } override public function clone():Event{ return (new ComponentEvent(type, bubbles, cancelable)); } } }//package fl.events
Section 29
//DataChangeEvent (fl.events.DataChangeEvent) package fl.events { import flash.events.*; public class DataChangeEvent extends Event { protected var _items:Array; protected var _endIndex:uint; protected var _changeType:String; protected var _startIndex:uint; public static const PRE_DATA_CHANGE:String = "preDataChange"; public static const DATA_CHANGE:String = "dataChange"; public function DataChangeEvent(_arg1:String, _arg2:String, _arg3:Array, _arg4:int=-1, _arg5:int=-1):void{ super(_arg1); _changeType = _arg2; _startIndex = _arg4; _items = _arg3; _endIndex = ((_arg5)==-1) ? _startIndex : _arg5; } public function get changeType():String{ return (_changeType); } public function get startIndex():uint{ return (_startIndex); } public function get items():Array{ return (_items); } override public function clone():Event{ return (new DataChangeEvent(type, _changeType, _items, _startIndex, _endIndex)); } override public function toString():String{ return (formatToString("DataChangeEvent", "type", "changeType", "startIndex", "endIndex", "bubbles", "cancelable")); } public function get endIndex():uint{ return (_endIndex); } } }//package fl.events
Section 30
//DataChangeType (fl.events.DataChangeType) package fl.events { public class DataChangeType { public static const ADD:String = "add"; public static const REMOVE:String = "remove"; public static const REMOVE_ALL:String = "removeAll"; public static const CHANGE:String = "change"; public static const REPLACE:String = "replace"; public static const INVALIDATE:String = "invalidate"; public static const INVALIDATE_ALL:String = "invalidateAll"; public static const SORT:String = "sort"; } }//package fl.events
Section 31
//ListEvent (fl.events.ListEvent) package fl.events { import flash.events.*; public class ListEvent extends Event { protected var _index:int; protected var _item:Object; protected var _columnIndex:int; protected var _rowIndex:int; public static const ITEM_DOUBLE_CLICK:String = "itemDoubleClick"; public static const ITEM_ROLL_OUT:String = "itemRollOut"; public static const ITEM_ROLL_OVER:String = "itemRollOver"; public static const ITEM_CLICK:String = "itemClick"; public function ListEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:int=-1, _arg5:int=-1, _arg6:int=-1, _arg7:Object=null){ super(_arg1, _arg2, _arg3); _rowIndex = _arg5; _columnIndex = _arg4; _index = _arg6; _item = _arg7; } public function get rowIndex():Object{ return (_rowIndex); } public function get index():int{ return (_index); } public function get item():Object{ return (_item); } public function get columnIndex():int{ return (_columnIndex); } override public function clone():Event{ return (new ListEvent(type, bubbles, cancelable, _columnIndex, _rowIndex)); } override public function toString():String{ return (formatToString("ListEvent", "type", "bubbles", "cancelable", "columnIndex", "rowIndex", "index", "item")); } } }//package fl.events
Section 32
//ScrollEvent (fl.events.ScrollEvent) package fl.events { import flash.events.*; public class ScrollEvent extends Event { private var _position:Number; private var _direction:String; private var _delta:Number; public static const SCROLL:String = "scroll"; public function ScrollEvent(_arg1:String, _arg2:Number, _arg3:Number){ super(ScrollEvent.SCROLL, false, false); _direction = _arg1; _delta = _arg2; _position = _arg3; } override public function clone():Event{ return (new ScrollEvent(_direction, _delta, _position)); } public function get position():Number{ return (_position); } override public function toString():String{ return (formatToString("ScrollEvent", "type", "bubbles", "cancelable", "direction", "delta", "position")); } public function get delta():Number{ return (_delta); } public function get direction():String{ return (_direction); } } }//package fl.events
Section 33
//FocusManager (fl.managers.FocusManager) package fl.managers { import fl.core.*; import fl.controls.*; import flash.display.*; import flash.events.*; import flash.utils.*; import flash.text.*; import flash.ui.*; public class FocusManager implements IFocusManager { private var focusableObjects:Dictionary; private var _showFocusIndicator:Boolean;// = true private var defButton:Button; private var focusableCandidates:Array; private var _form:DisplayObjectContainer; private var _defaultButtonEnabled:Boolean;// = true private var activated:Boolean;// = false private var _defaultButton:Button; private var calculateCandidates:Boolean;// = true private var lastFocus:InteractiveObject; private var lastAction:String; public function FocusManager(_arg1:DisplayObjectContainer){ activated = false; calculateCandidates = true; _showFocusIndicator = true; _defaultButtonEnabled = true; super(); focusableObjects = new Dictionary(true); if (_arg1 != null){ _form = _arg1; addFocusables(DisplayObject(_arg1)); _arg1.addEventListener(Event.ADDED, addedHandler); _arg1.addEventListener(Event.REMOVED, removedHandler); activate(); }; } public function get showFocusIndicator():Boolean{ return (_showFocusIndicator); } private function getIndexOfNextObject(_arg1:int, _arg2:Boolean, _arg3:Boolean, _arg4:String):int{ var _local5:int; var _local6:int; var _local7:DisplayObject; var _local8:IFocusManagerGroup; var _local9:int; var _local10:DisplayObject; var _local11:IFocusManagerGroup; _local5 = focusableCandidates.length; _local6 = _arg1; while (true) { if (_arg2){ _arg1--; } else { _arg1++; }; if (_arg3){ if (((_arg2) && ((_arg1 < 0)))){ break; }; if (((!(_arg2)) && ((_arg1 == _local5)))){ break; }; } else { _arg1 = ((_arg1 + _local5) % _local5); if (_local6 == _arg1){ break; }; }; if (isValidFocusCandidate(focusableCandidates[_arg1], _arg4)){ _local7 = DisplayObject(findFocusManagerComponent(focusableCandidates[_arg1])); if ((_local7 is IFocusManagerGroup)){ _local8 = IFocusManagerGroup(_local7); _local9 = 0; while (_local9 < focusableCandidates.length) { _local10 = focusableCandidates[_local9]; if ((_local10 is IFocusManagerGroup)){ _local11 = IFocusManagerGroup(_local10); if ((((_local11.groupName == _local8.groupName)) && (_local11.selected))){ _arg1 = _local9; break; }; }; _local9++; }; }; return (_arg1); }; }; return (_arg1); } public function set form(_arg1:DisplayObjectContainer):void{ _form = _arg1; } private function addFocusables(_arg1:DisplayObject, _arg2:Boolean=false):void{ var focusable:IFocusManagerComponent; var io:InteractiveObject; var doc:DisplayObjectContainer; var i:int; var child:DisplayObject; var o = _arg1; var skipTopLevel = _arg2; if (!skipTopLevel){ if ((o is IFocusManagerComponent)){ focusable = IFocusManagerComponent(o); if (focusable.focusEnabled){ if (((focusable.tabEnabled) && (isTabVisible(o)))){ focusableObjects[o] = true; calculateCandidates = true; }; o.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); o.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); }; } else { if ((o is InteractiveObject)){ io = (o as InteractiveObject); if (((((io) && (io.tabEnabled))) && ((findFocusManagerComponent(io) == io)))){ focusableObjects[io] = true; calculateCandidates = true; }; io.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); io.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); }; }; }; if ((o is DisplayObjectContainer)){ doc = DisplayObjectContainer(o); o.addEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler); if ((((((doc is Stage)) || ((doc.parent is Stage)))) || (doc.tabChildren))){ i = 0; while (i < doc.numChildren) { try { child = doc.getChildAt(i); if (child != null){ addFocusables(doc.getChildAt(i)); }; } catch(error:SecurityError) { }; i = (i + 1); }; }; }; } private function getChildIndex(_arg1:DisplayObjectContainer, _arg2:DisplayObject):int{ return (_arg1.getChildIndex(_arg2)); } private function mouseFocusChangeHandler(_arg1:FocusEvent):void{ if ((_arg1.relatedObject is TextField)){ return; }; _arg1.preventDefault(); } private function focusOutHandler(_arg1:FocusEvent):void{ var _local2:InteractiveObject; _local2 = (_arg1.target as InteractiveObject); } private function isValidFocusCandidate(_arg1:DisplayObject, _arg2:String):Boolean{ var _local3:IFocusManagerGroup; if (!isEnabledAndVisible(_arg1)){ return (false); }; if ((_arg1 is IFocusManagerGroup)){ _local3 = IFocusManagerGroup(_arg1); if (_arg2 == _local3.groupName){ return (false); }; }; return (true); } public function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject{ var _local2:InteractiveObject; _local2 = _arg1; while (_arg1) { if ((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))){ return (_arg1); }; _arg1 = _arg1.parent; }; return (_local2); } private function sortFocusableObjectsTabIndex():void{ var _local1:Object; var _local2:InteractiveObject; focusableCandidates = []; for (_local1 in focusableObjects) { _local2 = InteractiveObject(_local1); if (((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))){ focusableCandidates.push(_local2); }; }; focusableCandidates.sort(sortByTabIndex); } private function removeFocusables(_arg1:DisplayObject):void{ var _local2:Object; var _local3:DisplayObject; if ((_arg1 is DisplayObjectContainer)){ _arg1.removeEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler); _arg1.removeEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); for (_local2 in focusableObjects) { _local3 = DisplayObject(_local2); if (DisplayObjectContainer(_arg1).contains(_local3)){ if (_local3 == lastFocus){ lastFocus = null; }; _local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); delete focusableObjects[_local2]; calculateCandidates = true; }; }; }; } private function addedHandler(_arg1:Event):void{ var _local2:DisplayObject; _local2 = DisplayObject(_arg1.target); if (_local2.stage){ addFocusables(DisplayObject(_arg1.target)); }; } private function getTopLevelFocusTarget(_arg1:InteractiveObject):InteractiveObject{ while (_arg1 != InteractiveObject(form)) { if ((((((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))) && (IFocusManagerComponent(_arg1).mouseFocusEnabled))) && (UIComponent(_arg1).enabled))){ return (_arg1); }; _arg1 = _arg1.parent; if (_arg1 == null){ break; }; }; return (null); } private function tabChildrenChangeHandler(_arg1:Event):void{ var _local2:DisplayObjectContainer; if (_arg1.target != _arg1.currentTarget){ return; }; calculateCandidates = true; _local2 = DisplayObjectContainer(_arg1.target); if (_local2.tabChildren){ addFocusables(_local2, true); } else { removeFocusables(_local2); }; } public function sendDefaultButtonEvent():void{ defButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); } public function getFocus():InteractiveObject{ var _local1:InteractiveObject; _local1 = form.stage.focus; return (findFocusManagerComponent(_local1)); } private function isEnabledAndVisible(_arg1:DisplayObject):Boolean{ var _local2:DisplayObjectContainer; var _local3:TextField; var _local4:SimpleButton; _local2 = DisplayObject(form).parent; while (_arg1 != _local2) { if ((_arg1 is UIComponent)){ if (!UIComponent(_arg1).enabled){ return (false); }; } else { if ((_arg1 is TextField)){ _local3 = TextField(_arg1); if ((((_local3.type == TextFieldType.DYNAMIC)) || (!(_local3.selectable)))){ return (false); }; } else { if ((_arg1 is SimpleButton)){ _local4 = SimpleButton(_arg1); if (!_local4.enabled){ return (false); }; }; }; }; if (!_arg1.visible){ return (false); }; _arg1 = _arg1.parent; }; return (true); } public function set defaultButton(_arg1:Button):void{ var _local2:Button; _local2 = (_arg1) ? Button(_arg1) : null; if (_local2 != _defaultButton){ if (_defaultButton){ _defaultButton.emphasized = false; }; if (defButton){ defButton.emphasized = false; }; _defaultButton = _local2; defButton = _local2; if (_local2){ _local2.emphasized = true; }; }; } private function deactivateHandler(_arg1:Event):void{ var _local2:InteractiveObject; _local2 = InteractiveObject(_arg1.target); } public function setFocus(_arg1:InteractiveObject):void{ if ((_arg1 is IFocusManagerComponent)){ IFocusManagerComponent(_arg1).setFocus(); } else { form.stage.focus = _arg1; }; } private function setFocusToNextObject(_arg1:FocusEvent):void{ var _local2:InteractiveObject; if (!hasFocusableObjects()){ return; }; _local2 = getNextFocusManagerComponent(_arg1.shiftKey); if (_local2){ setFocus(_local2); }; } private function hasFocusableObjects():Boolean{ var _local1:Object; for (_local1 in focusableObjects) { return (true); }; return (false); } private function tabIndexChangeHandler(_arg1:Event):void{ calculateCandidates = true; } private function sortFocusableObjects():void{ var _local1:Object; var _local2:InteractiveObject; focusableCandidates = []; for (_local1 in focusableObjects) { _local2 = InteractiveObject(_local1); if (((((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))) && ((_local2.tabIndex > 0)))){ sortFocusableObjectsTabIndex(); return; }; focusableCandidates.push(_local2); }; focusableCandidates.sort(sortByDepth); } private function keyFocusChangeHandler(_arg1:FocusEvent):void{ showFocusIndicator = true; if ((((((_arg1.keyCode == Keyboard.TAB)) || ((_arg1.keyCode == 0)))) && (!(_arg1.isDefaultPrevented())))){ setFocusToNextObject(_arg1); _arg1.preventDefault(); }; } private function getIndexOfFocusedObject(_arg1:DisplayObject):int{ var _local2:int; var _local3:int; _local2 = focusableCandidates.length; _local3 = 0; _local3 = 0; while (_local3 < _local2) { if (focusableCandidates[_local3] == _arg1){ return (_local3); }; _local3++; }; return (-1); } public function hideFocus():void{ } private function removedHandler(_arg1:Event):void{ var _local2:int; var _local3:DisplayObject; var _local4:InteractiveObject; _local3 = DisplayObject(_arg1.target); if ((((_local3 is IFocusManagerComponent)) && ((focusableObjects[_local3] == true)))){ if (_local3 == lastFocus){ IFocusManagerComponent(lastFocus).drawFocus(false); lastFocus = null; }; _local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); delete focusableObjects[_local3]; calculateCandidates = true; } else { if ((((_local3 is InteractiveObject)) && ((focusableObjects[_local3] == true)))){ _local4 = (_local3 as InteractiveObject); if (_local4){ if (_local4 == lastFocus){ lastFocus = null; }; delete focusableObjects[_local4]; calculateCandidates = true; }; _local3.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); }; }; removeFocusables(_local3); } private function sortByDepth(_arg1:InteractiveObject, _arg2:InteractiveObject):Number{ var _local3:String; var _local4:String; var _local5:int; var _local6:String; var _local7:String; var _local8:String; var _local9:DisplayObject; var _local10:DisplayObject; _local3 = ""; _local4 = ""; _local8 = "0000"; _local9 = DisplayObject(_arg1); _local10 = DisplayObject(_arg2); while (((!((_local9 == DisplayObject(form)))) && (_local9.parent))) { _local5 = getChildIndex(_local9.parent, _local9); _local6 = _local5.toString(16); if (_local6.length < 4){ _local7 = (_local8.substring(0, (4 - _local6.length)) + _local6); }; _local3 = (_local7 + _local3); _local9 = _local9.parent; }; while (((!((_local10 == DisplayObject(form)))) && (_local10.parent))) { _local5 = getChildIndex(_local10.parent, _local10); _local6 = _local5.toString(16); if (_local6.length < 4){ _local7 = (_local8.substring(0, (4 - _local6.length)) + _local6); }; _local4 = (_local7 + _local4); _local10 = _local10.parent; }; return (((_local3 > _local4)) ? 1 : ((_local3 < _local4)) ? -1 : 0); } public function get defaultButton():Button{ return (_defaultButton); } private function activateHandler(_arg1:Event):void{ var _local2:InteractiveObject; _local2 = InteractiveObject(_arg1.target); if (lastFocus){ if ((lastFocus is IFocusManagerComponent)){ IFocusManagerComponent(lastFocus).setFocus(); } else { form.stage.focus = lastFocus; }; }; lastAction = "ACTIVATE"; } public function showFocus():void{ } public function set defaultButtonEnabled(_arg1:Boolean):void{ _defaultButtonEnabled = _arg1; } public function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject{ var _local2:DisplayObject; var _local3:String; var _local4:int; var _local5:Boolean; var _local6:int; var _local7:int; var _local8:IFocusManagerGroup; if (!hasFocusableObjects()){ return (null); }; if (calculateCandidates){ sortFocusableObjects(); calculateCandidates = false; }; _local2 = form.stage.focus; _local2 = DisplayObject(findFocusManagerComponent(InteractiveObject(_local2))); _local3 = ""; if ((_local2 is IFocusManagerGroup)){ _local8 = IFocusManagerGroup(_local2); _local3 = _local8.groupName; }; _local4 = getIndexOfFocusedObject(_local2); _local5 = false; _local6 = _local4; if (_local4 == -1){ if (_arg1){ _local4 = focusableCandidates.length; }; _local5 = true; }; _local7 = getIndexOfNextObject(_local4, _arg1, _local5, _local3); return (findFocusManagerComponent(focusableCandidates[_local7])); } private function mouseDownHandler(_arg1:MouseEvent):void{ var _local2:InteractiveObject; if (_arg1.isDefaultPrevented()){ return; }; _local2 = getTopLevelFocusTarget(InteractiveObject(_arg1.target)); if (!_local2){ return; }; showFocusIndicator = false; if (((((!((_local2 == lastFocus))) || ((lastAction == "ACTIVATE")))) && (!((_local2 is TextField))))){ setFocus(_local2); }; lastAction = "MOUSEDOWN"; } private function isTabVisible(_arg1:DisplayObject):Boolean{ var _local2:DisplayObjectContainer; _local2 = _arg1.parent; while (((((_local2) && (!((_local2 is Stage))))) && (!(((_local2.parent) && ((_local2.parent is Stage))))))) { if (!_local2.tabChildren){ return (false); }; _local2 = _local2.parent; }; return (true); } public function get nextTabIndex():int{ return (0); } private function keyDownHandler(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == Keyboard.TAB){ lastAction = "KEY"; if (calculateCandidates){ sortFocusableObjects(); calculateCandidates = false; }; }; if (((((((defaultButtonEnabled) && ((_arg1.keyCode == Keyboard.ENTER)))) && (defaultButton))) && (defButton.enabled))){ sendDefaultButtonEvent(); }; } private function focusInHandler(_arg1:FocusEvent):void{ var _local2:InteractiveObject; var _local3:Button; _local2 = InteractiveObject(_arg1.target); if (form.contains(_local2)){ lastFocus = findFocusManagerComponent(InteractiveObject(_local2)); if ((lastFocus is Button)){ _local3 = Button(lastFocus); if (defButton){ defButton.emphasized = false; defButton = _local3; _local3.emphasized = true; }; } else { if (((defButton) && (!((defButton == _defaultButton))))){ defButton.emphasized = false; defButton = _defaultButton; _defaultButton.emphasized = true; }; }; }; } private function tabEnabledChangeHandler(_arg1:Event):void{ var _local2:InteractiveObject; var _local3:Boolean; calculateCandidates = true; _local2 = InteractiveObject(_arg1.target); _local3 = (focusableObjects[_local2] == true); if (_local2.tabEnabled){ if (((!(_local3)) && (isTabVisible(_local2)))){ if (!(_local2 is IFocusManagerComponent)){ _local2.focusRect = false; }; focusableObjects[_local2] = true; }; } else { if (_local3){ delete focusableObjects[_local2]; }; }; } public function set showFocusIndicator(_arg1:Boolean):void{ _showFocusIndicator = _arg1; } public function get form():DisplayObjectContainer{ return (_form); } private function sortByTabIndex(_arg1:InteractiveObject, _arg2:InteractiveObject):int{ return (((_arg1.tabIndex > _arg2.tabIndex)) ? 1 : ((_arg1.tabIndex < _arg2.tabIndex)) ? -1 : sortByDepth(_arg1, _arg2)); } public function activate():void{ if (activated){ return; }; form.stage.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler, false, 0, true); form.stage.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler, false, 0, true); form.addEventListener(FocusEvent.FOCUS_IN, focusInHandler, true); form.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true); form.stage.addEventListener(Event.ACTIVATE, activateHandler, false, 0, true); form.stage.addEventListener(Event.DEACTIVATE, deactivateHandler, false, 0, true); form.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); form.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true); activated = true; if (lastFocus){ setFocus(lastFocus); }; } public function deactivate():void{ form.stage.removeEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler); form.stage.removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler); form.removeEventListener(FocusEvent.FOCUS_IN, focusInHandler, true); form.removeEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true); form.stage.removeEventListener(Event.ACTIVATE, activateHandler); form.stage.removeEventListener(Event.DEACTIVATE, deactivateHandler); form.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); form.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true); activated = false; } public function get defaultButtonEnabled():Boolean{ return (_defaultButtonEnabled); } } }//package fl.managers
Section 34
//IFocusManager (fl.managers.IFocusManager) package fl.managers { import fl.controls.*; import flash.display.*; public interface IFocusManager { function getFocus():InteractiveObject; function deactivate():void; function set defaultButton(_arg1:Button):void; function set showFocusIndicator(_arg1:Boolean):void; function get defaultButtonEnabled():Boolean; function get nextTabIndex():int; function get defaultButton():Button; function get showFocusIndicator():Boolean; function setFocus(_arg1:InteractiveObject):void; function activate():void; function showFocus():void; function set defaultButtonEnabled(_arg1:Boolean):void; function hideFocus():void; function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject; function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject; } }//package fl.managers
Section 35
//IFocusManagerComponent (fl.managers.IFocusManagerComponent) package fl.managers { public interface IFocusManagerComponent { function set focusEnabled(_arg1:Boolean):void; function drawFocus(_arg1:Boolean):void; function setFocus():void; function get focusEnabled():Boolean; function get tabEnabled():Boolean; function get tabIndex():int; function get mouseFocusEnabled():Boolean; } }//package fl.managers
Section 36
//IFocusManagerGroup (fl.managers.IFocusManagerGroup) package fl.managers { public interface IFocusManagerGroup { function set groupName(_arg1:String):void; function set selected(_arg1:Boolean):void; function get groupName():String; function get selected():Boolean; } }//package fl.managers
Section 37
//StyleManager (fl.managers.StyleManager) package fl.managers { import fl.core.*; import flash.utils.*; import flash.text.*; public class StyleManager { private var globalStyles:Object; private var classToDefaultStylesDict:Dictionary; private var styleToClassesHash:Object; private var classToStylesDict:Dictionary; private var classToInstancesDict:Dictionary; private static var _instance:StyleManager; public function StyleManager(){ styleToClassesHash = {}; classToInstancesDict = new Dictionary(true); classToStylesDict = new Dictionary(true); classToDefaultStylesDict = new Dictionary(true); globalStyles = UIComponent.getStyleDefinition(); } public static function clearComponentStyle(_arg1:Object, _arg2:String):void{ var _local3:Class; var _local4:Object; _local3 = getClassDef(_arg1); _local4 = getInstance().classToStylesDict[_local3]; if (((!((_local4 == null))) && (!((_local4[_arg2] == null))))){ delete _local4[_arg2]; invalidateComponentStyle(_local3, _arg2); }; } private static function getClassDef(_arg1:Object):Class{ var component = _arg1; if ((component is Class)){ return ((component as Class)); }; try { return ((getDefinitionByName(getQualifiedClassName(component)) as Class)); } catch(e:Error) { if ((component is UIComponent)){ try { return ((component.loaderInfo.applicationDomain.getDefinition(getQualifiedClassName(component)) as Class)); } catch(e:Error) { }; }; }; return (null); } public static function clearStyle(_arg1:String):void{ setStyle(_arg1, null); } public static function setComponentStyle(_arg1:Object, _arg2:String, _arg3:Object):void{ var _local4:Class; var _local5:Object; _local4 = getClassDef(_arg1); _local5 = getInstance().classToStylesDict[_local4]; if (_local5 == null){ _local5 = (getInstance().classToStylesDict[_local4] = {}); }; if (_local5 == _arg3){ return; }; _local5[_arg2] = _arg3; invalidateComponentStyle(_local4, _arg2); } private static function setSharedStyles(_arg1:UIComponent):void{ var _local2:StyleManager; var _local3:Class; var _local4:Object; var _local5:String; _local2 = getInstance(); _local3 = getClassDef(_arg1); _local4 = _local2.classToDefaultStylesDict[_local3]; for (_local5 in _local4) { _arg1.setSharedStyle(_local5, getSharedStyle(_arg1, _local5)); }; } public static function getComponentStyle(_arg1:Object, _arg2:String):Object{ var _local3:Class; var _local4:Object; _local3 = getClassDef(_arg1); _local4 = getInstance().classToStylesDict[_local3]; return (((_local4)==null) ? null : _local4[_arg2]); } private static function getInstance(){ if (_instance == null){ _instance = new (StyleManager); }; return (_instance); } private static function invalidateComponentStyle(_arg1:Class, _arg2:String):void{ var _local3:Dictionary; var _local4:Object; var _local5:UIComponent; _local3 = getInstance().classToInstancesDict[_arg1]; if (_local3 == null){ return; }; for (_local4 in _local3) { _local5 = (_local4 as UIComponent); if (_local5 == null){ } else { _local5.setSharedStyle(_arg2, getSharedStyle(_local5, _arg2)); }; }; } private static function invalidateStyle(_arg1:String):void{ var _local2:Dictionary; var _local3:Object; _local2 = getInstance().styleToClassesHash[_arg1]; if (_local2 == null){ return; }; for (_local3 in _local2) { invalidateComponentStyle(Class(_local3), _arg1); }; } public static function registerInstance(_arg1:UIComponent):void{ var inst:StyleManager; var classDef:Class; var target:Class; var defaultStyles:Object; var styleToClasses:Object; var n:String; var instance = _arg1; inst = getInstance(); classDef = getClassDef(instance); if (classDef == null){ return; }; if (inst.classToInstancesDict[classDef] == null){ inst.classToInstancesDict[classDef] = new Dictionary(true); target = classDef; while (defaultStyles == null) { if (target["getStyleDefinition"] != null){ defaultStyles = target["getStyleDefinition"](); break; }; try { target = (instance.loaderInfo.applicationDomain.getDefinition(getQualifiedSuperclassName(target)) as Class); } catch(err:Error) { try { target = (getDefinitionByName(getQualifiedSuperclassName(target)) as Class); } catch(e:Error) { defaultStyles = UIComponent.getStyleDefinition(); break; }; }; }; styleToClasses = inst.styleToClassesHash; for (n in defaultStyles) { if (styleToClasses[n] == null){ styleToClasses[n] = new Dictionary(true); }; styleToClasses[n][classDef] = true; }; inst.classToDefaultStylesDict[classDef] = defaultStyles; inst.classToStylesDict[classDef] = {}; }; inst.classToInstancesDict[classDef][instance] = true; setSharedStyles(instance); } public static function getStyle(_arg1:String):Object{ return (getInstance().globalStyles[_arg1]); } private static function getSharedStyle(_arg1:UIComponent, _arg2:String):Object{ var _local3:Class; var _local4:StyleManager; var _local5:Object; _local3 = getClassDef(_arg1); _local4 = getInstance(); _local5 = _local4.classToStylesDict[_local3][_arg2]; if (_local5 != null){ return (_local5); }; _local5 = _local4.globalStyles[_arg2]; if (_local5 != null){ return (_local5); }; return (_local4.classToDefaultStylesDict[_local3][_arg2]); } public static function setStyle(_arg1:String, _arg2:Object):void{ var _local3:Object; _local3 = getInstance().globalStyles; if ((((_local3[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; _local3[_arg1] = _arg2; invalidateStyle(_arg1); } } }//package fl.managers
Section 38
//a3 (a3) package { import com.adobe.ooas3.*; public dynamic class a3 extends soundcomplete { } }//package
Section 39
//a3g (a3g) package { import com.adobe.ooas3.*; public dynamic class a3g extends soundcomplete { } }//package
Section 40
//a3p (a3p) package { import com.adobe.ooas3.*; public dynamic class a3p extends soundcomplete { } }//package
Section 41
//a3s (a3s) package { import com.adobe.ooas3.*; public dynamic class a3s extends soundcomplete { } }//package
Section 42
//a3sg (a3sg) package { import com.adobe.ooas3.*; public dynamic class a3sg extends soundcomplete { } }//package
Section 43
//a3sp (a3sp) package { import com.adobe.ooas3.*; public dynamic class a3sp extends soundcomplete { } }//package
Section 44
//a4 (a4) package { import com.adobe.ooas3.*; public dynamic class a4 extends soundcomplete { } }//package
Section 45
//a4g (a4g) package { import com.adobe.ooas3.*; public dynamic class a4g extends soundcomplete { } }//package
Section 46
//a4p (a4p) package { import com.adobe.ooas3.*; public dynamic class a4p extends soundcomplete { } }//package
Section 47
//a4s (a4s) package { import com.adobe.ooas3.*; public dynamic class a4s extends soundcomplete { } }//package
Section 48
//a4sg (a4sg) package { import com.adobe.ooas3.*; public dynamic class a4sg extends soundcomplete { } }//package
Section 49
//a4sp (a4sp) package { import com.adobe.ooas3.*; public dynamic class a4sp extends soundcomplete { } }//package
Section 50
//a5 (a5) package { import com.adobe.ooas3.*; public dynamic class a5 extends soundcomplete { } }//package
Section 51
//a5g (a5g) package { import com.adobe.ooas3.*; public dynamic class a5g extends soundcomplete { } }//package
Section 52
//a5p (a5p) package { import com.adobe.ooas3.*; public dynamic class a5p extends soundcomplete { } }//package
Section 53
//a5s (a5s) package { import com.adobe.ooas3.*; public dynamic class a5s extends soundcomplete { } }//package
Section 54
//a5sg (a5sg) package { import com.adobe.ooas3.*; public dynamic class a5sg extends soundcomplete { } }//package
Section 55
//a5sp (a5sp) package { import com.adobe.ooas3.*; public dynamic class a5sp extends soundcomplete { } }//package
Section 56
//aboveLineNote (aboveLineNote) package { import flash.display.*; public dynamic class aboveLineNote extends Sprite { } }//package
Section 57
//arial (arial) package { import flash.text.*; public dynamic class arial extends Font { } }//package
Section 58
//audiobar (audiobar) package { import flash.display.*; public dynamic class audiobar extends Sprite { } }//package
Section 59
//b3 (b3) package { import com.adobe.ooas3.*; public dynamic class b3 extends soundcomplete { } }//package
Section 60
//b3g (b3g) package { import com.adobe.ooas3.*; public dynamic class b3g extends soundcomplete { } }//package
Section 61
//b3p (b3p) package { import com.adobe.ooas3.*; public dynamic class b3p extends soundcomplete { } }//package
Section 62
//b4 (b4) package { import com.adobe.ooas3.*; public dynamic class b4 extends soundcomplete { } }//package
Section 63
//b4g (b4g) package { import com.adobe.ooas3.*; public dynamic class b4g extends soundcomplete { } }//package
Section 64
//b4p (b4p) package { import com.adobe.ooas3.*; public dynamic class b4p extends soundcomplete { } }//package
Section 65
//b5 (b5) package { import com.adobe.ooas3.*; public dynamic class b5 extends soundcomplete { } }//package
Section 66
//b5g (b5g) package { import com.adobe.ooas3.*; public dynamic class b5g extends soundcomplete { } }//package
Section 67
//b5p (b5p) package { import com.adobe.ooas3.*; public dynamic class b5p extends soundcomplete { } }//package
Section 68
//bluedot (bluedot) package { import flash.display.*; public dynamic class bluedot extends Sprite { } }//package
Section 69
//c2g (c2g) package { import com.adobe.ooas3.*; public dynamic class c2g extends soundcomplete { } }//package
Section 70
//c2p (c2p) package { import com.adobe.ooas3.*; public dynamic class c2p extends soundcomplete { } }//package
Section 71
//c2sg (c2sg) package { import com.adobe.ooas3.*; public dynamic class c2sg extends soundcomplete { } }//package
Section 72
//c2sp (c2sp) package { import com.adobe.ooas3.*; public dynamic class c2sp extends soundcomplete { } }//package
Section 73
//c3 (c3) package { import com.adobe.ooas3.*; public dynamic class c3 extends soundcomplete { } }//package
Section 74
//c3g (c3g) package { import com.adobe.ooas3.*; public dynamic class c3g extends soundcomplete { } }//package
Section 75
//c3p (c3p) package { import com.adobe.ooas3.*; public dynamic class c3p extends soundcomplete { } }//package
Section 76
//c3s (c3s) package { import com.adobe.ooas3.*; public dynamic class c3s extends soundcomplete { } }//package
Section 77
//c3sg (c3sg) package { import com.adobe.ooas3.*; public dynamic class c3sg extends soundcomplete { } }//package
Section 78
//c3sp (c3sp) package { import com.adobe.ooas3.*; public dynamic class c3sp extends soundcomplete { } }//package
Section 79
//c4 (c4) package { import com.adobe.ooas3.*; public dynamic class c4 extends soundcomplete { } }//package
Section 80
//c4g (c4g) package { import com.adobe.ooas3.*; public dynamic class c4g extends soundcomplete { } }//package
Section 81
//c4p (c4p) package { import com.adobe.ooas3.*; public dynamic class c4p extends soundcomplete { } }//package
Section 82
//c4s (c4s) package { import com.adobe.ooas3.*; public dynamic class c4s extends soundcomplete { } }//package
Section 83
//c4sg (c4sg) package { import com.adobe.ooas3.*; public dynamic class c4sg extends soundcomplete { } }//package
Section 84
//c4sp (c4sp) package { import com.adobe.ooas3.*; public dynamic class c4sp extends soundcomplete { } }//package
Section 85
//c5 (c5) package { import com.adobe.ooas3.*; public dynamic class c5 extends soundcomplete { } }//package
Section 86
//c5g (c5g) package { import com.adobe.ooas3.*; public dynamic class c5g extends soundcomplete { } }//package
Section 87
//c5p (c5p) package { import com.adobe.ooas3.*; public dynamic class c5p extends soundcomplete { } }//package
Section 88
//c5s (c5s) package { import com.adobe.ooas3.*; public dynamic class c5s extends soundcomplete { } }//package
Section 89
//c6 (c6) package { import com.adobe.ooas3.*; public dynamic class c6 extends soundcomplete { } }//package
Section 90
//CellRenderer_disabledSkin (CellRenderer_disabledSkin) package { import flash.display.*; public dynamic class CellRenderer_disabledSkin extends MovieClip { } }//package
Section 91
//CellRenderer_downSkin (CellRenderer_downSkin) package { import flash.display.*; public dynamic class CellRenderer_downSkin extends MovieClip { } }//package
Section 92
//CellRenderer_overSkin (CellRenderer_overSkin) package { import flash.display.*; public dynamic class CellRenderer_overSkin extends MovieClip { } }//package
Section 93
//CellRenderer_selectedDisabledSkin (CellRenderer_selectedDisabledSkin) package { import flash.display.*; public dynamic class CellRenderer_selectedDisabledSkin extends MovieClip { } }//package
Section 94
//CellRenderer_selectedDownSkin (CellRenderer_selectedDownSkin) package { import flash.display.*; public dynamic class CellRenderer_selectedDownSkin extends MovieClip { } }//package
Section 95
//CellRenderer_selectedOverSkin (CellRenderer_selectedOverSkin) package { import flash.display.*; public dynamic class CellRenderer_selectedOverSkin extends MovieClip { } }//package
Section 96
//CellRenderer_selectedUpSkin (CellRenderer_selectedUpSkin) package { import flash.display.*; public dynamic class CellRenderer_selectedUpSkin extends MovieClip { } }//package
Section 97
//CellRenderer_upSkin (CellRenderer_upSkin) package { import flash.display.*; public dynamic class CellRenderer_upSkin extends MovieClip { } }//package
Section 98
//checkboxchecked (checkboxchecked) package { import flash.display.*; public dynamic class checkboxchecked extends Sprite { } }//package
Section 99
//checkboxy (checkboxy) package { import flash.display.*; public dynamic class checkboxy extends MovieClip { } }//package
Section 100
//checked (checked) package { import flash.display.*; public dynamic class checked extends MovieClip { } }//package
Section 101
//ComboBox_disabledSkin (ComboBox_disabledSkin) package { import flash.display.*; public dynamic class ComboBox_disabledSkin extends MovieClip { } }//package
Section 102
//ComboBox_downSkin (ComboBox_downSkin) package { import flash.display.*; public dynamic class ComboBox_downSkin extends MovieClip { } }//package
Section 103
//ComboBox_overSkin (ComboBox_overSkin) package { import flash.display.*; public dynamic class ComboBox_overSkin extends MovieClip { } }//package
Section 104
//ComboBox_upSkin (ComboBox_upSkin) package { import flash.display.*; public dynamic class ComboBox_upSkin extends MovieClip { } }//package
Section 105
//d2g (d2g) package { import com.adobe.ooas3.*; public dynamic class d2g extends soundcomplete { } }//package
Section 106
//d2p (d2p) package { import com.adobe.ooas3.*; public dynamic class d2p extends soundcomplete { } }//package
Section 107
//d2sg (d2sg) package { import com.adobe.ooas3.*; public dynamic class d2sg extends soundcomplete { } }//package
Section 108
//d2sp (d2sp) package { import com.adobe.ooas3.*; public dynamic class d2sp extends soundcomplete { } }//package
Section 109
//d3 (d3) package { import com.adobe.ooas3.*; public dynamic class d3 extends soundcomplete { } }//package
Section 110
//d3g (d3g) package { import com.adobe.ooas3.*; public dynamic class d3g extends soundcomplete { } }//package
Section 111
//d3p (d3p) package { import com.adobe.ooas3.*; public dynamic class d3p extends soundcomplete { } }//package
Section 112
//d3s (d3s) package { import com.adobe.ooas3.*; public dynamic class d3s extends soundcomplete { } }//package
Section 113
//d3sg (d3sg) package { import com.adobe.ooas3.*; public dynamic class d3sg extends soundcomplete { } }//package
Section 114
//d3sp (d3sp) package { import com.adobe.ooas3.*; public dynamic class d3sp extends soundcomplete { } }//package
Section 115
//d4 (d4) package { import com.adobe.ooas3.*; public dynamic class d4 extends soundcomplete { } }//package
Section 116
//d4g (d4g) package { import com.adobe.ooas3.*; public dynamic class d4g extends soundcomplete { } }//package
Section 117
//d4p (d4p) package { import com.adobe.ooas3.*; public dynamic class d4p extends soundcomplete { } }//package
Section 118
//d4s (d4s) package { import com.adobe.ooas3.*; public dynamic class d4s extends soundcomplete { } }//package
Section 119
//d4sg (d4sg) package { import com.adobe.ooas3.*; public dynamic class d4sg extends soundcomplete { } }//package
Section 120
//d4sp (d4sp) package { import com.adobe.ooas3.*; public dynamic class d4sp extends soundcomplete { } }//package
Section 121
//d5 (d5) package { import com.adobe.ooas3.*; public dynamic class d5 extends soundcomplete { } }//package
Section 122
//d5s (d5s) package { import com.adobe.ooas3.*; public dynamic class d5s extends soundcomplete { } }//package
Section 123
//doubleLineAbove (doubleLineAbove) package { import flash.display.*; public dynamic class doubleLineAbove extends Sprite { } }//package
Section 124
//doubleLineNote (doubleLineNote) package { import flash.display.*; public dynamic class doubleLineNote extends Sprite { } }//package
Section 125
//downArrow (downArrow) package { import flash.display.*; public dynamic class downArrow extends Sprite { } }//package
Section 126
//e2g (e2g) package { import com.adobe.ooas3.*; public dynamic class e2g extends soundcomplete { } }//package
Section 127
//e2p (e2p) package { import com.adobe.ooas3.*; public dynamic class e2p extends soundcomplete { } }//package
Section 128
//e3 (e3) package { import com.adobe.ooas3.*; public dynamic class e3 extends soundcomplete { } }//package
Section 129
//e3g (e3g) package { import com.adobe.ooas3.*; public dynamic class e3g extends soundcomplete { } }//package
Section 130
//e3p (e3p) package { import com.adobe.ooas3.*; public dynamic class e3p extends soundcomplete { } }//package
Section 131
//e4 (e4) package { import com.adobe.ooas3.*; public dynamic class e4 extends soundcomplete { } }//package
Section 132
//e4g (e4g) package { import com.adobe.ooas3.*; public dynamic class e4g extends soundcomplete { } }//package
Section 133
//e4p (e4p) package { import com.adobe.ooas3.*; public dynamic class e4p extends soundcomplete { } }//package
Section 134
//e5 (e5) package { import com.adobe.ooas3.*; public dynamic class e5 extends soundcomplete { } }//package
Section 135
//f2g (f2g) package { import com.adobe.ooas3.*; public dynamic class f2g extends soundcomplete { } }//package
Section 136
//f2p (f2p) package { import com.adobe.ooas3.*; public dynamic class f2p extends soundcomplete { } }//package
Section 137
//f2sg (f2sg) package { import com.adobe.ooas3.*; public dynamic class f2sg extends soundcomplete { } }//package
Section 138
//f2sp (f2sp) package { import com.adobe.ooas3.*; public dynamic class f2sp extends soundcomplete { } }//package
Section 139
//f3 (f3) package { import com.adobe.ooas3.*; public dynamic class f3 extends soundcomplete { } }//package
Section 140
//f3g (f3g) package { import com.adobe.ooas3.*; public dynamic class f3g extends soundcomplete { } }//package
Section 141
//f3p (f3p) package { import com.adobe.ooas3.*; public dynamic class f3p extends soundcomplete { } }//package
Section 142
//f3s (f3s) package { import com.adobe.ooas3.*; public dynamic class f3s extends soundcomplete { } }//package
Section 143
//f3sg (f3sg) package { import com.adobe.ooas3.*; public dynamic class f3sg extends soundcomplete { } }//package
Section 144
//f3sp (f3sp) package { import com.adobe.ooas3.*; public dynamic class f3sp extends soundcomplete { } }//package
Section 145
//f4 (f4) package { import com.adobe.ooas3.*; public dynamic class f4 extends soundcomplete { } }//package
Section 146
//f4g (f4g) package { import com.adobe.ooas3.*; public dynamic class f4g extends soundcomplete { } }//package
Section 147
//f4p (f4p) package { import com.adobe.ooas3.*; public dynamic class f4p extends soundcomplete { } }//package
Section 148
//f4s (f4s) package { import com.adobe.ooas3.*; public dynamic class f4s extends soundcomplete { } }//package
Section 149
//f4sg (f4sg) package { import com.adobe.ooas3.*; public dynamic class f4sg extends soundcomplete { } }//package
Section 150
//f4sp (f4sp) package { import com.adobe.ooas3.*; public dynamic class f4sp extends soundcomplete { } }//package
Section 151
//f5 (f5) package { import com.adobe.ooas3.*; public dynamic class f5 extends soundcomplete { } }//package
Section 152
//f5s (f5s) package { import com.adobe.ooas3.*; public dynamic class f5s extends soundcomplete { } }//package
Section 153
//flat (flat) package { import flash.display.*; public dynamic class flat extends Sprite { } }//package
Section 154
//focusRectSkin (focusRectSkin) package { import flash.display.*; public dynamic class focusRectSkin extends MovieClip { } }//package
Section 155
//g2g (g2g) package { import com.adobe.ooas3.*; public dynamic class g2g extends soundcomplete { } }//package
Section 156
//g2p (g2p) package { import com.adobe.ooas3.*; public dynamic class g2p extends soundcomplete { } }//package
Section 157
//g2sg (g2sg) package { import com.adobe.ooas3.*; public dynamic class g2sg extends soundcomplete { } }//package
Section 158
//g2sp (g2sp) package { import com.adobe.ooas3.*; public dynamic class g2sp extends soundcomplete { } }//package
Section 159
//g3 (g3) package { import com.adobe.ooas3.*; public dynamic class g3 extends soundcomplete { } }//package
Section 160
//g3g (g3g) package { import com.adobe.ooas3.*; public dynamic class g3g extends soundcomplete { } }//package
Section 161
//g3p (g3p) package { import com.adobe.ooas3.*; public dynamic class g3p extends soundcomplete { } }//package
Section 162
//g3s (g3s) package { import com.adobe.ooas3.*; public dynamic class g3s extends soundcomplete { } }//package
Section 163
//g3sg (g3sg) package { import com.adobe.ooas3.*; public dynamic class g3sg extends soundcomplete { } }//package
Section 164
//g3sp (g3sp) package { import com.adobe.ooas3.*; public dynamic class g3sp extends soundcomplete { } }//package
Section 165
//g4 (g4) package { import com.adobe.ooas3.*; public dynamic class g4 extends soundcomplete { } }//package
Section 166
//g4g (g4g) package { import com.adobe.ooas3.*; public dynamic class g4g extends soundcomplete { } }//package
Section 167
//g4p (g4p) package { import com.adobe.ooas3.*; public dynamic class g4p extends soundcomplete { } }//package
Section 168
//g4s (g4s) package { import com.adobe.ooas3.*; public dynamic class g4s extends soundcomplete { } }//package
Section 169
//g4sg (g4sg) package { import com.adobe.ooas3.*; public dynamic class g4sg extends soundcomplete { } }//package
Section 170
//g4sp (g4sp) package { import com.adobe.ooas3.*; public dynamic class g4sp extends soundcomplete { } }//package
Section 171
//g5 (g5) package { import com.adobe.ooas3.*; public dynamic class g5 extends soundcomplete { } }//package
Section 172
//g5s (g5s) package { import com.adobe.ooas3.*; public dynamic class g5s extends soundcomplete { } }//package
Section 173
//greendot (greendot) package { import flash.display.*; public dynamic class greendot extends Sprite { } }//package
Section 174
//ksharp (ksharp) package { import flash.display.*; public dynamic class ksharp extends Sprite { } }//package
Section 175
//letter (letter) package { import flash.display.*; public dynamic class letter extends Sprite { } }//package
Section 176
//lineNote (lineNote) package { import flash.display.*; public dynamic class lineNote extends Sprite { } }//package
Section 177
//List_skin (List_skin) package { import flash.display.*; public dynamic class List_skin extends MovieClip { } }//package
Section 178
//natural (natural) package { import flash.display.*; public dynamic class natural extends Sprite { } }//package
Section 179
//nicebutton (nicebutton) package { import flash.display.*; public dynamic class nicebutton extends MovieClip { } }//package
Section 180
//note (note) package { import flash.display.*; public dynamic class note extends Sprite { } }//package
Section 181
//rectangleBase (rectangleBase) package { import flash.display.*; public dynamic class rectangleBase extends Sprite { } }//package
Section 182
//reddot (reddot) package { import flash.display.*; public dynamic class reddot extends Sprite { } }//package
Section 183
//s (s) package { import com.adobe.ooas3.*; public dynamic class s extends soundcomplete { } }//package
Section 184
//ScrollArrowDown_disabledSkin (ScrollArrowDown_disabledSkin) package { import flash.display.*; public dynamic class ScrollArrowDown_disabledSkin extends MovieClip { } }//package
Section 185
//ScrollArrowDown_downSkin (ScrollArrowDown_downSkin) package { import flash.display.*; public dynamic class ScrollArrowDown_downSkin extends MovieClip { } }//package
Section 186
//ScrollArrowDown_overSkin (ScrollArrowDown_overSkin) package { import flash.display.*; public dynamic class ScrollArrowDown_overSkin extends MovieClip { } }//package
Section 187
//ScrollArrowDown_upSkin (ScrollArrowDown_upSkin) package { import flash.display.*; public dynamic class ScrollArrowDown_upSkin extends MovieClip { } }//package
Section 188
//ScrollArrowUp_disabledSkin (ScrollArrowUp_disabledSkin) package { import flash.display.*; public dynamic class ScrollArrowUp_disabledSkin extends MovieClip { } }//package
Section 189
//ScrollArrowUp_downSkin (ScrollArrowUp_downSkin) package { import flash.display.*; public dynamic class ScrollArrowUp_downSkin extends MovieClip { } }//package
Section 190
//ScrollArrowUp_overSkin (ScrollArrowUp_overSkin) package { import flash.display.*; public dynamic class ScrollArrowUp_overSkin extends MovieClip { } }//package
Section 191
//ScrollArrowUp_upSkin (ScrollArrowUp_upSkin) package { import flash.display.*; public dynamic class ScrollArrowUp_upSkin extends MovieClip { } }//package
Section 192
//ScrollBar_thumbIcon (ScrollBar_thumbIcon) package { import flash.display.*; public dynamic class ScrollBar_thumbIcon extends MovieClip { } }//package
Section 193
//ScrollThumb_downSkin (ScrollThumb_downSkin) package { import flash.display.*; public dynamic class ScrollThumb_downSkin extends MovieClip { } }//package
Section 194
//ScrollThumb_overSkin (ScrollThumb_overSkin) package { import flash.display.*; public dynamic class ScrollThumb_overSkin extends MovieClip { } }//package
Section 195
//ScrollThumb_upSkin (ScrollThumb_upSkin) package { import flash.display.*; public dynamic class ScrollThumb_upSkin extends MovieClip { } }//package
Section 196
//ScrollTrack_skin (ScrollTrack_skin) package { import flash.display.*; public dynamic class ScrollTrack_skin extends MovieClip { } }//package
Section 197
//spekkio (spekkio) package { import flash.display.*; public dynamic class spekkio extends Sprite { } }//package
Section 198
//ssharp (ssharp) package { import flash.display.*; public dynamic class ssharp extends Sprite { } }//package
Section 199
//staff (staff) package { import flash.display.*; public dynamic class staff extends Sprite { } }//package
Section 200
//statbars (statbars) package { import flash.display.*; public dynamic class statbars extends Sprite { } }//package
Section 201
//TextInput_disabledSkin (TextInput_disabledSkin) package { import flash.display.*; public dynamic class TextInput_disabledSkin extends MovieClip { } }//package
Section 202
//TextInput_upSkin (TextInput_upSkin) package { import flash.display.*; public dynamic class TextInput_upSkin extends MovieClip { } }//package
Section 203
//ticks (ticks) package { import com.adobe.ooas3.*; public dynamic class ticks extends soundcomplete { } }//package
Section 204
//unchecked (unchecked) package { import flash.display.*; public dynamic class unchecked extends MovieClip { } }//package
Section 205
//upArrow (upArrow) package { import flash.display.*; public dynamic class upArrow extends Sprite { } }//package
Section 206
//v1 (v1) package { import com.adobe.ooas3.*; public dynamic class v1 extends soundcomplete { } }//package
Section 207
//v10 (v10) package { import com.adobe.ooas3.*; public dynamic class v10 extends soundcomplete { } }//package
Section 208
//v11 (v11) package { import com.adobe.ooas3.*; public dynamic class v11 extends soundcomplete { } }//package
Section 209
//v12 (v12) package { import com.adobe.ooas3.*; public dynamic class v12 extends soundcomplete { } }//package
Section 210
//v2 (v2) package { import com.adobe.ooas3.*; public dynamic class v2 extends soundcomplete { } }//package
Section 211
//v3 (v3) package { import com.adobe.ooas3.*; public dynamic class v3 extends soundcomplete { } }//package
Section 212
//v4 (v4) package { import com.adobe.ooas3.*; public dynamic class v4 extends soundcomplete { } }//package
Section 213
//v5 (v5) package { import com.adobe.ooas3.*; public dynamic class v5 extends soundcomplete { } }//package
Section 214
//v6 (v6) package { import com.adobe.ooas3.*; public dynamic class v6 extends soundcomplete { } }//package
Section 215
//v7 (v7) package { import com.adobe.ooas3.*; public dynamic class v7 extends soundcomplete { } }//package
Section 216
//v8 (v8) package { import com.adobe.ooas3.*; public dynamic class v8 extends soundcomplete { } }//package
Section 217
//v9 (v9) package { import com.adobe.ooas3.*; public dynamic class v9 extends soundcomplete { } }//package
Section 218
//yellowDot (yellowDot) package { import flash.display.*; public dynamic class yellowDot extends Sprite { } }//package

Library Items

Symbol 1 Font {arial}
Symbol 2 Sound {v12}
Symbol 3 Sound {v6}
Symbol 4 Sound {v1}
Symbol 5 Sound {v3}
Symbol 6 Sound {v8}
Symbol 7 Sound {v10}
Symbol 8 Sound {v9}
Symbol 9 Sound {v2}
Symbol 10 Sound {v11}
Symbol 11 Sound {v7}
Symbol 12 Sound {v5}
Symbol 13 Sound {v4}
Symbol 14 Sound {s}
Symbol 15 Sound {g5}
Symbol 16 Sound {g5s}
Symbol 17 Sound {g4sp}
Symbol 18 Sound {g4sg}
Symbol 19 Sound {g4}
Symbol 20 Sound {g4p}
Symbol 21 Sound {g4g}
Symbol 22 Sound {g4s}
Symbol 23 Sound {g3sp}
Symbol 24 Sound {g3sg}
Symbol 25 Sound {g3}
Symbol 26 Sound {g3p}
Symbol 27 Sound {g3g}
Symbol 28 Sound {g3s}
Symbol 29 Sound {g2sp}
Symbol 30 Sound {g2sg}
Symbol 31 Sound {g2p}
Symbol 32 Sound {g2g}
Symbol 33 Sound {f5}
Symbol 34 Sound {f5s}
Symbol 35 Sound {f4sp}
Symbol 36 Sound {f4sg}
Symbol 37 Sound {f4}
Symbol 38 Sound {f4p}
Symbol 39 Sound {f4g}
Symbol 40 Sound {f4s}
Symbol 41 Sound {f3sp}
Symbol 42 Sound {f3sg}
Symbol 43 Sound {f3}
Symbol 44 Sound {f3p}
Symbol 45 Sound {f3g}
Symbol 46 Sound {f3s}
Symbol 47 Sound {f2sp}
Symbol 48 Sound {f2sg}
Symbol 49 Sound {f2p}
Symbol 50 Sound {f2g}
Symbol 51 Sound {e5}
Symbol 52 Sound {e4}
Symbol 53 Sound {e4p}
Symbol 54 Sound {e4g}
Symbol 55 Sound {e3}
Symbol 56 Sound {e3p}
Symbol 57 Sound {e3g}
Symbol 58 Sound {e2p}
Symbol 59 Sound {e2g}
Symbol 60 Sound {d5}
Symbol 61 Sound {d5s}
Symbol 62 Sound {d4sp}
Symbol 63 Sound {d4sg}
Symbol 64 Sound {d4}
Symbol 65 Sound {d4p}
Symbol 66 Sound {d4g}
Symbol 67 Sound {d4s}
Symbol 68 Sound {d3sp}
Symbol 69 Sound {d3sg}
Symbol 70 Sound {d3}
Symbol 71 Sound {d3p}
Symbol 72 Sound {d3g}
Symbol 73 Sound {d3s}
Symbol 74 Sound {d2sp}
Symbol 75 Sound {d2sg}
Symbol 76 Sound {d2p}
Symbol 77 Sound {d2g}
Symbol 78 Sound {ticks}
Symbol 79 Sound {c6}
Symbol 80 Sound {c5}
Symbol 81 Sound {c5p}
Symbol 82 Sound {c5g}
Symbol 83 Sound {c5s}
Symbol 84 Sound {c4sp}
Symbol 85 Sound {c4sg}
Symbol 86 Sound {c4}
Symbol 87 Sound {c4p}
Symbol 88 Sound {c4g}
Symbol 89 Sound {c4s}
Symbol 90 Sound {c3sp}
Symbol 91 Sound {c3sg}
Symbol 92 Sound {c3}
Symbol 93 Sound {c3p}
Symbol 94 Sound {c3g}
Symbol 95 Sound {c3s}
Symbol 96 Sound {c2sp}
Symbol 97 Sound {c2sg}
Symbol 98 Sound {c2p}
Symbol 99 Sound {c2g}
Symbol 100 Sound {b5}
Symbol 101 Sound {b5p}
Symbol 102 Sound {b5g}
Symbol 103 Sound {b4}
Symbol 104 Sound {b4p}
Symbol 105 Sound {b4g}
Symbol 106 Sound {b3}
Symbol 107 Sound {b3p}
Symbol 108 Sound {b3g}
Symbol 109 Sound {a5sp}
Symbol 110 Sound {a5sg}
Symbol 111 Sound {a5}
Symbol 112 Sound {a5p}
Symbol 113 Sound {a5g}
Symbol 114 Sound {a5s}
Symbol 115 Sound {a4sp}
Symbol 116 Sound {a4sg}
Symbol 117 Sound {a4}
Symbol 118 Sound {a4p}
Symbol 119 Sound {a4g}
Symbol 120 Sound {a4s}
Symbol 121 Sound {a3sp}
Symbol 122 Sound {a3sg}
Symbol 123 Sound {a3}
Symbol 124 Sound {a3p}
Symbol 125 Sound {a3g}
Symbol 126 Sound {a3s}
Symbol 127 GraphicUsed by:128
Symbol 128 MovieClipUses:127Used by:160 194 215 216
Symbol 129 MovieClip {fl.core.ComponentShim}Used by:160 194 213 214 215 216
Symbol 130 GraphicUsed by:131
Symbol 131 MovieClip {focusRectSkin}Uses:130Used by:160 194 214 215 216
Symbol 132 GraphicUsed by:133
Symbol 133 MovieClip {ScrollTrack_skin}Uses:132Used by:160 214
Symbol 134 GraphicUsed by:137
Symbol 135 GraphicUsed by:136 139 143 153
Symbol 136 MovieClipUses:135Used by:137 147 149
Symbol 137 MovieClip {ScrollArrowUp_downSkin}Uses:134 136Used by:160 214
Symbol 138 GraphicUsed by:139
Symbol 139 MovieClip {ScrollArrowDown_downSkin}Uses:138 135Used by:160 214
Symbol 140 GraphicUsed by:141
Symbol 141 MovieClip {ScrollThumb_downSkin}Uses:140Used by:160 214
Symbol 142 GraphicUsed by:143
Symbol 143 MovieClip {ScrollArrowDown_overSkin}Uses:142 135Used by:160 214
Symbol 144 GraphicUsed by:145
Symbol 145 MovieClip {ScrollThumb_overSkin}Uses:144Used by:160 214
Symbol 146 GraphicUsed by:147
Symbol 147 MovieClip {ScrollArrowUp_overSkin}Uses:146 136Used by:160 214
Symbol 148 GraphicUsed by:149
Symbol 149 MovieClip {ScrollArrowUp_upSkin}Uses:148 136Used by:160 214
Symbol 150 GraphicUsed by:151
Symbol 151 MovieClip {ScrollThumb_upSkin}Uses:150Used by:160 214
Symbol 152 GraphicUsed by:153
Symbol 153 MovieClip {ScrollArrowDown_upSkin}Uses:152 135Used by:160 214
Symbol 154 GraphicUsed by:155
Symbol 155 MovieClip {ScrollArrowDown_disabledSkin}Uses:154Used by:160 214
Symbol 156 GraphicUsed by:157
Symbol 157 MovieClip {ScrollArrowUp_disabledSkin}Uses:156Used by:160 214
Symbol 158 GraphicUsed by:159
Symbol 159 MovieClip {ScrollBar_thumbIcon}Uses:158Used by:160 214
Symbol 160 MovieClip {fl.controls.UIScrollBar}Uses:128 129 131 133 137 139 141 143 145 147 149 151 153 155 157 159
Symbol 161 GraphicUsed by:164 165
Symbol 162 GraphicUsed by:163
Symbol 163 MovieClip {note}Uses:162Used by:164 165 173 237
Symbol 164 MovieClip {doubleLineAbove}Uses:161 163
Symbol 165 MovieClip {doubleLineNote}Uses:161 163
Symbol 166 GraphicUsed by:167
Symbol 167 MovieClip {natural}Uses:166
Symbol 168 GraphicUsed by:169
Symbol 169 MovieClip {ksharp}Uses:168
Symbol 170 GraphicUsed by:171
Symbol 171 MovieClip {flat}Uses:170
Symbol 172 GraphicUsed by:173
Symbol 173 MovieClip {aboveLineNote}Uses:172 163
Symbol 174 GraphicUsed by:175
Symbol 175 MovieClip {ssharp}Uses:174
Symbol 176 GraphicUsed by:177
Symbol 177 MovieClip {staff}Uses:176
Symbol 178 GraphicUsed by:179
Symbol 179 MovieClip {letter}Uses:178
Symbol 180 GraphicUsed by:181
Symbol 181 MovieClip {greendot}Uses:180
Symbol 182 GraphicUsed by:183
Symbol 183 MovieClip {ComboBox_upSkin}Uses:182Used by:216
Symbol 184 GraphicUsed by:185
Symbol 185 MovieClip {ComboBox_disabledSkin}Uses:184Used by:216
Symbol 186 GraphicUsed by:187
Symbol 187 MovieClip {ComboBox_overSkin}Uses:186Used by:216
Symbol 188 GraphicUsed by:189
Symbol 189 MovieClip {ComboBox_downSkin}Uses:188Used by:216
Symbol 190 GraphicUsed by:191
Symbol 191 MovieClip {TextInput_disabledSkin}Uses:190Used by:194
Symbol 192 GraphicUsed by:193
Symbol 193 MovieClip {TextInput_upSkin}Uses:192Used by:194
Symbol 194 MovieClip {fl.controls.TextInput}Uses:128 129 191 193 131Used by:216
Symbol 195 GraphicUsed by:196
Symbol 196 MovieClip {List_skin}Uses:195Used by:215
Symbol 197 GraphicUsed by:198
Symbol 198 MovieClip {CellRenderer_upSkin}Uses:197Used by:213
Symbol 199 GraphicUsed by:200
Symbol 200 MovieClip {CellRenderer_disabledSkin}Uses:199Used by:213
Symbol 201 GraphicUsed by:202
Symbol 202 MovieClip {CellRenderer_downSkin}Uses:201Used by:213
Symbol 203 GraphicUsed by:204
Symbol 204 MovieClip {CellRenderer_overSkin}Uses:203Used by:213
Symbol 205 GraphicUsed by:206
Symbol 206 MovieClip {CellRenderer_selectedDisabledSkin}Uses:205Used by:213
Symbol 207 GraphicUsed by:208
Symbol 208 MovieClip {CellRenderer_selectedDownSkin}Uses:207Used by:213
Symbol 209 GraphicUsed by:210
Symbol 210 MovieClip {CellRenderer_selectedOverSkin}Uses:209Used by:213
Symbol 211 GraphicUsed by:212
Symbol 212 MovieClip {CellRenderer_selectedUpSkin}Uses:211Used by:213
Symbol 213 MovieClip {fl.controls.listClasses.CellRenderer}Uses:198 129 200 202 204 206 208 210 212Used by:215
Symbol 214 MovieClip {fl.controls.ScrollBar}Uses:133 129 131 137 139 141 143 145 147 149 151 153 155 157 159Used by:215
Symbol 215 MovieClip {fl.controls.List}Uses:128 129 196 213 131 214Used by:216
Symbol 216 MovieClip {fl.controls.ComboBox}Uses:128 129 131 183 185 187 189 194 215
Symbol 217 GraphicUsed by:218
Symbol 218 MovieClip {audiobar}Uses:217
Symbol 219 GraphicUsed by:220
Symbol 220 MovieClip {unchecked}Uses:219
Symbol 221 GraphicUsed by:222
Symbol 222 MovieClip {checked}Uses:221
Symbol 223 GraphicUsed by:224
Symbol 224 MovieClip {statbars}Uses:223
Symbol 225 GraphicUsed by:226
Symbol 226 MovieClip {reddot}Uses:225
Symbol 227 GraphicUsed by:228
Symbol 228 MovieClip {bluedot}Uses:227
Symbol 229 BitmapUsed by:230
Symbol 230 GraphicUses:229Used by:231
Symbol 231 MovieClip {nicebutton}Uses:230
Symbol 232 GraphicUsed by:233
Symbol 233 MovieClip {checkboxy}Uses:232
Symbol 234 GraphicUsed by:235
Symbol 235 MovieClip {checkboxchecked}Uses:234
Symbol 236 GraphicUsed by:237
Symbol 237 MovieClip {lineNote}Uses:236 163
Symbol 238 GraphicUsed by:239
Symbol 239 MovieClip {yellowDot}Uses:238
Symbol 240 GraphicUsed by:241
Symbol 241 MovieClip {downArrow}Uses:240
Symbol 242 GraphicUsed by:243
Symbol 243 MovieClip {upArrow}Uses:242
Symbol 244 GraphicUsed by:245
Symbol 245 MovieClip {rectangleBase}Uses:244
Symbol 246 BitmapUsed by:247
Symbol 247 GraphicUses:246Used by:248
Symbol 248 MovieClip {spekkio}Uses:247
Symbol 249 MovieClip {fl.controls.Button}

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.




http://swfchan.com/16/78403/info.shtml
Created: 3/4 -2019 16:02:22 Last modified: 3/4 -2019 16:02:22 Server time: 24/04 -2024 23:30:56