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

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

Marble Lines.swf

This is the info page for
Flash #48909

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


Text
Score

Stage Clear!

Game Over!

START

Instructions

Destroy marbles by forming groups of 3 or
more marbles of the same colour.
Click the mouse to shoot the marbles, press
the space bar to swap the colour of the
marble to be shot.

-

Stage

Play Again

Home

ActionScript [AS3]

Section 1
//Game (com.novelgames.flashgames.common.Game) package com.novelgames.flashgames.common { import flash.display.*; public class Game extends MovieClip { public static var gameStage:Stage; public function unpause():void{ NewTimer.unpause(); } public function pause():void{ NewTimer.pause(); } } }//package com.novelgames.flashgames.common
Section 2
//Instructions (com.novelgames.flashgames.common.Instructions) package com.novelgames.flashgames.common { import flash.events.*; import flash.display.*; public class Instructions extends MovieClip { public var startButton:SimpleButton; private var shownFromGame:Boolean; public function Instructions(_arg1:Boolean=false){ this.shownFromGame = _arg1; startButton.addEventListener(MouseEvent.CLICK, startButtonClicked); } private function startButtonClicked(_arg1:MouseEvent):void{ if (!shownFromGame){ Object(parent).gotoGamePage(); } else { Object(parent).hideInstructionsFromGame(); }; } } }//package com.novelgames.flashgames.common
Section 3
//InstructionsButton (com.novelgames.flashgames.common.InstructionsButton) package com.novelgames.flashgames.common { import flash.events.*; import flash.display.*; public class InstructionsButton extends MovieClip { public function InstructionsButton(){ super(); this.buttonMode = true; this.addEventListener(MouseEvent.CLICK, function ():void{ Object(parent.parent).showInstructionsFromGame(); }); } } }//package com.novelgames.flashgames.common
Section 4
//MainDevelopment (com.novelgames.flashgames.common.MainDevelopment) package com.novelgames.flashgames.common { import flash.events.*; import flash.media.*; import flash.display.*; public class MainDevelopment extends MovieClip { private var title:Title; private var musicGameSoundChannel:SoundChannel; private var titleIndex:int; private var instructions:Instructions; private var musicGame:Sound; private var game:Game; public function MainDevelopment(){ this.addEventListener(Event.ENTER_FRAME, checkTitle); } protected function getMusicGame():Sound{ return (null); } public function hideInstructionsFromGame():void{ this.removeChild(instructions); instructions = null; game.visible = true; game.unpause(); } public function showInstructionsFromGame():void{ game.pause(); game.visible = false; instructions = new Instructions(true); this.addChildAt(instructions, (titleIndex + 1)); } public function gotoGamePage():void{ Game.gameStage = stage; removePage(); game = getGame(); this.addChildAt(game, titleIndex); musicGame = getMusicGame(); musicGameSoundChannel = musicGame.play(0, int.MAX_VALUE); } private function checkTitle(_arg1:Event):void{ if (!(title = getTitle())){ return; }; this.removeEventListener(Event.ENTER_FRAME, checkTitle); stop(); titleIndex = this.getChildIndex(title); } public function gotoTitlePage():void{ removePage(); title = new Title(); this.addChildAt(title, titleIndex); } public function gotoInstructionsPage():void{ removePage(); instructions = new Instructions(); this.addChildAt(instructions, titleIndex); } public function showHighScores():void{ trace("showHighScores()"); } public function showEnterHighScore(_arg1:int):void{ trace((("showEnterHighScore(" + _arg1) + ")")); } protected function getGame():Game{ return (null); } private function removePage():void{ if (title){ removeChild(title); title = null; }; if (instructions){ removeChild(instructions); instructions = null; }; if (game){ removeChild(game); game = null; }; if (musicGame){ musicGameSoundChannel.stop(); musicGame = null; musicGameSoundChannel = null; }; } protected function getTitle():Title{ return (null); } } }//package com.novelgames.flashgames.common
Section 5
//MuteButton (com.novelgames.flashgames.common.MuteButton) package com.novelgames.flashgames.common { import flash.events.*; import flash.media.*; import flash.display.*; public class MuteButton extends MovieClip { private var gameSoundTransform:SoundTransform; public function MuteButton(){ if (SoundMixer.soundTransform.volume == 0){ showOff(); } else { showOn(); }; this.addEventListener(MouseEvent.CLICK, buttonClicked); this.buttonMode = true; } private function showOff():void{ gotoAndStop("off"); } private function buttonClicked(_arg1:MouseEvent):void{ var _local2:SoundTransform; _local2 = new SoundTransform(); if (SoundMixer.soundTransform.volume == 0){ _local2.volume = 1; SoundMixer.soundTransform = _local2; showOn(); } else { _local2.volume = 0; SoundMixer.soundTransform = _local2; showOff(); }; } private function showOn():void{ gotoAndStop("on"); } } }//package com.novelgames.flashgames.common
Section 6
//NewTimer (com.novelgames.flashgames.common.NewTimer) package com.novelgames.flashgames.common { import flash.events.*; import flash.utils.*; public class NewTimer extends Timer { private var adjustedStartTime:int; private var listener:Function; private var originalRepeatCount:int; private var originalDelay:int; private static var pauseTime:int; private static var paused:Boolean = false; private static var totalPausedTime:int = 0; public function NewTimer(_arg1:Number, _arg2:int=0):void{ super(_arg1, _arg2); originalDelay = _arg1; originalRepeatCount = _arg2; } override public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{ if (_arg1 != TimerEvent.TIMER){ super.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); return; }; this.listener = _arg2; super.addEventListener(_arg1, timerEventListener); } override public function start():void{ adjustedStartTime = NewTimer.getTimer(); super.start(); } private function timerEventListener(_arg1:TimerEvent):void{ if (paused){ stop(); delay = Math.max((originalDelay - (NewTimer.getTimer() - adjustedStartTime)), 1); if (originalRepeatCount > 0){ repeatCount++; }; super.start(); return; }; if ((NewTimer.getTimer() - adjustedStartTime) >= originalDelay){ adjustedStartTime = NewTimer.getTimer(); if (delay != originalDelay){ stop(); delay = originalDelay; super.start(); }; listener(_arg1); } else { stop(); delay = Math.max((originalDelay - (NewTimer.getTimer() - adjustedStartTime)), 1); if (originalRepeatCount > 0){ repeatCount++; }; super.start(); }; } public static function unpause():void{ if (!paused){ return; }; paused = false; totalPausedTime = (totalPausedTime + (getTimer() - pauseTime)); } public static function getTimer():int{ if (paused){ return ((pauseTime - totalPausedTime)); }; return ((getTimer() - totalPausedTime)); } public static function pause():void{ if (paused){ return; }; paused = true; pauseTime = getTimer(); } } }//package com.novelgames.flashgames.common
Section 7
//Title (com.novelgames.flashgames.common.Title) package com.novelgames.flashgames.common { import flash.events.*; import flash.display.*; import flash.net.*; public class Title extends MovieClip { public var startButton:SimpleButton; public function Title(){ startButton.addEventListener(MouseEvent.CLICK, startButtonClicked); } private function startButtonClicked(_arg1:MouseEvent):void{ Object(parent).gotoInstructionsPage(); } private function moreGamesButtonClicked(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.novelgames.com"), "_blank"); } private function highScoresButtonClicked(_arg1:MouseEvent):void{ Object(parent).showHighScores(); } } }//package com.novelgames.flashgames.common
Section 8
//Ball (com.novelgames.flashgames.marble.Ball) package com.novelgames.flashgames.marble { import flash.geom.*; import flash.utils.*; import flash.display.*; public class Ball extends MovieClip { public var xyPoint:Point; public var pointIndex:Number; public var insertTime:Number; public var isOnPath:Boolean; public var cannotHit:Boolean; public var maskName:String; public var ballMask:MovieClip; public var type:Number; public var insertX:Number; public var insertY:Number; public var speedX:Number; public var speedY:Number; public function Ball(){ stop(); } public function destroy():void{ if (ballMask){ parent.removeChild(ballMask); }; parent.removeChild(this); } public function setXY(_arg1:Number, _arg2:Number):void{ xyPoint.x = _arg1; xyPoint.y = _arg2; this.x = _arg1; this.y = _arg2; } public function updateMask(_arg1:String):void{ var _local2:Class; if (_arg1 == this.maskName){ return; }; this.maskName = _arg1; if ((((_arg1 == null)) || ((_arg1 == "")))){ parent.removeChild(ballMask); ballMask = null; this.mask = null; } else { _local2 = Class(getDefinitionByName(("com.novelgames.flashgames.marble." + _arg1))); ballMask = new (_local2); parent.addChild(ballMask); this.mask = ballMask; }; } public function initialize(_arg1:Number):void{ setType(_arg1); pointIndex = 0; isOnPath = false; cannotHit = false; xyPoint = new Point(0, 0); this.cacheAsBitmap = Config.CACHEBALLS; } public function setType(_arg1:Number):void{ this.type = _arg1; gotoAndStop((_arg1 + 1)); } } }//package com.novelgames.flashgames.marble
Section 9
//Cannon (com.novelgames.flashgames.marble.Cannon) package com.novelgames.flashgames.marble { import flash.events.*; import com.novelgames.flashgames.common.*; import flash.utils.*; import flash.display.*; public class Cannon extends MovieClip { private var canShoot:Boolean; private var possibleBallTypes:Array; public var ballFront:Ball; public var ballBack:Ball; private var intervalID:Timer; private function finishedShooting(_arg1:TimerEvent):void{ intervalID.stop(); ballFront.setType(ballBack.type); ballFront.visible = true; ballBack.setType(possibleBallTypes[Math.floor((Math.random() * possibleBallTypes.length))]); canShoot = true; } public function setPossibleBallTypes(_arg1:Array):void{ var _local2:Boolean; var _local3:Boolean; var _local4:*; _local2 = false; _local3 = false; this.possibleBallTypes = _arg1; _local4 = 0; while (_local4 < _arg1.length) { if (ballFront.type == _arg1[_local4]){ _local2 = true; }; if (ballBack.type == _arg1[_local4]){ _local3 = true; }; _local4++; }; if (!_local2){ ballFront.setType(_arg1[Math.floor((Math.random() * _arg1.length))]); }; if (!_local3){ ballBack.setType(_arg1[Math.floor((Math.random() * _arg1.length))]); }; } public function shoot():void{ if (!canShoot){ return; }; Object(parent.parent.parent).shoot(); ballFront.visible = false; canShoot = false; intervalID = new NewTimer(Config.BALL_SHOOTINTERVAL, 0); intervalID.addEventListener(TimerEvent.TIMER, finishedShooting); intervalID.start(); } public function swapFrontBack():void{ var _local1:Number; _local1 = ballFront.type; ballFront.setType(ballBack.type); ballBack.setType(_local1); } public function updateRotation():void{ this.rotation = (this.rotation + ((Math.atan2(this.mouseY, this.mouseX) * 180) / Math.PI)); } public function initialize(_arg1:Number){ var _local2:*; possibleBallTypes = new Array(); _local2 = 0; while (_local2 < _arg1) { possibleBallTypes[_local2] = _local2; _local2++; }; canShoot = true; ballFront.initialize(Math.floor((Math.random() * _arg1))); ballBack.initialize(Math.floor((Math.random() * _arg1))); updateRotation(); } } }//package com.novelgames.flashgames.marble
Section 10
//Config (com.novelgames.flashgames.marble.Config) package com.novelgames.flashgames.marble { public class Config { public static var BALL_LOSESPEED:Number = 1500; public static var MESSAGE_GAMEOVERTIME:Number = 1000; public static var BALL_SHOOTINTERVAL:Number = 200; public static var EXPLODE_TIME:Number = 200; public static var SCORE_DESTROY:Number = 20; public static var CACHEBALLS:Boolean = false; public static var STAGE_INITIALMOVESPEED:Number = 15; public static var STAGEBACKGROUND_BALLCANNOTHITS:Array = [null, [[[168, 203], [603, 647]]], null]; public static var STAGE_MOVESPEEDINCREASE:Number = 5; public static var BALL_TYPES:Number = 6; public static var BALL_CONNECTTTOLERANCE:Number = 5; public static var STAGE_NOOFBACKGROUNDS:Number = 3; public static var BALL_SAMEPOSSIBILITY:Number = 0.2; public static var BALL_DROPACCELERATION:Number = 1000; public static var EXPLODE_DISTANCE:Number = 10; public static var BALL_INSERTTIME:Number = 100; public static var BALL_SHOOTSPEED:Number = 700; public static var STAR_SPACING:Number = (BALL_RADIUS * 2); public static var BALL_RADIUS:Number = 13; public static var STAGEBACKGROUND_BALLMASKS:Array = [null, [[[160, 210, "StageMask1_0"], [590, 660, "StageMask1_1"]]], null]; public static var STAGE_INITIALBALLTYPES:Number = 4; public static var EXPLODE_NOOFPIECES:Number = 8; public static var STAGE_CLEARSHOWTIME:Number = 1000; public static var STAR_TIMEDIFFERENCE:Number = 50; public static var SCORE_COMBO:Number = 10; public static var STAGE_BALLTYPESINCREASE:Number = 1; public static var BALL_CREATEPERCENT:Number = 30; public static var BALL_CREATESPEED:Number = 1000; public static var MINGROUPSIZE:Number = 3; public static var STAR_APPEARTIME:Number = 500; public static var SCORE_EXTRABALL:Number = 10; public static var STAGE_INITIALNOOFBALLS:Number = 80; public static var STAGE_NOOFBALLSINCREASE:Number = 20; public static var SCORE_STAR:Number = 50; } }//package com.novelgames.flashgames.marble
Section 11
//Dialog (com.novelgames.flashgames.marble.Dialog) package com.novelgames.flashgames.marble { import flash.events.*; import flash.display.*; import flash.text.*; public class Dialog extends MovieClip { private var background:Number; private var messagePlayAgain:MessagePlayAgain; private var level:Number; private var messageStageBegin:MessageStageBegin; public function Dialog(){ stop(); } public function showGameOver():void{ gotoAndStop("gameOver"); } public function showPlayAgain():void{ gotoAndStop("gameOver"); messagePlayAgain = new MessagePlayAgain(); messagePlayAgain.playAgainButton.addEventListener(MouseEvent.CLICK, playAgainButtonClicked); messagePlayAgain.homeButton.addEventListener(MouseEvent.CLICK, homeButtonClicked); addChild(messagePlayAgain); } private function playAgainButtonClicked(_arg1:MouseEvent):void{ Object(parent.parent).gotoGamePage(); } public function hide():void{ if (messageStageBegin){ this.removeChild(messageStageBegin); messageStageBegin = null; }; gotoAndStop("hide"); } public function showStageBegin(_arg1:Number, _arg2:Number):void{ gotoAndStop("hide"); this.level = _arg1; this.background = _arg2; messageStageBegin = new MessageStageBegin(); messageStageBegin.levelText.text = _arg1.toString(); messageStageBegin.backgroundText.text = _arg2.toString(); this.addChild(messageStageBegin); } public function showStageClear():void{ gotoAndStop("stageClear"); } private function homeButtonClicked(_arg1:MouseEvent):void{ Object(parent.parent).gotoTitlePage(); } } }//package com.novelgames.flashgames.marble
Section 12
//DropInfo (com.novelgames.flashgames.marble.DropInfo) package com.novelgames.flashgames.marble { public class DropInfo { public var lineIndex:Number; public var ballIndex:Number; public var combo:Number; public var speed:Number; public var ball:Ball; public function DropInfo(_arg1:Number, _arg2:Ball, _arg3:Number){ this.lineIndex = _arg1; this.ball = _arg2; this.combo = _arg3; ballIndex = 0; speed = 0; } } }//package com.novelgames.flashgames.marble
Section 13
//Explode (com.novelgames.flashgames.marble.Explode) package com.novelgames.flashgames.marble { import flash.display.*; public class Explode extends MovieClip { public var piece3:MovieClip; public var piece6:MovieClip; public var piece7:MovieClip; public var piece2:MovieClip; public var piece4:MovieClip; public var piece5:MovieClip; public var piece0:MovieClip; public var piece1:MovieClip; private var pieces:Array; private var totalSeconds:Number; public function Explode(){ var _local1:*; super(); pieces = new Array(); _local1 = 0; while (_local1 < Config.EXPLODE_NOOFPIECES) { pieces[_local1] = this[("piece" + _local1)]; _local1++; }; totalSeconds = 0; } public function move(_arg1:Number):Boolean{ var _local2:Boolean; var _local3:Number; var _local4:Number; var _local5:*; _local2 = false; totalSeconds = (totalSeconds + _arg1); if ((totalSeconds * 1000) >= Config.EXPLODE_TIME){ _local3 = 1; _local2 = true; } else { _local3 = ((totalSeconds * 1000) / Config.EXPLODE_TIME); }; _local4 = (_local3 * Config.EXPLODE_DISTANCE); _local5 = 0; while (_local5 < pieces.length) { pieces[_local5].alpha = (1 - _local3); pieces[_local5].x = (_local4 * Math.cos(((pieces[_local5].rotation * Math.PI) / 180))); pieces[_local5].y = (_local4 * Math.sin(((pieces[_local5].rotation * Math.PI) / 180))); _local5++; }; return (_local2); } } }//package com.novelgames.flashgames.marble
Section 14
//Game (com.novelgames.flashgames.marble.Game) package com.novelgames.flashgames.marble { import flash.geom.*; import flash.events.*; import com.novelgames.flashgames.common.*; import flash.media.*; import flash.utils.*; import flash.display.*; import flash.text.*; import flash.ui.*; public class Game extends Game { private var soundStar:Sound; private var soundGameOver:Sound; private var soundShoot:Sound; private var ballLines:Array; private var soundWin:Sound; private var playingStarted:Boolean; public var backgroundHolder:MovieClip; private var intervalID:Timer; private var shootingBalls:Array; private var showingLose:Boolean; private var __score:Number; private var maxNoOfBalls:Number; private var stageBackground:StageBackground; public var scoreText:TextField; private var moveSpeed:Number; private var cannon:Cannon; private var lastMoveTime:Number; public var ballsHolder:MovieClip; private var noOfBallTypes:Number; public var dialog:Dialog; public var starsHolder:MovieClip; public var clickDetector:MovieClip; private var currentBackground:Number; private var currentLevel:Number; private var noOfBallsCreated:Number; private var soundLand:Sound; private var explodes:Array; private var starLines:Array; private var dropInfos:Array; private var showingWin:Boolean; private var soundDestroy:Sound; private var lastDestroyPointIndexes:Array; public var explodesHolder:MovieClip; public function Game(){ score = 0; soundShoot = new SoundShoot(); soundDestroy = new SoundDestroy(); soundStar = new SoundStar(); soundWin = new SoundWin(); soundGameOver = new SoundGameOver(); gameStage.focus = gameStage; gameStage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent); this.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveEvent); clickDetector.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownEvent); startLevel(1, 1); } private function showPlayAgain(_arg1:TimerEvent):void{ Object(parent).showEnterHighScore(score); dialog.showPlayAgain(); } public function shoot():void{ var _local1:Ball; var _local2:Point; _local1 = new Ball(); _local2 = new Point(0, 0); _local1.initialize(cannon.ballFront.type); _local2 = cannon.ballFront.localToGlobal(_local2); _local1.x = _local2.x; _local1.y = _local2.y; _local1.speedX = (Math.cos(((cannon.rotation * Math.PI) / 180)) * Config.BALL_SHOOTSPEED); _local1.speedY = (Math.sin(((cannon.rotation * Math.PI) / 180)) * Config.BALL_SHOOTSPEED); ballsHolder.addChild(_local1); shootingBalls.push(_local1); soundShoot.play(); } private function doLoseMove(_arg1:TimerEvent):void{ var _local2:Number; var _local3:Number; var _local4:Boolean; var _local5:*; var _local6:*; _local2 = NewTimer.getTimer(); _local3 = ((_local2 - lastMoveTime) / 1000); _local4 = true; moveExplodes(_local3); _local5 = 0; while (_local5 < ballLines.length) { pushBalls(_local5, 0, ((Config.BALL_LOSESPEED * _local3) / stageBackground.pathInfos[_local5].maxPointSpacing)); _local6 = 0; while (_local6 < ballLines[_local5].length) { if (ballLines[_local5][_local6].pointIndex >= (stageBackground.pathInfos[_local5].points.length - 1)){ ballLines[_local5][_local6].destroy(); ballLines[_local5].splice(_local6, 1); _local6--; }; _local6++; }; if (ballLines[_local5].length > 0){ _local4 = false; }; _local5++; }; lastMoveTime = _local2; if (_local4){ intervalID.stop(); gameStage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent); dialog.showGameOver(); intervalID = new NewTimer(Config.MESSAGE_GAMEOVERTIME, 1); intervalID.addEventListener(TimerEvent.TIMER, showPlayAgain); intervalID.start(); soundGameOver.play(); }; _arg1.updateAfterEvent(); } private function startLevel(_arg1:Number, _arg2:Number):void{ var _local3:*; var _local4:Point; var _local5:Class; var _local6:*; currentLevel = _arg1; currentBackground = _arg2; gotoAndStop(("background" + _arg2)); noOfBallTypes = (Config.STAGE_INITIALBALLTYPES + ((_arg1 - 1) * Config.STAGE_BALLTYPESINCREASE)); if (noOfBallTypes > Config.BALL_TYPES){ noOfBallTypes = Config.BALL_TYPES; }; moveSpeed = (Config.STAGE_INITIALMOVESPEED + ((_arg1 - 1) * Config.STAGE_MOVESPEEDINCREASE)); maxNoOfBalls = (Config.STAGE_INITIALNOOFBALLS + ((_arg1 - 1) * Config.STAGE_NOOFBALLSINCREASE)); noOfBallsCreated = 0; playingStarted = false; showingWin = false; showingLose = false; shootingBalls = new Array(); dropInfos = new Array(); ballLines = new Array(); lastDestroyPointIndexes = new Array(); explodes = new Array(); if (stageBackground){ backgroundHolder.removeChild(stageBackground); }; _local5 = Class(getDefinitionByName(("com.novelgames.flashgames.marble.StageBackground" + (_arg2 - 1)))); stageBackground = new (_local5); stageBackground.initialize(); backgroundHolder.addChild(stageBackground); cannon = stageBackground.cannon; cannon.initialize(noOfBallTypes); _local6 = 0; while (_local6 < stageBackground.pathInfos.length) { if (((Config.STAGEBACKGROUND_BALLMASKS[(_arg2 - 1)]) && (Config.STAGEBACKGROUND_BALLMASKS[(_arg2 - 1)][_local6]))){ stageBackground.pathInfos[_local6].updateMask(Config.STAGEBACKGROUND_BALLMASKS[(_arg2 - 1)][_local6]); }; if (((Config.STAGEBACKGROUND_BALLCANNOTHITS[(_arg2 - 1)]) && (Config.STAGEBACKGROUND_BALLCANNOTHITS[(_arg2 - 1)][_local6]))){ stageBackground.pathInfos[_local6].updateCannotHits(Config.STAGEBACKGROUND_BALLCANNOTHITS[(_arg2 - 1)][_local6]); }; ballLines[_local6] = new Array(); _local6++; }; dialog.showStageBegin(_arg1, _arg2); lastMoveTime = NewTimer.getTimer(); intervalID = new NewTimer(1, 0); intervalID.addEventListener(TimerEvent.TIMER, doCreateMove); intervalID.start(); } private function moveShootingBalls(_arg1:Number):void{ var _local2:Ball; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:*; var _local11:*; _local10 = 0; while (_local10 < shootingBalls.length) { _local2 = shootingBalls[_local10]; _local3 = _local2.x; _local4 = _local2.y; _local5 = (_local2.speedX * _arg1); _local6 = (_local2.speedY * _arg1); _local7 = Math.ceil((Math.max(Math.abs(_local5), Math.abs(_local6)) / (Config.BALL_RADIUS * 2))); _local8 = (_local5 / _local7); _local9 = (_local6 / _local7); _local11 = 0; while (_local11 < _local7) { _local3 = (_local3 + _local8); _local4 = (_local4 + _local9); _local2.setXY(_local3, _local4); if ((((((((_local3 < -(Config.BALL_RADIUS))) || ((_local3 > (stage.stageWidth + Config.BALL_RADIUS))))) || ((_local4 < -(Config.BALL_RADIUS))))) || ((_local4 > (stage.stageHeight + Config.BALL_RADIUS))))){ _local2.destroy(); shootingBalls.splice(_local10, 1); _local10--; break; }; if (landBallOnPath(_local2)){ shootingBalls.splice(_local10, 1); _local10--; break; }; _local11++; }; _local10++; }; } public function get score():Number{ return (__score); } private function moveExplodes(_arg1:Number):void{ var _local2:*; _local2 = 0; while (_local2 < explodes.length) { if (explodes[_local2].move(_arg1)){ explodesHolder.removeChild(explodes[_local2]); explodes.splice(_local2, 1); _local2--; }; _local2++; }; } private function dropBalls(_arg1:Number):void{ var _local2:Number; var _local3:Array; var _local4:Number; var _local5:Number; var _local6:Boolean; var _local7:Number; var _local8:Number; var _local9:Point; var _local10:String; var _local11:Boolean; var _local12:Array; var _local13:*; var _local14:*; if (dropInfos.length == 0){ return; }; _local13 = 0; while (_local13 < dropInfos.length) { _local2 = dropInfos[_local13].lineIndex; _local4 = getBallIndex(_local2, dropInfos[_local13].ball); if ((((_local4 == -1)) || ((dropInfos[_local13].ballIndex >= (ballLines[_local2].length - 1))))){ dropInfos.splice(_local13, 1); _local13--; } else { dropInfos[_local13].ballIndex = _local4; }; _local13++; }; _local12 = new Array(); _local13 = 0; while (_local13 < dropInfos.length) { _local6 = false; _local2 = dropInfos[_local13].lineIndex; _local3 = ballLines[_local2]; dropInfos[_local13].speed = (dropInfos[_local13].speed + (Config.BALL_DROPACCELERATION * _arg1)); _local5 = ((dropInfos[_local13].speed * _arg1) / stageBackground.pathInfos[_local2].ballSpacing); _local7 = (dropInfos[_local13].ballIndex + 1); if (_local13 < (dropInfos.length - 1)){ if (dropInfos[(_local13 + 1)].lineIndex != _local2){ _local8 = _local3.length; } else { _local8 = (dropInfos[(_local13 + 1)].ballIndex + 1); }; } else { _local8 = _local3.length; }; if ((_local3[_local7].pointIndex - _local5) <= (_local3[(_local7 - 1)].pointIndex + stageBackground.pathInfos[_local2].ballSpacing)){ _local5 = ((_local3[_local7].pointIndex - _local3[(_local7 - 1)].pointIndex) - stageBackground.pathInfos[_local2].ballSpacing); _local6 = true; }; _local14 = _local7; while (_local14 < _local8) { _local3[_local14].pointIndex = (_local3[_local14].pointIndex - _local5); _local9 = stageBackground.pathInfos[_local2].getXY(_local3[_local14].pointIndex); _local10 = stageBackground.pathInfos[_local2].getMask(_local3[_local14].pointIndex); _local11 = stageBackground.pathInfos[_local2].getCannotHit(_local3[_local14].pointIndex); _local3[_local14].setXY(_local9.x, _local9.y); _local3[_local14].updateMask(_local10); _local3[_local14].cannotHit = _local11; _local14++; }; if (_local6){ _local12.push(dropInfos[_local13]); dropInfos.splice(_local13, 1); _local13--; }; _local13++; }; _local13 = 0; while (_local13 < _local12.length) { _local2 = _local12[_local13].lineIndex; _local4 = getBallIndex(_local2, _local12[_local13].ball); if (ballLines[_local2][(_local4 + 1)].type == ballLines[_local2][_local4].type){ checkDestroy(_local2, _local4, _local12[_local13].combo); }; _local13++; }; } private function doWinMove(_arg1:TimerEvent):void{ var _local2:Number; var _local3:Number; var _local4:Boolean; var _local5:Boolean; var _local6:*; var _local7:*; _local2 = NewTimer.getTimer(); _local3 = ((_local2 - lastMoveTime) / 1000); _local4 = true; moveExplodes(_local3); _local6 = 0; while (_local6 < starLines.length) { _local7 = 0; while (_local7 < starLines[_local6].length) { _local5 = starLines[_local6][_local7].visible; if (!starLines[_local6][_local7].move(_local2)){ _local4 = false; if (((!(_local5)) && (starLines[_local6][_local7].visible))){ score = (score + Config.SCORE_STAR); soundStar.play(); }; } else { starsHolder.removeChild(starLines[_local6][_local7]); starLines[_local6].splice(_local7, 1); _local7--; }; _local7++; }; _local6++; }; lastMoveTime = _local2; if (_local4){ intervalID.stop(); dialog.showStageClear(); soundWin.play(); intervalID = new NewTimer(Config.STAGE_CLEARSHOWTIME, 0); intervalID.addEventListener(TimerEvent.TIMER, finishedShowingClear); intervalID.start(); }; _arg1.updateAfterEvent(); } private function doPlayMove(_arg1:TimerEvent):void{ var _local2:Number; var _local3:Number; _local2 = NewTimer.getTimer(); _local3 = ((_local2 - lastMoveTime) / 1000); moveShootingBalls(_local3); moveBalls(_local3, moveSpeed); dropBalls(_local3); moveExplodes(_local3); checkWinLose(); lastMoveTime = _local2; _arg1.updateAfterEvent(); } private function destroyShootingBalls():void{ var _local1:*; _local1 = 0; while (_local1 < shootingBalls.length) { addExplode(shootingBalls[_local1].x, shootingBalls[_local1].y); shootingBalls[_local1].destroy(); _local1++; }; shootingBalls = new Array(); } private function checkWinLose():void{ var _local1:Boolean; var _local2:*; _local1 = true; _local2 = 0; while (_local2 < ballLines.length) { if (ballLines[_local2].length == 0){ } else { _local1 = false; if (ballLines[_local2][(ballLines[_local2].length - 1)].pointIndex >= (stageBackground.pathInfos[_local2].points.length - 1)){ showLose(); return; }; }; _local2++; }; if (_local1){ showWin(); }; } private function onKeyDownEvent(_arg1:KeyboardEvent):void{ if (!playingStarted){ return; }; if (showingWin){ return; }; if (showingLose){ return; }; if (_arg1.keyCode == Keyboard.SPACE){ cannon.swapFrontBack(); }; } private function addExplode(_arg1:Number, _arg2:Number):void{ var _local3:Explode; _local3 = new Explode(); _local3.x = _arg1; _local3.y = _arg2; explodesHolder.addChild(_local3); explodes.push(_local3); } override public function unpause():void{ super.unpause(); stage.focus = stage; } private function moveBalls(_arg1:Number, _arg2:Number):void{ var _local3:Point; var _local4:*; var _local5:*; _local4 = 0; while (_local4 < ballLines.length) { pushBalls(_local4, 0, ((_arg2 * _arg1) / stageBackground.pathInfos[_local4].maxPointSpacing)); while ((((noOfBallsCreated < maxNoOfBalls)) && ((((ballLines[_local4].length == 0)) || ((ballLines[_local4][0].pointIndex >= stageBackground.pathInfos[_local4].ballSpacing)))))) { createBall(_local4); _local3 = stageBackground.pathInfos[_local4].getXY(ballLines[_local4][0].pointIndex); ballLines[_local4][0].setXY(_local3.x, _local3.y); ballLines[_local4][0].updateMask(stageBackground.pathInfos[_local4].getMask(ballLines[_local4][0].pointIndex)); ballLines[_local4][0].cannotHit = stageBackground.pathInfos[_local4].getCannotHit(ballLines[_local4][0].pointIndex); }; _local4++; }; } private function finishedShowingClear(_arg1:TimerEvent):void{ intervalID.stop(); dialog.hide(); if (currentBackground >= Config.STAGE_NOOFBACKGROUNDS){ startLevel((currentLevel + 1), 1); } else { startLevel(currentLevel, (currentBackground + 1)); }; } private function createBall(_arg1:Number):void{ var _local2:Ball; _local2 = new Ball(); if (ballLines[_arg1].length == 0){ _local2.initialize(Math.floor((Math.random() * noOfBallTypes))); _local2.pointIndex = 0; } else { _local2.initialize(((Math.random() < Config.BALL_SAMEPOSSIBILITY)) ? ballLines[_arg1][0].type : Math.floor((Math.random() * noOfBallTypes))); _local2.pointIndex = (ballLines[_arg1][0].pointIndex - stageBackground.pathInfos[_arg1].ballSpacing); }; _local2.isOnPath = true; ballsHolder.addChild(_local2); ballLines[_arg1].unshift(_local2); noOfBallsCreated++; } public function set score(_arg1:Number):void{ __score = _arg1; scoreText.text = _arg1.toString(); } private function checkRemainingTypes():void{ var _local1:Array; var _local2:Array; var _local3:*; var _local4:*; if (noOfBallsCreated < maxNoOfBalls){ return; }; _local1 = new Array(); _local3 = 0; while (_local3 < ballLines.length) { _local4 = 0; while (_local4 < ballLines[_local3].length) { _local1[ballLines[_local3][_local4].type] = true; _local4++; }; _local3++; }; _local2 = new Array(); _local3 = 0; while (_local3 < _local1.length) { if (_local1[_local3]){ _local2.push(_local3); }; _local3++; }; if (_local2.length > 0){ cannon.setPossibleBallTypes(_local2); }; } private function pushBalls(_arg1:Number, _arg2:Number, _arg3:Number):void{ var _local4:Number; var _local5:Array; var _local6:Ball; var _local7:Point; var _local8:String; var _local9:Boolean; var _local10:Number; var _local11:Number; var _local12:*; _local4 = stageBackground.pathInfos[_arg1].ballSpacing; _local5 = ballLines[_arg1]; _local12 = _arg2; while (_local12 < _local5.length) { _local6 = _local5[_local12]; _local5[_local12].pointIndex = (_local6.pointIndex + _arg3); _local7 = stageBackground.pathInfos[_arg1].getXY(_local6.pointIndex); _local8 = stageBackground.pathInfos[_arg1].getMask(_local6.pointIndex); _local9 = stageBackground.pathInfos[_arg1].getCannotHit(_local6.pointIndex); if (_local6.isOnPath){ _local6.setXY(_local7.x, _local7.y); _local6.updateMask(_local8); _local6.cannotHit = _local9; if ((((_local12 < (_local5.length - 1))) && ((_local5[(_local12 + 1)].pointIndex > (_local6.pointIndex + _local4))))){ pushBalls(_arg1, (_local12 + 1), 0); return; }; } else { _local10 = NewTimer.getTimer(); if ((_local10 - _local6.insertTime) >= Config.BALL_INSERTTIME){ _local6.isOnPath = true; _local6.setXY(_local7.x, _local7.y); _local6.updateMask(_local8); _local6.cannotHit = _local9; if ((((_local12 < (_local5.length - 1))) && ((_local5[(_local12 + 1)].pointIndex <= (_local6.pointIndex + _local4))))){ pushBalls(_arg1, (_local12 + 1), ((_local6.pointIndex + _local4) - _local5[(_local12 + 1)].pointIndex)); }; checkDestroy(_arg1, _local12, 0); return; } else { _local11 = ((_local10 - _local6.insertTime) / Config.BALL_INSERTTIME); _local6.setXY(((_local6.insertX * (1 - _local11)) + (_local7.x * _local11)), ((_local6.insertY * (1 - _local11)) + (_local7.y * _local11))); _local6.updateMask(_local8); _local6.cannotHit = _local9; if ((((_local12 < (_local5.length - 1))) && ((_local5[(_local12 + 1)].pointIndex <= (_local6.pointIndex + (_local4 * _local11)))))){ pushBalls(_arg1, (_local12 + 1), ((_local6.pointIndex + (_local4 * _local11)) - _local5[(_local12 + 1)].pointIndex)); }; return; }; }; _local12++; }; } private function getBallIndex(_arg1:Number, _arg2:Ball):Number{ var _local3:Array; var _local4:*; _local3 = ballLines[_arg1]; _local4 = 0; while (_local4 < _local3.length) { if (_local3[_local4] == _arg2){ return (_local4); }; _local4++; }; return (-1); } private function startPlaying():void{ playingStarted = true; lastMoveTime = NewTimer.getTimer(); intervalID = new NewTimer(1, 0); intervalID.addEventListener(TimerEvent.TIMER, doPlayMove); intervalID.start(); } private function showWin():void{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:*; var _local6:Star; var _local7:Point; var _local8:*; var _local9:*; intervalID.stop(); showingWin = true; destroyShootingBalls(); starLines = new Array(); _local8 = 0; while (_local8 < lastDestroyPointIndexes.length) { _local1 = (((stageBackground.pathInfos[_local8].points.length - 1) - lastDestroyPointIndexes[_local8]) * stageBackground.pathInfos[_local8].maxPointSpacing); _local2 = (Math.floor((_local1 / Config.STAR_SPACING)) + 1); _local3 = (Config.STAR_SPACING / stageBackground.pathInfos[_local8].maxPointSpacing); starLines[_local8] = new Array(); _local9 = 0; while (_local9 < _local2) { _local6 = new Star(); _local7 = stageBackground.pathInfos[_local8].getXY(((stageBackground.pathInfos[_local8].points.length - 1) - (_local9 * _local3))); _local6.initialize(((_local2 - _local9) - 1), _local7.x, _local7.y); starsHolder.addChild(_local6); starLines[_local8].push(_local6); _local9++; }; _local8++; }; lastMoveTime = NewTimer.getTimer(); intervalID = new NewTimer(1, 0); intervalID.addEventListener(TimerEvent.TIMER, doWinMove); intervalID.start(); } private function onMouseDownEvent(_arg1:MouseEvent):void{ if (!playingStarted){ return; }; if (showingWin){ return; }; if (showingLose){ return; }; cannon.shoot(); } private function showLose():void{ intervalID.stop(); showingLose = true; destroyShootingBalls(); lastMoveTime = NewTimer.getTimer(); intervalID = new NewTimer(1, 0); intervalID.addEventListener(TimerEvent.TIMER, doLoseMove); intervalID.start(); } private function landBallOnPath(_arg1:Ball):Boolean{ var _local2:Number; var _local3:Number; var _local4:Point; var _local5:Point; var _local6:*; var _local7:*; var _local8:*; _local6 = 0; while (_local6 < ballLines.length) { _local7 = 0; while (_local7 < ballLines[_local6].length) { if (ballLines[_local6][_local7].cannotHit){ } else { _local2 = Point.distance(_arg1.xyPoint, ballLines[_local6][_local7].xyPoint); if (_local2 > (Config.BALL_RADIUS * 2)){ } else { _local4 = stageBackground.pathInfos[_local6].getXY((ballLines[_local6][_local7].pointIndex - stageBackground.pathInfos[_local6].ballSpacing)); _local5 = stageBackground.pathInfos[_local6].getXY((ballLines[_local6][_local7].pointIndex + stageBackground.pathInfos[_local6].ballSpacing)); if (Point.distance(_arg1.xyPoint, _local4) >= Point.distance(_arg1.xyPoint, _local5)){ _arg1.pointIndex = (ballLines[_local6][_local7].pointIndex + stageBackground.pathInfos[_local6].ballSpacing); _local3 = (_local7 + 1); } else { _arg1.pointIndex = ballLines[_local6][_local7].pointIndex; _local3 = _local7; }; _arg1.insertTime = NewTimer.getTimer(); _arg1.insertX = _arg1.x; _arg1.insertY = _arg1.y; ballLines[_local6].splice(_local3, 0, _arg1); if (_local3 > _local7){ _local8 = 0; while (_local8 < dropInfos.length) { if (dropInfos[_local8].ball == ballLines[_local6][_local7]){ dropInfos[_local8].ball = _arg1; break; }; _local8++; }; }; return (true); }; }; _local7++; }; _local6++; }; return (false); } private function checkDestroy(_arg1:Number, _arg2:Number, _arg3:Number):void{ var _local4:Number; var _local5:Array; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:DropInfo; var _local10:Number; var _local11:*; _local4 = stageBackground.pathInfos[_arg1].connectedBallSpacing; _local5 = ballLines[_arg1]; _local6 = _local5[_arg2].type; _local7 = _arg2; _local8 = _arg2; _local10 = 0; _local11 = (_arg2 - 1); while (_local11 >= 0) { if (_local5[_local11].type != _local6){ break; }; if (_local5[_local11].pointIndex < (_local5[(_local11 + 1)].pointIndex - _local4)){ break; }; _local7 = _local11; _local11--; }; _local11 = (_arg2 + 1); while (_local11 < _local5.length) { if (_local5[_local11].type != _local6){ break; }; if (_local5[_local11].pointIndex > (_local5[(_local11 - 1)].pointIndex + _local4)){ break; }; _local8 = _local11; _local11++; }; if (((_local8 - _local7) + 1) < Config.MINGROUPSIZE){ return; }; _local10 = (_local10 + Config.SCORE_DESTROY); if (((_local8 - _local7) + 1) > Config.MINGROUPSIZE){ _local10 = (_local10 + ((((_local8 - _local7) + 1) - Config.MINGROUPSIZE) * Config.SCORE_EXTRABALL)); }; _local10 = (_local10 + (_arg3 * Config.SCORE_COMBO)); score = (score + _local10); lastDestroyPointIndexes[_arg1] = _local5[_local8].pointIndex; _local11 = _local7; while (_local11 <= _local8) { addExplode(_local5[_local11].x, _local5[_local11].y); _local5[_local11].destroy(); _local11++; }; _local5.splice(_local7, ((_local8 - _local7) + 1)); if ((((_local7 > 0)) && ((_local7 < _local5.length)))){ _local9 = new DropInfo(_arg1, _local5[(_local7 - 1)], (_arg3 + 1)); _local11 = 0; while (_local11 < dropInfos.length) { if (dropInfos[_local11].lineIndex > _arg1){ break; }; if (dropInfos[_local11].lineIndex < _arg1){ } else { if (getBallIndex(_arg1, dropInfos[_local11].ball) > (_local7 - 1)){ break; }; }; _local11++; }; dropInfos.splice(_local11, 0, _local9); }; checkRemainingTypes(); soundDestroy.play(); } private function onMouseMoveEvent(_arg1:MouseEvent):void{ if (showingWin){ return; }; if (showingLose){ return; }; cannon.updateRotation(); } private function doCreateMove(_arg1:TimerEvent):void{ var _local2:Number; var _local3:Number; var _local4:Point; var _local5:Boolean; var _local6:*; var _local7:*; _local2 = NewTimer.getTimer(); _local3 = ((_local2 - lastMoveTime) / 1000); _local5 = false; moveBalls(_local3, Config.BALL_CREATESPEED); _local6 = 0; while (_local6 < ballLines.length) { if (ballLines[_local6][(ballLines[_local6].length - 1)].pointIndex >= ((stageBackground.pathInfos[_local6].points.length * Config.BALL_CREATEPERCENT) / 100)){ _local5 = true; }; _local6++; }; lastMoveTime = _local2; _arg1.updateAfterEvent(); if (_local5){ intervalID.stop(); dialog.hide(); startPlaying(); }; } } }//package com.novelgames.flashgames.marble
Section 15
//Main (com.novelgames.flashgames.marble.Main) package com.novelgames.flashgames.marble { import com.novelgames.flashgames.common.*; import flash.media.*; public class Main extends MainDevelopment { public var title:Title; override protected function getMusicGame():Sound{ return (new MusicGame()); } override protected function getGame():Game{ return (new Game()); } override protected function getTitle():Title{ return (title); } } }//package com.novelgames.flashgames.marble
Section 16
//MessagePlayAgain (com.novelgames.flashgames.marble.MessagePlayAgain) package com.novelgames.flashgames.marble { import flash.display.*; public dynamic class MessagePlayAgain extends MovieClip { public var playAgainButton:SimpleButton; public var homeButton:SimpleButton; } }//package com.novelgames.flashgames.marble
Section 17
//MessageStageBegin (com.novelgames.flashgames.marble.MessageStageBegin) package com.novelgames.flashgames.marble { import flash.display.*; import flash.text.*; public dynamic class MessageStageBegin extends MovieClip { public var backgroundText:TextField; public var levelText:TextField; } }//package com.novelgames.flashgames.marble
Section 18
//MusicGame (com.novelgames.flashgames.marble.MusicGame) package com.novelgames.flashgames.marble { import flash.media.*; public dynamic class MusicGame extends Sound { } }//package com.novelgames.flashgames.marble
Section 19
//PathInfo (com.novelgames.flashgames.marble.PathInfo) package com.novelgames.flashgames.marble { import flash.geom.*; import flash.display.*; public class PathInfo { public var points:Array; public var ballSpacing:Number; public var masks:Array; public var cannotHits:Array; public var maxPointSpacing:Number; public var connectedBallSpacing:Number; public function PathInfo(){ points = new Array(); masks = new Array(); cannotHits = new Array(); maxPointSpacing = 0; ballSpacing = 0; } public function updateBallSpacing():void{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:*; _local1 = Number.MIN_VALUE; _local2 = 0; _local4 = 1; while (_local4 < points.length) { _local3 = Point.distance(points[(_local4 - 1)], points[_local4]); if (_local3 > _local1){ _local1 = _local3; _local2 = _local4; }; _local4++; }; maxPointSpacing = _local1; ballSpacing = ((Config.BALL_RADIUS * 2) / _local1); connectedBallSpacing = (((Config.BALL_RADIUS * 2) + Config.BALL_CONNECTTTOLERANCE) / _local1); } public function getMask(_arg1:Number):String{ if (_arg1 <= 0){ return (masks[0]); }; if (_arg1 >= (masks.length - 1)){ return (masks[(masks.length - 1)]); }; return (masks[Math.floor(_arg1)]); } public function updateCannotHits(_arg1:Array):void{ var _local2:*; var _local3:*; _local2 = 0; while (_local2 < _arg1.length) { _local3 = _arg1[_local2][0]; while (_local3 < _arg1[_local2][1]) { cannotHits[_local3] = true; _local3++; }; _local2++; }; } public function getCannotHit(_arg1:Number):Boolean{ if (_arg1 <= 0){ return (cannotHits[0]); }; if (_arg1 >= (cannotHits.length - 1)){ return (cannotHits[(cannotHits.length - 1)]); }; return (cannotHits[Math.floor(_arg1)]); } public function getXY(_arg1:Number):Point{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; if (_arg1 <= 0){ return (points[0]); }; if (_arg1 >= (points.length - 1)){ return (points[(points.length - 1)]); }; _local4 = Math.floor(_arg1); _local5 = (_arg1 - _local4); _local2 = ((points[_local4].x * (1 - _local5)) + (points[(_local4 + 1)].x * _local5)); _local3 = ((points[_local4].y * (1 - _local5)) + (points[(_local4 + 1)].y * _local5)); return (new Point(_local2, _local3)); } public function updateMask(_arg1:Array):void{ var _local2:*; var _local3:*; _local2 = 0; while (_local2 < _arg1.length) { _local3 = _arg1[_local2][0]; while (_local3 < _arg1[_local2][1]) { masks[_local3] = _arg1[_local2][2]; _local3++; }; _local2++; }; } public function addPoint(_arg1:Number, _arg2:Number):void{ points.push(new Point(_arg1, _arg2)); masks.push(null); cannotHits.push(false); } } }//package com.novelgames.flashgames.marble
Section 20
//SoundDestroy (com.novelgames.flashgames.marble.SoundDestroy) package com.novelgames.flashgames.marble { import flash.media.*; public dynamic class SoundDestroy extends Sound { } }//package com.novelgames.flashgames.marble
Section 21
//SoundGameOver (com.novelgames.flashgames.marble.SoundGameOver) package com.novelgames.flashgames.marble { import flash.media.*; public dynamic class SoundGameOver extends Sound { } }//package com.novelgames.flashgames.marble
Section 22
//SoundShoot (com.novelgames.flashgames.marble.SoundShoot) package com.novelgames.flashgames.marble { import flash.media.*; public dynamic class SoundShoot extends Sound { } }//package com.novelgames.flashgames.marble
Section 23
//SoundStar (com.novelgames.flashgames.marble.SoundStar) package com.novelgames.flashgames.marble { import flash.media.*; public dynamic class SoundStar extends Sound { } }//package com.novelgames.flashgames.marble
Section 24
//SoundWin (com.novelgames.flashgames.marble.SoundWin) package com.novelgames.flashgames.marble { import flash.media.*; public dynamic class SoundWin extends Sound { } }//package com.novelgames.flashgames.marble
Section 25
//StageBackground (com.novelgames.flashgames.marble.StageBackground) package com.novelgames.flashgames.marble { import flash.display.*; public dynamic class StageBackground extends MovieClip { public var ball1:Ball; public var ball0:Ball; public var pathInfos:Array; public var cannon:Cannon; public function StageBackground(){ stop(); } public function initialize():void{ var _local1:Array; var _local2:*; _local1 = new Array(); _local2 = 0; while (this[("ball" + _local2)]) { _local1[_local2] = this[("ball" + _local2)]; _local1[_local2].visible = false; _local2++; }; pathInfos = new Array(); _local2 = 0; while (_local2 < _local1.length) { pathInfos.push(new PathInfo()); _local2++; }; gotoAndStop(1); while (true) { _local2 = 0; while (_local2 < _local1.length) { pathInfos[_local2].addPoint(_local1[_local2].x, _local1[_local2].y); _local2++; }; if (this.currentFrame >= this.totalFrames){ break; }; this.nextFrame(); }; _local2 = 0; while (_local2 < _local1.length) { pathInfos[_local2].updateBallSpacing(); _local2++; }; this.cacheAsBitmap = true; } } }//package com.novelgames.flashgames.marble
Section 26
//StageBackground0 (com.novelgames.flashgames.marble.StageBackground0) package com.novelgames.flashgames.marble { public dynamic class StageBackground0 extends StageBackground { } }//package com.novelgames.flashgames.marble
Section 27
//StageBackground1 (com.novelgames.flashgames.marble.StageBackground1) package com.novelgames.flashgames.marble { public dynamic class StageBackground1 extends StageBackground { } }//package com.novelgames.flashgames.marble
Section 28
//StageBackground2 (com.novelgames.flashgames.marble.StageBackground2) package com.novelgames.flashgames.marble { public dynamic class StageBackground2 extends StageBackground { } }//package com.novelgames.flashgames.marble
Section 29
//StageMask1_0 (com.novelgames.flashgames.marble.StageMask1_0) package com.novelgames.flashgames.marble { import flash.display.*; public dynamic class StageMask1_0 extends MovieClip { } }//package com.novelgames.flashgames.marble
Section 30
//StageMask1_1 (com.novelgames.flashgames.marble.StageMask1_1) package com.novelgames.flashgames.marble { import flash.display.*; public dynamic class StageMask1_1 extends MovieClip { } }//package com.novelgames.flashgames.marble
Section 31
//Star (com.novelgames.flashgames.marble.Star) package com.novelgames.flashgames.marble { import com.novelgames.flashgames.common.*; import flash.display.*; public class Star extends MovieClip { private var startTime:Number; private var index:Number; public function initialize(_arg1:Number, _arg2:Number, _arg3:Number):void{ this.index = _arg1; this.x = _arg2; this.y = _arg3; startTime = (NewTimer.getTimer() + (_arg1 * Config.STAR_TIMEDIFFERENCE)); this.visible = false; } public function move(_arg1:Number):Boolean{ if (_arg1 < startTime){ return (false); }; if (_arg1 >= (startTime + Config.STAR_APPEARTIME)){ this.visible = false; return (true); }; this.alpha = (1 - ((_arg1 - startTime) / Config.STAR_APPEARTIME)); this.visible = true; return (false); } } }//package com.novelgames.flashgames.marble

Library Items

Symbol 1 Sound {com.novelgames.flashgames.marble.SoundWin}
Symbol 2 Sound {com.novelgames.flashgames.marble.SoundStar}
Symbol 3 Sound {com.novelgames.flashgames.marble.SoundShoot}
Symbol 4 Sound {com.novelgames.flashgames.marble.SoundGameOver}
Symbol 5 Sound {com.novelgames.flashgames.marble.SoundDestroy}
Symbol 6 Sound {com.novelgames.flashgames.marble.MusicGame}
Symbol 7 GraphicUsed by:8
Symbol 8 MovieClip {com.novelgames.flashgames.common.InstructionsButton}Uses:7Used by:25
Symbol 9 GraphicUsed by:12
Symbol 10 GraphicUsed by:12
Symbol 11 GraphicUsed by:12
Symbol 12 MovieClip {com.novelgames.flashgames.common.MuteButton}Uses:9 10 11Used by:25
Symbol 13 MovieClipUsed by:25
Symbol 14 FontUsed by:15 16 20 22 64 68 70 73 74 75 76 79 82
Symbol 15 EditableTextUses:14Used by:25
Symbol 16 TextUses:14Used by:17
Symbol 17 MovieClipUses:16Used by:25
Symbol 18 GraphicUsed by:19
Symbol 19 MovieClipUses:18Used by:25
Symbol 20 TextUses:14Used by:21
Symbol 21 MovieClipUses:20Used by:24
Symbol 22 TextUses:14Used by:23
Symbol 23 MovieClipUses:22Used by:24
Symbol 24 MovieClip {com.novelgames.flashgames.marble.Dialog}Uses:21 23Used by:25
Symbol 25 MovieClip {com.novelgames.flashgames.marble.Game}Uses:13 15 17 19 12 8 24
Symbol 26 GraphicUsed by:46
Symbol 27 GraphicUsed by:28
Symbol 28 MovieClip {com.novelgames.flashgames.marble.StageMask1_0}Uses:27Used by:46
Symbol 29 GraphicUsed by:30
Symbol 30 MovieClipUses:29Used by:46
Symbol 31 GraphicUsed by:32
Symbol 32 MovieClip {com.novelgames.flashgames.marble.StageMask1_1}Uses:31Used by:46
Symbol 33 GraphicUsed by:34
Symbol 34 MovieClipUses:33Used by:46
Symbol 35 GraphicUsed by:46
Symbol 36 GraphicUsed by:42 87
Symbol 37 GraphicUsed by:42 88
Symbol 38 GraphicUsed by:42 90
Symbol 39 GraphicUsed by:42 89
Symbol 40 GraphicUsed by:42 92
Symbol 41 GraphicUsed by:42 91
Symbol 42 MovieClip {com.novelgames.flashgames.marble.Ball}Uses:36 37 38 39 40 41Used by:45 46 51 56
Symbol 43 GraphicUsed by:45
Symbol 44 GraphicUsed by:45
Symbol 45 MovieClip {com.novelgames.flashgames.marble.Cannon}Uses:43 44 42Used by:46 51 56
Symbol 46 MovieClip {com.novelgames.flashgames.marble.StageBackground1}Uses:26 28 30 32 34 35 42 45
Symbol 47 GraphicUsed by:51
Symbol 48 GraphicUsed by:49
Symbol 49 MovieClipUses:48Used by:51
Symbol 50 GraphicUsed by:51
Symbol 51 MovieClip {com.novelgames.flashgames.marble.StageBackground2}Uses:47 49 50 42 45
Symbol 52 GraphicUsed by:56
Symbol 53 GraphicUsed by:54
Symbol 54 MovieClipUses:53Used by:56
Symbol 55 GraphicUsed by:56
Symbol 56 MovieClip {com.novelgames.flashgames.marble.StageBackground0}Uses:52 54 55 42 45
Symbol 57 GraphicUsed by:58
Symbol 58 MovieClipUses:57Used by:59
Symbol 59 MovieClip {com.novelgames.flashgames.marble.Explode}Uses:58
Symbol 60 GraphicUsed by:61
Symbol 61 MovieClip {com.novelgames.flashgames.marble.Star}Uses:60
Symbol 62 BitmapUsed by:63 86
Symbol 63 GraphicUses:62Used by:72
Symbol 64 TextUses:14Used by:65
Symbol 65 MovieClipUses:64Used by:67
Symbol 66 GraphicUsed by:67 81 84
Symbol 67 ButtonUses:65 66Used by:72 96
Symbol 68 TextUses:14Used by:69
Symbol 69 MovieClipUses:68Used by:72
Symbol 70 TextUses:14Used by:71
Symbol 71 MovieClipUses:70Used by:72
Symbol 72 MovieClip {com.novelgames.flashgames.common.Instructions}Uses:63 67 69 71
Symbol 73 EditableTextUses:14Used by:78
Symbol 74 TextUses:14Used by:78
Symbol 75 EditableTextUses:14Used by:78
Symbol 76 TextUses:14Used by:77
Symbol 77 MovieClipUses:76Used by:78
Symbol 78 MovieClip {com.novelgames.flashgames.marble.MessageStageBegin}Uses:73 74 75 77
Symbol 79 TextUses:14Used by:80
Symbol 80 MovieClipUses:79Used by:81
Symbol 81 ButtonUses:80 66Used by:85
Symbol 82 TextUses:14Used by:83
Symbol 83 MovieClipUses:82Used by:84
Symbol 84 ButtonUses:83 66Used by:85
Symbol 85 MovieClip {com.novelgames.flashgames.marble.MessagePlayAgain}Uses:81 84
Symbol 86 GraphicUses:62Used by:96
Symbol 87 MovieClipUses:36Used by:96
Symbol 88 MovieClipUses:37Used by:96
Symbol 89 MovieClipUses:39Used by:96
Symbol 90 MovieClipUses:38Used by:96
Symbol 91 MovieClipUses:41Used by:96
Symbol 92 MovieClipUses:40Used by:96
Symbol 93 BitmapUsed by:94
Symbol 94 GraphicUses:93Used by:95
Symbol 95 MovieClipUses:94Used by:96
Symbol 96 MovieClip {com.novelgames.flashgames.common.Title}Uses:86 87 88 89 67 90 91 92 95Used by:Timeline

Instance Names

"title"Frame 1Symbol 96 MovieClip {com.novelgames.flashgames.common.Title}
"backgroundHolder"Symbol 25 MovieClip {com.novelgames.flashgames.marble.Game} Frame 1Symbol 13 MovieClip
"ballsHolder"Symbol 25 MovieClip {com.novelgames.flashgames.marble.Game} Frame 1Symbol 13 MovieClip
"starsHolder"Symbol 25 MovieClip {com.novelgames.flashgames.marble.Game} Frame 1Symbol 13 MovieClip
"explodesHolder"Symbol 25 MovieClip {com.novelgames.flashgames.marble.Game} Frame 1Symbol 13 MovieClip
"scoreText"Symbol 25 MovieClip {com.novelgames.flashgames.marble.Game} Frame 1Symbol 15 EditableText
"clickDetector"Symbol 25 MovieClip {com.novelgames.flashgames.marble.Game} Frame 1Symbol 19 MovieClip
"dialog"Symbol 25 MovieClip {com.novelgames.flashgames.marble.Game} Frame 1Symbol 24 MovieClip {com.novelgames.flashgames.marble.Dialog}
"ballFront"Symbol 45 MovieClip {com.novelgames.flashgames.marble.Cannon} Frame 1Symbol 42 MovieClip {com.novelgames.flashgames.marble.Ball}
"ballBack"Symbol 45 MovieClip {com.novelgames.flashgames.marble.Cannon} Frame 1Symbol 42 MovieClip {com.novelgames.flashgames.marble.Ball}
"ball0"Symbol 46 MovieClip {com.novelgames.flashgames.marble.StageBackground1} Frame 1Symbol 42 MovieClip {com.novelgames.flashgames.marble.Ball}
"cannon"Symbol 46 MovieClip {com.novelgames.flashgames.marble.StageBackground1} Frame 1Symbol 45 MovieClip {com.novelgames.flashgames.marble.Cannon}
"ball0"Symbol 51 MovieClip {com.novelgames.flashgames.marble.StageBackground2} Frame 1Symbol 42 MovieClip {com.novelgames.flashgames.marble.Ball}
"ball1"Symbol 51 MovieClip {com.novelgames.flashgames.marble.StageBackground2} Frame 1Symbol 42 MovieClip {com.novelgames.flashgames.marble.Ball}
"cannon"Symbol 51 MovieClip {com.novelgames.flashgames.marble.StageBackground2} Frame 1Symbol 45 MovieClip {com.novelgames.flashgames.marble.Cannon}
"ball0"Symbol 56 MovieClip {com.novelgames.flashgames.marble.StageBackground0} Frame 1Symbol 42 MovieClip {com.novelgames.flashgames.marble.Ball}
"cannon"Symbol 56 MovieClip {com.novelgames.flashgames.marble.StageBackground0} Frame 1Symbol 45 MovieClip {com.novelgames.flashgames.marble.Cannon}
"piece0"Symbol 59 MovieClip {com.novelgames.flashgames.marble.Explode} Frame 1Symbol 58 MovieClip
"piece1"Symbol 59 MovieClip {com.novelgames.flashgames.marble.Explode} Frame 1Symbol 58 MovieClip
"piece2"Symbol 59 MovieClip {com.novelgames.flashgames.marble.Explode} Frame 1Symbol 58 MovieClip
"piece3"Symbol 59 MovieClip {com.novelgames.flashgames.marble.Explode} Frame 1Symbol 58 MovieClip
"piece4"Symbol 59 MovieClip {com.novelgames.flashgames.marble.Explode} Frame 1Symbol 58 MovieClip
"piece5"Symbol 59 MovieClip {com.novelgames.flashgames.marble.Explode} Frame 1Symbol 58 MovieClip
"piece6"Symbol 59 MovieClip {com.novelgames.flashgames.marble.Explode} Frame 1Symbol 58 MovieClip
"piece7"Symbol 59 MovieClip {com.novelgames.flashgames.marble.Explode} Frame 1Symbol 58 MovieClip
"startButton"Symbol 72 MovieClip {com.novelgames.flashgames.common.Instructions} Frame 1Symbol 67 Button
"levelText"Symbol 78 MovieClip {com.novelgames.flashgames.marble.MessageStageBegin} Frame 1Symbol 73 EditableText
"backgroundText"Symbol 78 MovieClip {com.novelgames.flashgames.marble.MessageStageBegin} Frame 1Symbol 75 EditableText
"playAgainButton"Symbol 85 MovieClip {com.novelgames.flashgames.marble.MessagePlayAgain} Frame 1Symbol 81 Button
"homeButton"Symbol 85 MovieClip {com.novelgames.flashgames.marble.MessagePlayAgain} Frame 1Symbol 84 Button
"startButton"Symbol 96 MovieClip {com.novelgames.flashgames.common.Title} Frame 1Symbol 67 Button

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.
Protect (24)Timeline Frame 10 bytes ""

Labels

"game"Frame 1
"on"Symbol 12 MovieClip {com.novelgames.flashgames.common.MuteButton} Frame 1
"off"Symbol 12 MovieClip {com.novelgames.flashgames.common.MuteButton} Frame 6
"hide"Symbol 24 MovieClip {com.novelgames.flashgames.marble.Dialog} Frame 1
"stageClear"Symbol 24 MovieClip {com.novelgames.flashgames.marble.Dialog} Frame 6
"gameOver"Symbol 24 MovieClip {com.novelgames.flashgames.marble.Dialog} Frame 16




http://swfchan.com/10/48909/info.shtml
Created: 29/4 -2019 00:58:10 Last modified: 29/4 -2019 00:58:10 Server time: 04/05 -2024 13:00:31