Forked from: hacker_9vjnvtdz's GYAOS_sample diff:2519 forked from: GYAOS_sample sekiryou forked:1favorite:6lines:2196license : MIT License modified : 2011-01-31 23:49:46 Embed Tweet /** * Copyright hacker_9vjnvtdz ( http://wonderfl.net/user/hacker_9vjnvtdz ) * MIT License ( http://www.opensource.org/licenses/mit-license.php ) * Downloaded from: http://wonderfl.net/c/f6f2 */ /** * Copyright hacker_9vjnvtdz ( http://wonderfl.net/user/hacker_9vjnvtdz ) * MIT License ( http://www.opensource.org/licenses/mit-license.php ) * Downloaded from: http://wonderfl.net/c/f6f2 */ /** * * title forked from: GYAOS_sample * @author Masayuki Komatsu / sekiryou.com * http://twitter.com/sekiryou_com */ package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.net.URLRequest; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; import flash.net.navigateToURL [SWF(width="465", height="465", frameRate="30", backgroundColor="#000000")] public class index extends Sprite { private var battle:Main; private var monsterNumber:int; public function index() { init(); } private function init():void { //TODO:地形決め・引数渡し monsterNumber = 0; battle = new Main(monsterNumber); addChild(battle); battle.addEventListener("EnenmyMonsterIsDead", win); battle.addEventListener("PlayerMonsterIsDead", lose); } private function win(e:Event):void { battle.removeEventListener("EnenmyMonsterIsDead", win); battle.removeEventListener("PlayerMonsterIsDead", lose); removeChild(battle); monsterNumber += 1; if (monsterNumber == 3) { ending(); } else { battle = new Main(monsterNumber); addChild(battle); battle.addEventListener("EnenmyMonsterIsDead", win); battle.addEventListener("PlayerMonsterIsDead", lose); } } private function lose(e:Event):void { battle.removeEventListener("EnenmyMonsterIsDead", win); battle.removeEventListener("PlayerMonsterIsDead", lose); removeChild(battle); battle = new Main(monsterNumber); addChild(battle); battle.addEventListener("EnenmyMonsterIsDead", win); battle.addEventListener("PlayerMonsterIsDead", lose); } private function ending():void { var text:TextField = new TextField(); var format:TextFormat = new TextFormat(); format.size = 20; format.align = "center"; text.selectable = false; text.autoSize = TextFieldAutoSize.CENTER; text.textColor = 0xFFFFFF; text.defaultTextFormat = format; text.text = "Thank you for playing.\n\nIf you're looking for more battles..."; text.x = 233 - text.width * 0.5; text.y = 160 addChild(text); var button:Sprite = new Sprite(); button.buttonMode = true; addChild(button); var buttonText:TextField = new TextField(); format = new TextFormat(); format.size = 20; format.align = "center"; buttonText.selectable = false; buttonText.autoSize = TextFieldAutoSize.CENTER; buttonText.textColor = 0xFFFFFF; buttonText.defaultTextFormat = format; buttonText.text = "GYAOS! : http://mons.ameba.jp/pc/index.do"; buttonText.x = 233 - buttonText.width * 0.5; buttonText.y = 260; buttonText.mouseEnabled = false; addChild(buttonText); //button.graphics.lineStyle(1, 0xFFFFFF); button.graphics.beginFill(0x000000); button.graphics.drawRect(0, 0, buttonText.width, buttonText.height); button.x = buttonText.x; button.y = buttonText.y; button.addEventListener( MouseEvent.CLICK, function():void { var url:URLRequest = new URLRequest( "http://mons.ameba.jp/pc/index.do" ); navigateToURL(url); } ); } } } import caurina.transitions.Tweener; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.ColorTransform; import flash.net.URLRequest; import flash.system.LoaderContext; class Main extends Sprite { private var playerMonsterList:Vector.<MonsterBase>; private var playerMonster:MonsterBase; private var enemyMonster:MonsterBase; private var playerActions:Vector.<Pannel>; private var playerAttacks:Vector.<Pannel>; private var playerEffectList:Vector.<HitEffectBase>; private var enemyEffectList:Vector.<HitEffectBase>; private var playerAction:int; private var enemyAction:int; private var loader:Loader; private var imgContainer:Sprite; private var dmfBmd:BitmapData; private var effectBmd:BitmapData; private var effect:Bitmap; private var bg:Loader; private var mb:MessageBoard; private var ab0:Pannel; private var ab1:Pannel; private var ab2:Pannel; private var ab3:Pannel; private var ac:AttackCursor; private var monsterCount:int; private var loadCompCount:int; private var lg1:LifeGauge; private var lg2:LifeGauge; private var apRate:Number; private var isWeakPointHit:Boolean; private var ctf:ColorTransform; private var _em:int; private const monsterList:Array = [ Monster0000, Monster0001, Monster0002 ]; private const effectList:Array = [ HitEffect0000, HitEffect0001, HitEffect0002, HitEffect0000 ]; public function Main(em:int) { _em = em; init(); } private function init():void { imgContainer = new Sprite(); imgContainer.x = 465 * 0.5; imgContainer.y = 465 * 0.5; addChild(imgContainer); ctf = new ColorTransform(1, 1, 1, 1, 0, 0, 0, 0) imgContainer.transform.colorTransform = ctf; ac = new AttackCursor(); addChild(ac); mb = new MessageBoard(); mb.x = 50; mb.y = 310; // 背景をロードする var bgImgUrl:String = "http://assets.wonderfl.net/images/related_images/d/df/df33/df3300cc95a62a2c92afd773036da502dc3b3d1c"; bg = new Loader(); bg.contentLoaderInfo.addEventListener(Event.COMPLETE, monsterPrepare); bg.load(new URLRequest(bgImgUrl), new LoaderContext(true)); } private function monsterPrepare(e:Event = null):void { monsterCount = 5; loadCompCount = 0; //TODO:プレイヤーのデッキを読み込む playerMonsterList = new Vector.<MonsterBase>(); playerMonsterList[0] = new Monster0000(); playerMonsterList[0].addEventListener("loadComplete", monsterComplete); playerMonsterList[1] = new Monster0000(); playerMonsterList[1].addEventListener("loadComplete", monsterComplete); playerMonsterList[2] = new Monster0001(); playerMonsterList[2].addEventListener("loadComplete", monsterComplete); playerMonsterList[3] = new Monster0000(); playerMonsterList[3].addEventListener("loadComplete", monsterComplete); enemyMonster = new monsterList[_em](); enemyMonster.addEventListener("loadComplete", monsterComplete); imgContainer.addChild(enemyMonster); } private function monsterComplete(e:Event):void { e.target.removeEventListener("loadComplete", monsterComplete); loadCompCount += 1; if (monsterCount == loadCompCount) { encount(); } } private function encount():void { var tmp:BitmapData = new BitmapData(500, 500, false, 0x000000); tmp.draw(bg); enemyMonster.background = tmp; enemyMonster.card(); enemyMonster.y = -400; Tweener.addTween(enemyMonster, { y : 0, time : 2.4, transition : "easeOutBounce" } ); var rot:Number = 0; addEventListener( Event.ENTER_FRAME, function():void { rot += 7; enemyMonster.rotateY = rot; if (rot > 720) { addChild(mb); mb.valid(); mb.clear(); //mb.add(enemyMonster.anotherName); mb.add(enemyMonster.monsterName + "があらわれた"); enemyMonster.rotateY = 0; removeEventListener(Event.ENTER_FRAME, arguments.callee); enemyMonster.cardDissolve(); playerMonsterPrepare(); } } ); } private function playerMonsterPrepare(e:Event = null):void { mb.add(" "); mb.add("どのモンスターで戦いますか?"); var tmp:BitmapData = new BitmapData(500, 500, false, 0x000000); tmp.draw(bg); var len:int = playerMonsterList.length; for (var i:int = 0; i < len; i++) { addChild(playerMonsterList[i]); playerMonsterList[i].buttonMode = true; playerMonsterList[i].background = tmp; playerMonsterList[i].x = i * 115 + 60; playerMonsterList[i].y = -300; playerMonsterList[i].scaleX = playerMonsterList[i].scaleY = 0.6; playerMonsterList[i].selectableCardize(); playerMonsterList[i].addEventListener(MouseEvent.CLICK, playerMonsterChoice); Tweener.addTween(playerMonsterList[i], { x : i * 115 + 60, y : 80, time : 1.0, transition : "easeInOutCubic" } ); } } private function playerMonsterChoice(e:Event):void { mb.clear(); playerMonster = e.currentTarget as MonsterBase; var len:int = playerMonsterList.length; for (var i:int = 0; i < len; i++) { playerMonsterList[i].removeEventListener(MouseEvent.CLICK, playerMonsterChoice); Tweener.addTween( playerMonsterList[i], { x : i * 115 + 60, y : -300, time : 1.0, transition : "easeInOutCubic", onComplete : function():void { this.visible = false; } } ); } battlePrepare() } private function battlePrepare():void { ab0 = new Pannel("攻撃"); ab0.x = 50; ab0.y = 160; addChild(ab0); ab1 = new Pannel("身構える"); ab1.x = 50; ab1.y = 190; addChild(ab1); ab2 = new Pannel("捕まえる"); ab2.x = 50; ab2.y = 220; addChild(ab2); ab3 = new Pannel("逃げる"); ab3.x = 50; ab3.y = 250; addChild(ab3); lg1 = new LifeGauge(0); lg1.x = 10; lg1.y = 30; addChild(lg1); lg1.valid(); lg1.setHP(playerMonster.maxHP); lg2 = new LifeGauge(1); lg2.x = 250; lg2.y = 30; addChild(lg2); lg2.valid(); lg2.setHP(enemyMonster.maxHP); playerAttacks = new Vector.<Pannel>(); var len:int = playerMonster.actions.length; for (var i:int = 0; i < len; i++) { var tmp:Pannel = new Pannel(playerMonster.actions[i].name); tmp.x = 70; tmp.y = 170 + i * 30; tmp.id = i; playerAttacks.push(tmp); addChild(tmp); } dmfBmd = new BitmapData(465, 465, true, 0x7FFFFFFF); effectBmd = new BitmapData(465, 465, true, 0x00000000); effect = new Bitmap(effectBmd); addChild(effect); playerEffectList = new Vector.<HitEffectBase>(); len = playerMonster.actions.length; for (i = 0; i < len; i++) { playerEffectList.push(new effectList[playerMonster.actions[i].effect](imgContainer, effectBmd, dmfBmd)); } enemyEffectList = new Vector.<HitEffectBase>(); len = enemyMonster.actions.length; for (i = 0; i < len; i++) { enemyEffectList.push(new effectList[enemyMonster.actions[i].effect](imgContainer, effectBmd, dmfBmd)); } //BattleStart scene10_00(); } private function scene10_00():void { var tmp:Number = int(Math.random() * 100); if (tmp < 90) { enemyAction = 1; } else if (tmp < 95) { enemyAction = 2; //TODO:警戒ポイントを決める } else { enemyAction = 3; } scene00_00(); } private function scene00_00():void { ab0.valid(); ab0.addEventListener(MouseEvent.CLICK, scene01_00); ab1.valid(); ab1.addEventListener(MouseEvent.CLICK, scene02_00); ab2.valid(); ab2.addEventListener(MouseEvent.CLICK, scene03_00); ab3.valid(); ab3.addEventListener(MouseEvent.CLICK, scene04_00); //mb.clear(); mb.add("プレイヤーのターン"); mb.add("どうする?"); } private function scene01_00(e:MouseEvent):void { playerAction = 1; ab0.invalid(); ab1.invalid(); ab2.invalid(); ab3.invalid(); var len:int = playerMonster.actions.length; for (var i:int = 0; i < len; i++) { playerAttacks[i].valid(); playerAttacks[i].addEventListener(MouseEvent.CLICK, scene01_01); playerAttacks[i].addEventListener("invalid", scene01_02); } mb.clear(); mb.add("攻撃方法選択"); mb.add(" "); } private function scene01_01(e:MouseEvent):void { playerMonster.attackID = e.currentTarget.id; var len:int = playerMonster.actions.length; for (var i:int = 0; i < len; i++) { playerAttacks[i].invalid(); playerAttacks[i],removeEventListener(MouseEvent.CLICK, scene01_01); } } private function scene01_02(e:Event):void { mb.clear(); mb.add("どこを狙う?"); mb.add(" "); e.target.removeEventListener("invalid", scene01_02); ac.valid(); ac.x = stage.mouseX; ac.y = stage.mouseY; stage.addEventListener(MouseEvent.MOUSE_MOVE, scene01_03); stage.addEventListener(MouseEvent.CLICK, scene01_04); } private function scene01_03(e:Event):void { ac.x = stage.mouseX; ac.y = stage.mouseY; } private function scene01_04(e:Event):void { if (enemyMonster.bitmap.bitmapData.getPixel32(enemyMonster.bitmap.mouseX, enemyMonster.bitmap.mouseY) != 0) { ac.invalid(); stage.removeEventListener(MouseEvent.MOUSE_MOVE, scene01_03); stage.removeEventListener(MouseEvent.CLICK, scene01_04); mb.clear(); mb.add(playerMonster.actions[playerMonster.attackID].voice); var isCounter:Boolean = false; if (enemyAction == 2) { //TODO:カウンターの合否処理 if (Math.random() < 0.4) isCounter = true; } if (isCounter) { scene12_05(); } else { apRate = 1.0; isWeakPointHit = false; var len:int = enemyMonster.weakPoints.length; for (var i:int = 0; i < len; i++) { var dx:Number = enemyMonster.weakPoints[i].x - enemyMonster.bitmap.mouseX; var dy:Number = enemyMonster.weakPoints[i].y - enemyMonster.bitmap.mouseY; if (Math.sqrt(dx * dx + dy * dy) < playerMonster.actions[playerMonster.attackID].radius + enemyMonster.weakPoints[i].radius) { isWeakPointHit = true; if (enemyMonster.weakPoints[i].isHit == false) { apRate = enemyMonster.weakPoints[i].rate; enemyMonster.weakPoints[i].isHit = true; } else { apRate = 1.1; } break; } } scene01_05(); } } } private function scene01_05():void { playerEffectList[playerMonster.attackID].start(); playerEffectList[playerMonster.attackID].addEventListener("finish", scene01_06); } private function scene01_06(e:Event):void { playerEffectList[playerMonster.attackID].removeEventListener("finish", scene01_06); var damage:Number = (playerMonster.ap + playerMonster.actions[playerMonster.attackID].ap) * 2 * apRate - enemyMonster.dp; if (damage < 1) damage = 1; damage = int(damage + damage * (Math.random() * 0.15)); //mb.clear(); if (isWeakPointHit) mb.add("敵の弱点に攻撃があたった!"); mb.add(damage + "のダメージを与えた"); var isDead:Boolean = lg2.lifeCalculate(damage); if (isDead) scene18_00(); else scene10_01(); } //自:身構える private function scene02_00(e:MouseEvent):void { playerAction = 2; ab0.invalid(); ab1.invalid(); ab2.invalid(); ab3.invalid(); mb.clear(); mb.add("どの位置への攻撃を警戒しますか?"); playerMonster.visible = true; playerMonster.buttonMode = false; playerMonster.scaleX = playerMonster.scaleY = 0.75; playerMonster.x = 600; playerMonster.y = 180; playerMonster.counterAreaValid(); playerMonster.addEventListener("counterDecided", scene02_01); Tweener.addTween(playerMonster, { x : 370, y : 180, time : 0.6, transition : "easeInOutCubic" } ); } private function scene02_01(e:Event):void { playerMonster.removeEventListener("counterDecided", scene02_01); Tweener.addTween( playerMonster, { x : 600, y : 180, time : 0.6, transition : "easeInOutCubic", onComplete : function():void { scene10_01(); } } ); } private function scene02_05():void { //カウンター成功 playerMonster.attackID = int(Math.random() * playerAttacks.length); mb.clear(); mb.add("敵の攻撃を見切った、カウンターに成功した"); //wait var count:int = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count > 0) { removeEventListener(Event.ENTER_FRAME, arguments.callee); mb.add(" "); mb.add(playerMonster.actions[playerMonster.attackID].voice); playerEffectList[playerMonster.attackID].start(); playerEffectList[playerMonster.attackID].addEventListener("finish", scene02_06); } count += 1; } ); } private function scene02_06(e:Event):void { playerEffectList[playerMonster.attackID].removeEventListener("finish", scene02_06); apRate = 1.5; isWeakPointHit = false; var damage:Number = (playerMonster.ap + playerMonster.actions[playerMonster.attackID].ap) * 2 * apRate - enemyMonster.dp; if (damage < 1) damage = 1; damage = int(damage + damage * (Math.random() * 0.15)); //mb.clear(); mb.add(damage + "のダメージを与えた"); var isDead:Boolean = lg2.lifeCalculate(damage); if (isDead) scene18_00(); else scene20_00(); } //自:捕まえる private function scene03_00(e:MouseEvent):void { playerAction = 3; ab0.invalid(); ab1.invalid(); ab2.invalid(); ab3.invalid(); //TODO:HP比率・弱点攻撃成功率・カウンター成功率により捕獲確立を導く mb.clear(); mb.add("敵モンスターを捕まえようとした"); //wait var count:int = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count > 30) { removeEventListener(Event.ENTER_FRAME, arguments.callee); mb.add(" "); mb.add("しかし捕まえることができない!"); scene10_01(); } count += 1; } ); } //自:逃げる private function scene04_00(e:MouseEvent):void { playerAction = 4; ab0.invalid(); ab1.invalid(); ab2.invalid(); ab3.invalid(); //TODO:スピードパラメータ等作って云々 mb.clear(); mb.add("逃げようとした"); //wait var count:int = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count > 30) { removeEventListener(Event.ENTER_FRAME, arguments.callee); mb.add(" "); mb.add("しかし逃げられない!"); scene10_01(); } count += 1; } ); } //自:死亡 private function scene08_00():void { ctf.redOffset = 64; ctf.greenOffset = -64; ctf.blueOffset = -64; imgContainer.transform.colorTransform = ctf; //wait var count:int = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count > 45) { removeEventListener(Event.ENTER_FRAME, arguments.callee); mb.clear(); mb.add("プレイヤーモンスターは力尽きた・・・"); dispatchEvent(new Event("PlayerMonsterIsDead")); } count += 1; } ); } //敵:ターン private function scene10_01(e:Event = null):void { ab3.removeEventListener("invalid", scene10_01); //wait var count:int = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count > 30) { removeEventListener(Event.ENTER_FRAME, arguments.callee); mb.clear(); mb.add("敵モンスターのターン"); scene10_02(); } count += 1; } ); } private function scene10_02():void { //wait var count:int = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count > 30) { removeEventListener(Event.ENTER_FRAME, arguments.callee); if (enemyAction == 1) { scene11_00() } else if (enemyAction == 2) { scene12_00() } else if (enemyAction == 3) { scene14_00() } } count += 1; } ); } //敵:攻撃 private function scene11_00():void { var len:int = enemyMonster.actions.length; enemyMonster.attackID = int(Math.random() * len); //TODO:敵による弱点探索・攻撃箇所決定 var isCounter:Boolean = false; if (playerAction == 2) { //TODO:カウンターの合否処理 if (Math.random() < 0.4) isCounter = true; } if (isCounter) { scene02_05(); } else { mb.add("敵モンスターの攻撃"); mb.add(enemyMonster.actions[enemyMonster.attackID].voice); var count:int = 0; var tmpX:Number = imgContainer.x; var tmpY:Number = imgContainer.y; addEventListener( Event.ENTER_FRAME, function():void { imgContainer.x = tmpX + Math.random() * 32 - 16; imgContainer.y = tmpY + Math.random() * 32 - 16; if (count > 8) { imgContainer.x = tmpX; imgContainer.y = tmpY; removeEventListener(Event.ENTER_FRAME, arguments.callee); } count += 1; } ); enemyMonster.cameraPan(2.0); enemyEffectList[enemyMonster.attackID].start(); enemyEffectList[enemyMonster.attackID].addEventListener("finish", scene11_01); } } private function scene11_01(e:Event):void { enemyEffectList[enemyMonster.attackID].removeEventListener("finish", scene11_01); apRate = 1.0; isWeakPointHit = false; //TODO:弱点ヒット処理 if (Math.random() < 0.15) { apRate = 1.5; isWeakPointHit = true; } var damage:Number = (enemyMonster.ap + enemyMonster.actions[enemyMonster.attackID].ap) * 2 * apRate - playerMonster.dp; if (damage < 1) damage = 1; damage = int(damage + damage * (Math.random() * 0.15)); if (isWeakPointHit) mb.add("弱点に攻撃を受けてしまった!"); mb.add(damage + "のダメージ"); mb.add(" "); enemyMonster.cameraPan(1.0); playerMonster.lifeGauge.lifeCalculate(damage); var isDead:Boolean = lg1.lifeCalculate(damage); if (isDead) scene08_00(); else scene20_00(); } //敵:身構える private function scene12_00():void { //mb.add(" "); mb.add("敵モンスターは身構えていた"); mb.add(" "); //自:ターン scene20_00(); } private function scene12_05():void { //カウンター成功 enemyMonster.attackID = int(Math.random() * enemyMonster.actions.length); mb.clear(); mb.add("敵モンスターは身構えていた"); //wait var count:int = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count > 30) { removeEventListener(Event.ENTER_FRAME, arguments.callee); mb.add("カウンター攻撃を受けた"); mb.add(enemyMonster.actions[enemyMonster.attackID].voice); var efxCount:int = 0; var tmpX:Number = imgContainer.x; var tmpY:Number = imgContainer.y; addEventListener( Event.ENTER_FRAME, function():void { imgContainer.x = tmpX + Math.random() * 32 - 16; imgContainer.y = tmpY + Math.random() * 32 - 16; if (efxCount > 8) { imgContainer.x = tmpX; imgContainer.y = tmpY; removeEventListener(Event.ENTER_FRAME, arguments.callee); } efxCount += 1; } ); enemyMonster.cameraPan(2.0); enemyEffectList[enemyMonster.attackID].start(); enemyEffectList[enemyMonster.attackID].addEventListener("finish", scene12_06); } count += 1; } ); } private function scene12_06(e:Event):void { enemyEffectList[enemyMonster.attackID].removeEventListener("finish", scene12_06); apRate = 1.5; isWeakPointHit = false; var damage:Number = (enemyMonster.ap + enemyMonster.actions[enemyMonster.attackID].ap) * 2 * apRate - playerMonster.dp; if (damage < 1) damage = 1; damage = int(damage + damage * (Math.random() * 0.15)); mb.add(damage + "のダメージ"); mb.add(" "); enemyMonster.cameraPan(1.0); playerMonster.lifeGauge.lifeCalculate(damage); var isDead:Boolean = lg1.lifeCalculate(damage); if (isDead) scene08_00(); else scene20_00(); } //敵:捕まえる //private function scene13_00():void {} //敵:逃げる private function scene14_00():void { //TODO:スピードパラメータ等作って云々 mb.add("敵モンスターは逃げようとした"); //wait var count:int = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count > 45) { removeEventListener(Event.ENTER_FRAME, arguments.callee); mb.add(" "); mb.add("しかし逃げられない"); mb.add(" "); scene20_00(); } count += 1; } ); } //敵:死亡 private function scene18_00():void { //wait var count:int = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count == 30) { mb.clear(); mb.add(enemyMonster.lastWords); } else if (count == 45) { enemyMonster.deadEffect(); //scene18_01(); } else if (count > 75) { removeEventListener(Event.ENTER_FRAME, arguments.callee); mb.clear(); mb.add("敵モンスターを倒した"); dispatchEvent(new Event("EnenmyMonsterIsDead")); } count += 1; } ); } private function scene18_01():void { //wait var count:int = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count > 30) { removeEventListener(Event.ENTER_FRAME, arguments.callee); mb.clear(); mb.add("敵モンスターを倒した"); dispatchEvent(new Event("EnenmyMonsterIsDead")); } count += 1; } ); } //ターンチェンジ private function scene20_00():void { //wait var count:int = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count > 30) { removeEventListener(Event.ENTER_FRAME, arguments.callee); //自:ターン scene10_00(); } count += 1; } ); } } import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.net.URLRequest; import flash.system.LoaderContext; import caurina.transitions.Tweener; class MonsterBase extends Sprite { protected var _imgUrl:String; protected var _anotherName:String; protected var _monsterName:String; protected var _maxHP:Number; protected var _hp:Number; protected var _groundLine:Number; protected var _actions:Vector.<Attack>; protected var _lastWords:String; protected var _attackID:int; protected var _ap:Number; protected var _dp:Number; protected var _cp:Number; protected var _ep:Number; protected var _sp:Number; protected var _weakPoints:Vector.<WeakPoint>; protected var _loader:Loader; protected var _bitmap:Bitmap; protected var _container:Sprite; protected var _monster:Sprite; protected var _cardFrame:Sprite; protected var _clickable:Sprite; protected var _bg:Bitmap; protected var _rs:Bitmap; protected var _counterArea:CounterArea; private const CARD_WIDTH:Number = 180; private const CARD_HEIGHT:Number = 260; private const CARD_EDGE:Number = 20; private var _lifeGauge:LifeGauge; public function MonsterBase() {} protected function load():void { _loader = new Loader(); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); _loader.load(new URLRequest(_imgUrl), new LoaderContext(true)); } private function onComplete(e:Event):void { blendMode = "layer"; _container = new Sprite(); addChild(_container); _bg = new Bitmap(new BitmapData(500, 500, false, 0x000000)); _bg.x = -250; _bg.y = -250; _container.addChild(_bg); var tmp:BitmapData = new BitmapData(_loader.width, _loader.height, true, 0x00000000); tmp.draw(_loader); _bitmap = new Bitmap(tmp); _bitmap.x = -_loader.width * 0.5; _bitmap.y = -_loader.height * 0.5; _monster = new Sprite(); _container.addChild(_monster); _monster.addChild(_bitmap); _monster.graphics.clear(); _monster.graphics.lineStyle(6, 0xDDDDDD, 1); _monster.graphics.drawRoundRect(CARD_WIDTH * -0.5, CARD_HEIGHT * -0.5, CARD_WIDTH, CARD_HEIGHT, CARD_EDGE, CARD_EDGE); _rs = new Bitmap(new BitmapData(500, 500, false, 0x330000)); _rs.x = -250; _rs.y = -250; _container.addChild(_rs); _counterArea = new CounterArea(); _counterArea.x = 200; _counterArea.y = 200; _counterArea.visible = false; _container.addChild(_counterArea); _cardFrame = new Sprite(); _cardFrame.blendMode = "erase"; _container.addChild(_cardFrame); rotateY = 0; _cardFrame.mouseEnabled = false; _monster.mouseEnabled = false; _container.mouseEnabled = false; mouseEnabled = false; _clickable = new Sprite(); _clickable.graphics.clear(); _clickable.graphics.beginFill(0x000000, 0.0); _clickable.graphics.drawRoundRect(CARD_WIDTH * -0.5, CARD_HEIGHT * -0.5, CARD_WIDTH, CARD_HEIGHT, CARD_EDGE, CARD_EDGE); _clickable.mouseEnabled = true; addChild(_clickable); //WeakPointDisplay //var len:int = _weakPoints.length; //for (var i:int = 0; i < len; i++) { //_clickable.graphics.lineStyle(1, 0x00FF00); //_clickable.graphics.beginFill(0x00FF00, 0.6); //_clickable.graphics.drawCircle(_weakPoints[i].x - _bitmap.width * 0.5, _weakPoints[i].y - _bitmap.height * 0.5, _weakPoints[i].radius); //} dispatchEvent(new Event("loadComplete")); } public function card():void { _cardFrame.graphics.clear(); _cardFrame.graphics.beginFill(0xFF0000); _cardFrame.graphics.drawRect( -250, -250, 500, 500); _cardFrame.graphics.drawRoundRect(CARD_WIDTH * -0.5, CARD_HEIGHT * -0.5, CARD_WIDTH, CARD_HEIGHT, CARD_EDGE, CARD_EDGE); } public function selectableCardize():void { _cardFrame.graphics.clear(); _cardFrame.graphics.beginFill(0xFF0000); _cardFrame.graphics.drawRect( -250, -250, 500, 500); _cardFrame.graphics.drawRoundRect(CARD_WIDTH * -0.5, CARD_HEIGHT * -0.5, CARD_WIDTH, CARD_HEIGHT, CARD_EDGE, CARD_EDGE); _lifeGauge = new LifeGauge(); _lifeGauge.setHP(_maxHP); _lifeGauge.scaleX = 0.75; _lifeGauge.x = -_lifeGauge.width * 0.5; _lifeGauge.y = 90; _lifeGauge.valid(); _container.addChild(_lifeGauge); } public function cardDissolve():void { const F:Number = 20; const HF:Number = F * 0.5; var count:Number = 0; addEventListener( Event.ENTER_FRAME, function():void { count += 1; _cardFrame.graphics.clear(); _cardFrame.graphics.beginFill(0xFF0000); _cardFrame.graphics.drawRect( -250, -250, 500, 500); _cardFrame.graphics.drawRoundRect( CARD_WIDTH * -0.5 - count * HF, CARD_HEIGHT * -0.5 - count * HF, CARD_WIDTH + count * F, CARD_HEIGHT + count * F, CARD_EDGE, CARD_EDGE); //_monster.graphics.clear(); //_monster.graphics.lineStyle(6, 0xDDDDDD, 1 - count / (380 / F)); //_monster.graphics.drawRoundRect( -80, -120, 160, 240, 14, 14); _monster.graphics.clear(); _monster.graphics.beginFill(0xFFFFFF, 1 - count / (380 / F)); _monster.graphics.drawRect( -250, -250, 500, 500); _monster.graphics.drawRoundRect(CARD_WIDTH * -0.5, CARD_HEIGHT * -0.5, CARD_WIDTH, CARD_HEIGHT, CARD_EDGE, CARD_EDGE); //_cardFrame.graphics.clear(); //_cardFrame.graphics.beginFill(0xFF0000, 1 - count / (380 / F)); //_cardFrame.graphics.drawRect( -250, -250, 500, 500); //_cardFrame.graphics.drawRoundRect(CARD_WIDTH * -0.5, CARD_HEIGHT * -0.5, CARD_WIDTH, CARD_HEIGHT, CARD_EDGE, CARD_EDGE); if ( count > 380 / F) { //removeChild(_clickable); _monster.graphics.clear(); _cardFrame.graphics.clear(); removeEventListener(Event.ENTER_FRAME, arguments.callee); dispatchEvent(new Event("cardDissolveFinish")); } } ); } public function cameraPan(rate:Number):void { //_monster.scaleX = rate; //_monster.scaleY = rate; Tweener.addTween(_monster, { scaleX: rate, scaleY: rate, time : 0.3, transition : "easeOutElastic" } ); } public function set background(value:BitmapData):void { _bg.bitmapData = value; } public function set reverseSide(value:BitmapData):void { _rs.bitmapData = value; } public function set rotateY(value:Number):void { rotationY = (value % 360 + 360) % 360; if (rotationY > 90 && rotationY < 270) { _rs.visible = true; } else { _rs.visible = false; } } public function counterAreaValid():void { _counterArea.visible = true; stage.addEventListener(MouseEvent.MOUSE_MOVE, counterAreaMove); _clickable.addEventListener(MouseEvent.CLICK, counterAreaDecide); } public function counterAreaInvalid():void { _counterArea.visible = false; } private function counterAreaMove(e:MouseEvent):void { _counterArea.x = _container.mouseX; _counterArea.y = _container.mouseY; if (_counterArea.x > 200) _counterArea.x = 200; if (_counterArea.x < -200) _counterArea.x = -200; if (_counterArea.y > 200) _counterArea.y = 200; if (_counterArea.y < -200) _counterArea.y = -200; } private function counterAreaDecide(e:MouseEvent):void { if (_bitmap.bitmapData.getPixel32(_clickable.mouseX + _bitmap.width * 0.5, _clickable.mouseY + _bitmap.height * 0.5) != 0) { _counterArea.visible = false; stage.removeEventListener(MouseEvent.MOUSE_MOVE, counterAreaMove); _clickable.removeEventListener(MouseEvent.CLICK, counterAreaDecide); dispatchEvent(new Event("counterDecided")); } } public function deadEffect():void { Tweener.addTween(_monster, { scaleX: 0.0, scaleY: 4.0, time : 1.6, transition : "easeOutCubic" } ); } public function get imgUrl():String { return _imgUrl; } public function get anotherName():String { return _anotherName; } public function get monsterName():String { return _monsterName; } public function get maxHP():Number { return _maxHP; } public function get hp():Number { return _hp; } public function set hp(value:Number):void { _hp = value; } public function get groundLine():Number { return _groundLine; } public function get actions():Vector.<Attack> { return _actions; } public function get attackID():int { return _attackID; } public function set attackID(value:int):void { _attackID = value; } public function get weakPoints():Vector.<WeakPoint> { return _weakPoints; } public function set weakPoints(value:Vector.<WeakPoint>):void { _weakPoints = value; } public function get bitmap():Bitmap { return _bitmap; } public function get ap():Number { return _ap; } public function get dp():Number { return _dp; } public function get cp():Number { return _cp; } public function get ep():Number { return _ep; } public function get sp():Number { return _sp; } public function get lastWords():String { return _lastWords; } public function get lifeGauge():LifeGauge { return _lifeGauge; } public function set lifeGauge(value:LifeGauge):void { _lifeGauge = value; } } class Monster0000 extends MonsterBase { public function Monster0000() { _imgUrl = "http://assets.wonderfl.net/images/related_images/5/57/5728/5728bb5057da70c62a2bff824fac59cf139bcb44"; _anotherName = "草原の気高き王"; _monsterName = "たんぽぽライオン"; _groundLine = 200; _maxHP = 800; _hp = 800; _ap = 60; _dp = 60; _cp = 60; _ep = 60; _sp = 60; _actions = new Vector.<Attack>(); _actions.push(new Attack("ひっかく", 2, 3, 0, "「がうー!」", "ひっかいた")); _actions.push(new Attack("噛み付く", 4, 2, 1, "「がぶっ!」", "噛み付いた")); _actions.push(new Attack("引き裂く", 6, 1, 2, "「がおー!」", "引き裂いた")); _weakPoints = new Vector.<WeakPoint>(); _weakPoints.push(new WeakPoint(118, 145, 5, 1.8)); _weakPoints.push(new WeakPoint(93, 125, 8, 1.8)); _weakPoints.push(new WeakPoint(143, 125, 8, 1.8)); _lastWords = "「ん? おぉん? うぉん・・・」"; load(); } } class Monster0001 extends MonsterBase { public function Monster0001() { _imgUrl ="http://assets.wonderfl.net/images/related_images/6/6d/6d2a/6d2aac9165308e05d07f52232f99bfe9d52a06fb"; _anotherName = "西域の守護者"; _monsterName = "一角白虎"; _groundLine = 200; _maxHP = 900; _hp = 900; _ap = 65; _dp = 65; _cp = 65; _ep = 65; _sp = 65; _actions = new Vector.<Attack>(); _actions.push(new Attack("ひっかく", 2, 3, 0, "「がうー!」", "ひっかいた")); _actions.push(new Attack("噛み付く", 4, 2, 1, "「がぶっ!」", "噛み付いた")); _actions.push(new Attack("引き裂く", 6, 1, 2, "「がおー!」", "引き裂いた")); _weakPoints = new Vector.<WeakPoint>(); _weakPoints.push(new WeakPoint(115, 184, 5, 1.6)); _weakPoints.push(new WeakPoint(111, 147, 6, 1.8)); _weakPoints.push(new WeakPoint(68, 102, 5, 2.2)); _lastWords = "「ん? おぉん? うぉん・・・」"; load(); } } class Monster0002 extends MonsterBase { public function Monster0002() { _imgUrl = "http://assets.wonderfl.net/images/related_images/9/9a/9a67/9a674310835d956620db269594b14241d8c079ba"; _anotherName = "獰猛なる漆黒の饕餮"; _monsterName = "八岐蛟"; _groundLine = 200; _maxHP = 1100; _hp = 1100; _ap = 70; _dp = 70; _cp = 70; _ep = 70; _sp = 70; _actions = new Vector.<Attack>(); _actions.push(new Attack("ひっかく", 2, 3, 0, "「がうー!」", "ひっかいた")); _actions.push(new Attack("噛み付く", 4, 2, 1, "「がぶっ!」", "噛み付いた")); _actions.push(new Attack("引き裂く", 6, 1, 2, "「がおー!」", "引き裂いた")); _weakPoints = new Vector.<WeakPoint>(); _weakPoints.push(new WeakPoint(103, 200, 10, 1.5)); //_weakPoints.push(new WeakPoint(138, 174, 10, 1.4)); _weakPoints.push(new WeakPoint(138, 134, 4, 1.5)); _weakPoints.push(new WeakPoint(164, 145, 4, 1.5)); //_weakPoints.push(new WeakPoint(108, 126, 10, 1.4)); _weakPoints.push(new WeakPoint(98, 104, 3, 1.5)); _weakPoints.push(new WeakPoint(122, 107, 3, 1.5)); _lastWords = "「ん? おぉん? うぉん・・・」"; load(); } } import flash.display.Sprite; import flash.geom.Point; class HitEffectBase extends Sprite { protected const ZERO_POINT:Point = new Point(0, 0); public function HitEffectBase() { } public function start():void { } } import flash.display.BitmapData; import flash.display.Graphics; import flash.display.Sprite; import flash.events.Event; import flash.filters.DisplacementMapFilter; import flash.geom.ColorTransform; import flash.geom.Matrix; class HitEffect0000 extends HitEffectBase { private var imgContainer:Sprite; private var effectBmd:BitmapData; private var dmfBmd:BitmapData; private var ctf:ColorTransform = new ColorTransform(); private var mtrx:Matrix = new Matrix(); public function HitEffect0000(imgContainer:Sprite, effectBmd:BitmapData, dmfBmd:BitmapData) { this.imgContainer = imgContainer this.effectBmd = effectBmd this.dmfBmd = dmfBmd } override public function start():void { var filter:DisplacementMapFilter = new DisplacementMapFilter( dmfBmd, ZERO_POINT, 8, 8, -16, -16 ); ctf = new ColorTransform(); var count:Number = 0; var tmpSprite:Sprite = new Sprite(); var g:Graphics = tmpSprite.graphics; addEventListener( Event.ENTER_FRAME, function():void { if (count < 4) { var atr:Number = 40; var ss:Number = 4; var rateX:Number = 48; var rateY:Number = 0.6; var px:Number = 110; var py:Number = 110; g.clear(); g.beginFill(0x660000, 0.6); g.drawEllipse(0, atr * 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 1, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 2, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 3, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 4, (count + ss) * rateX, (count + ss) * rateY); effectBmd.fillRect(effectBmd.rect, 0x00000000); mtrx.identity(); mtrx.translate(0, -tmpSprite.height * 0.5); mtrx.rotate(45 * (3.1415926 / 180)); mtrx.translate(px, py); effectBmd.draw(tmpSprite, mtrx); rateY = 4; g.clear(); g.beginFill(0xFFFFFF, 0.6); g.drawEllipse(0, atr * 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 1, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 2, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 3, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 4, (count + ss) * rateX, (count + ss) * rateY); dmfBmd.fillRect(effectBmd.rect, 0x7FFFFFFF); mtrx.identity(); mtrx.translate(0, -tmpSprite.height * 0.5); mtrx.rotate(45 * (3.1415926 / 180)); mtrx.translate(px, py); dmfBmd.draw(tmpSprite, mtrx); } else if (count < 12) { ctf.alphaOffset = (1 - (count - 5) / 12); effectBmd.colorTransform(effectBmd.rect, ctf); dmfBmd.colorTransform(dmfBmd.rect, ctf); } else { effectBmd.fillRect(effectBmd.rect, 0x00000000); dmfBmd.fillRect(effectBmd.rect, 0x7FFFFFFF); removeEventListener(Event.ENTER_FRAME, arguments.callee); dispatchEvent(new Event("finish")); } imgContainer.filters = [filter]; count += 1; } ); } } import flash.display.BitmapData; import flash.display.Graphics; import flash.display.Sprite; import flash.filters.DisplacementMapFilter; import flash.geom.ColorTransform; import flash.geom.Matrix; import flash.events.Event; class HitEffect0001 extends HitEffectBase { private var imgContainer:Sprite; private var effectBmd:BitmapData; private var dmfBmd:BitmapData; private var ctf:ColorTransform = new ColorTransform(); private var mtrx:Matrix = new Matrix(); public function HitEffect0001(imgContainer:Sprite, effectBmd:BitmapData, dmfBmd:BitmapData) { this.imgContainer = imgContainer this.effectBmd = effectBmd this.dmfBmd = dmfBmd } override public function start():void { var filter:DisplacementMapFilter = new DisplacementMapFilter( dmfBmd, ZERO_POINT, 8, 8, 8, -20 ); ctf = new ColorTransform(); var count:Number = 0; var tmpSprite:Sprite = new Sprite(); var g:Graphics = tmpSprite.graphics; addEventListener( Event.ENTER_FRAME, function():void { if (count < 4) { var atr:Number = 20; var ss:Number = 4; var rateX:Number = 0.4; var rateY:Number = 16; var px:Number = 220; var py:Number = 150; var tmpY:Number = 150; g.clear(); g.beginFill(0xFFFFFF, 0.6); g.drawEllipse(atr * 0, 0, (count + ss) * (rateX + 0.4), (count + ss) * (rateY + 2)); g.drawEllipse(atr * 1, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 2, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 3, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 4, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 5, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 6, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 7, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 8, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 9, 0, (count + ss) * (rateX + 0.4), (count + ss) * (rateY + 2)); g.drawEllipse(atr * 0 + atr * 0.5, tmpY, (count + ss) * (rateX + 0.4), (count + ss) * -(rateY + 2)); g.drawEllipse(atr * 1 + atr * 0.5, tmpY, (count + ss) * rateX, (count + ss) * -rateY); g.drawEllipse(atr * 2 + atr * 0.5, tmpY, (count + ss) * rateX, (count + ss) * -rateY); g.drawEllipse(atr * 3 + atr * 0.5, tmpY, (count + ss) * rateX, (count + ss) * -rateY); g.drawEllipse(atr * 4 + atr * 0.5, tmpY, (count + ss) * rateX, (count + ss) * -rateY); g.drawEllipse(atr * 5 + atr * 0.5, tmpY, (count + ss) * rateX, (count + ss) * -rateY); g.drawEllipse(atr * 6 + atr * 0.5, tmpY, (count + ss) * rateX, (count + ss) * -rateY); g.drawEllipse(atr * 7 + atr * 0.5, tmpY, (count + ss) * rateX, (count + ss) * -rateY); g.drawEllipse(atr * 8 + atr * 0.5, tmpY, (count + ss) * (rateX + 0.4), (count + ss) * -(rateY + 2)); effectBmd.fillRect(effectBmd.rect, 0x00000000); mtrx.identity(); mtrx.translate(-tmpSprite.width * 0.5, 0); mtrx.translate(px, py); effectBmd.draw(tmpSprite, mtrx); rateX = 4.0; g.clear(); g.beginFill(0x7FFFFF, 0.6); g.drawEllipse(atr * 0, 0, (count + ss) * (rateX + 0.4), (count + ss) * (rateY + 2)); g.drawEllipse(atr * 1, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 2, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 3, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 4, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 5, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 6, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 7, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 8, 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(atr * 9, 0, (count + ss) * (rateX + 0.4), (count + ss) * (rateY + 2)); g.drawEllipse(atr * 0 + atr * 0.5, tmpY, (count + ss) * (rateX + 0.4), (count + ss) * -(rateY + 2)); g.drawEllipse(atr * 1 + atr * 0.5, tmpY, (count + ss) * rateX, (count + ss) * -rateY); g.drawEllipse(atr * 2 + atr * 0.5, tmpY, (count + ss) * rateX, (count + ss) * -rateY); g.drawEllipse(atr * 3 + atr * 0.5, tmpY, (count + ss) * rateX, (count + ss) * -rateY); g.drawEllipse(atr * 4 + atr * 0.5, tmpY, (count + ss) * rateX, (count + ss) * -rateY); g.drawEllipse(atr * 5 + atr * 0.5, tmpY, (count + ss) * rateX, (count + ss) * -rateY); g.drawEllipse(atr * 6 + atr * 0.5, tmpY, (count + ss) * rateX, (count + ss) * -rateY); g.drawEllipse(atr * 7 + atr * 0.5, tmpY, (count + ss) * rateX, (count + ss) * -rateY); g.drawEllipse(atr * 8 + atr * 0.5, tmpY, (count + ss) * (rateX + 0.4), (count + ss) * -(rateY + 2)); dmfBmd.fillRect(effectBmd.rect, 0x7FFFFFFF); mtrx.identity(); mtrx.translate(-tmpSprite.width * 0.5, 0); mtrx.translate(px, py); dmfBmd.draw(tmpSprite, mtrx); } else if (count < 12) { ctf.alphaOffset = (1 - (count - 5) / 12); effectBmd.colorTransform(effectBmd.rect, ctf); dmfBmd.colorTransform(dmfBmd.rect, ctf); } else { effectBmd.fillRect(effectBmd.rect, 0x00000000); dmfBmd.fillRect(effectBmd.rect, 0x7FFFFFFF); removeEventListener(Event.ENTER_FRAME, arguments.callee); dispatchEvent(new Event("finish")); } imgContainer.filters = [filter]; count += 1; } ); } } import flash.display.BitmapData; import flash.display.Graphics; import flash.display.Sprite; import flash.filters.DisplacementMapFilter; import flash.geom.ColorTransform; import flash.geom.Matrix; import flash.events.Event; class HitEffect0002 extends HitEffectBase { private var imgContainer:Sprite; private var effectBmd:BitmapData; private var dmfBmd:BitmapData; private var ctf:ColorTransform = new ColorTransform(); private var mtrx:Matrix = new Matrix(); public function HitEffect0002(imgContainer:Sprite, effectBmd:BitmapData, dmfBmd:BitmapData) { this.imgContainer = imgContainer this.effectBmd = effectBmd this.dmfBmd = dmfBmd } override public function start():void { var filter:DisplacementMapFilter = new DisplacementMapFilter( dmfBmd, ZERO_POINT, 8, 8, -20, -8 ); ctf = new ColorTransform(); var count:Number = 0; var tmpSprite:Sprite = new Sprite(); var g:Graphics = tmpSprite.graphics; addEventListener( Event.ENTER_FRAME, function():void { var atr:Number = 20; var ss:Number = 4; var rateX:Number = 44; var rateY:Number = 0.4; var px:Number = 100; var py:Number = 160; var tmpY:Number = 140; if (count < 4) { px = 100; g.clear(); g.beginFill(0xEEEE00, 0.6); g.drawEllipse(0, atr * 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 1, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 2, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 3, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 4, (count + ss) * rateX, (count + ss) * rateY); effectBmd.fillRect(effectBmd.rect, 0x00000000); mtrx.identity(); mtrx.translate(0, -tmpSprite.height * 0.5); mtrx.rotate(30 * (3.1415926 / 180)); mtrx.translate(px, py); effectBmd.draw(tmpSprite, mtrx); rateY = 6.0; g.clear(); g.beginFill(0x7FFFFF, 0.6); g.drawEllipse(0, atr * 0, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 1, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 2, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 3, (count + ss) * rateX, (count + ss) * rateY); g.drawEllipse(0, atr * 4, (count + ss) * rateX, (count + ss) * rateY); dmfBmd.fillRect(effectBmd.rect, 0x7FFFFFFF); mtrx.identity(); mtrx.translate(0, -tmpSprite.height * 0.5); mtrx.rotate(30 * (3.1415926 / 180)); mtrx.translate(px, py); dmfBmd.draw(tmpSprite, mtrx); } else if (count < 8) { filter = new DisplacementMapFilter( dmfBmd, ZERO_POINT, 8, 8, 20, -8 ); px = 360; g.clear(); g.beginFill(0xEEEE00, 0.6); g.drawEllipse(0, atr * 0, (count - 4 + ss) * rateX, (count - 4 + ss) * rateY); g.drawEllipse(0, atr * 1, (count - 4 + ss) * rateX, (count - 4 + ss) * rateY); g.drawEllipse(0, atr * 2, (count - 4 + ss) * rateX, (count - 4 + ss) * rateY); g.drawEllipse(0, atr * 3, (count - 4 + ss) * rateX, (count - 4 + ss) * rateY); g.drawEllipse(0, atr * 4, (count - 4 + ss) * rateX, (count - 4 + ss) * rateY); mtrx.identity(); mtrx.translate(0, -tmpSprite.height * 0.5); mtrx.rotate(150 * (3.1415926 / 180)); mtrx.translate(px, py); effectBmd.draw(tmpSprite, mtrx); rateY = 4.0; g.clear(); g.beginFill(0x7FFFFF, 0.6); g.drawEllipse(0, atr * 0, (count - 4 + ss) * rateX, (count - 4 + ss) * rateY); g.drawEllipse(0, atr * 1, (count - 4 + ss) * rateX, (count - 4 + ss) * rateY); g.drawEllipse(0, atr * 2, (count - 4 + ss) * rateX, (count - 4 + ss) * rateY); g.drawEllipse(0, atr * 3, (count - 4 + ss) * rateX, (count - 4 + ss) * rateY); g.drawEllipse(0, atr * 4, (count - 4 + ss) * rateX, (count - 4 + ss) * rateY); mtrx.identity(); mtrx.translate(0, -tmpSprite.height * 0.5); mtrx.rotate(150 * (3.1415926 / 180)); mtrx.translate(px, py); dmfBmd.draw(tmpSprite, mtrx); } else if (count < 12) { ctf.alphaOffset = (1 - (count - 5) / 12); effectBmd.colorTransform(effectBmd.rect, ctf); dmfBmd.colorTransform(dmfBmd.rect, ctf); } else { effectBmd.fillRect(effectBmd.rect, 0x00000000); dmfBmd.fillRect(effectBmd.rect, 0x7FFFFFFF); removeEventListener(Event.ENTER_FRAME, arguments.callee); dispatchEvent(new Event("finish")); } imgContainer.filters = [filter]; count += 1; } ); } } class Attack { private var _name:String; private var _ap:Number; private var _radius:Number; private var _effect:int; private var _voice:String; private var _narration:String; public function Attack(name:String, ap:Number, radius:Number, effect:int, voice:String, narration:String) { _name = name; _ap = ap; _radius = radius; _effect = effect; _voice = voice; _narration = narration; } public function get name():String { return _name; } public function get ap():Number { return _ap; } public function get radius():Number { return _radius; } public function get effect():int { return _effect; } public function get voice():String { return _voice; } public function get narration():String { return _narration; } } class WeakPoint { private var _x:Number; private var _y:Number; private var _radius:Number; private var _rate:Number; private var _count:int; private var _isHit:Boolean; public function WeakPoint(x:Number, y:Number, radius:Number, rate:Number) { _x = x; _y = y; _radius = radius; _rate = rate; _isHit = false; } public function get x():Number { return _x; } public function get y():Number { return _y; } public function get radius():Number { return _radius; } public function get rate():Number { return _rate; } public function get isHit():Boolean { return _isHit; } public function set isHit(value:Boolean):void { _isHit = value; } } import flash.display.Graphics; import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; class AttackCursor extends Sprite { private const W:Number = 200; private const H:Number = 15; private const DEGREE_TO_RADIAN:Number = Math.PI / 180; private var _text:TextField; public function AttackCursor() { var g:Graphics = graphics; g.lineStyle(1, 0xFF0000); g.drawCircle(0, 0, 8); var radius:Number = 21; var cRadius:Number = 17; g.moveTo(Math.cos(15 * DEGREE_TO_RADIAN) * radius, Math.sin(15 * DEGREE_TO_RADIAN) * radius); g.curveTo(cRadius, cRadius, Math.cos(75 * DEGREE_TO_RADIAN) * radius, Math.sin(75 * DEGREE_TO_RADIAN) * radius); g.moveTo(Math.cos(105 * DEGREE_TO_RADIAN) * radius, Math.sin(105 * DEGREE_TO_RADIAN) * radius); g.curveTo(-cRadius, cRadius, Math.cos(165 * DEGREE_TO_RADIAN) * radius, Math.sin(165 * DEGREE_TO_RADIAN) * radius); g.moveTo(Math.cos(195 * DEGREE_TO_RADIAN) *radius, Math.sin(195 * DEGREE_TO_RADIAN) * radius); g.curveTo(-cRadius, -cRadius, Math.cos(255 * DEGREE_TO_RADIAN) * radius, Math.sin(255 * DEGREE_TO_RADIAN) * radius); g.moveTo(Math.cos(285 * DEGREE_TO_RADIAN) * radius, Math.sin(285 * DEGREE_TO_RADIAN) * radius); g.curveTo(cRadius, -cRadius, Math.cos(345 * DEGREE_TO_RADIAN) * radius, Math.sin(345 * DEGREE_TO_RADIAN) * radius); // var lineLength:Number = 25; g.moveTo(0, -lineLength); g.lineTo(0, lineLength); g.moveTo(-lineLength, 0); g.lineTo(lineLength, 0); // var tmpW:Number = 2.5; var tmpH:Number = 3; g.beginFill(0xFF0000); g.moveTo(lineLength - tmpH, 0); g.lineTo(lineLength, tmpW); g.lineTo(lineLength, -tmpW); g.lineTo(lineLength - tmpH, 0); g.moveTo(-lineLength + tmpH, 0); g.lineTo(-lineLength, tmpW); g.lineTo(-lineLength, -tmpW); g.lineTo( -lineLength + tmpH, 0); g.moveTo(0, lineLength - tmpH); g.lineTo(tmpW, lineLength); g.lineTo(-tmpW, lineLength); g.lineTo(0, lineLength - tmpH); g.moveTo(0, -lineLength + tmpH); g.lineTo(tmpW, -lineLength); g.lineTo(-tmpW, -lineLength); g.lineTo(0, -lineLength + tmpH); g.endFill(); _text = new TextField(); var format:TextFormat = new TextFormat(); format.size = 10; _text.selectable = false; _text.autoSize = TextFieldAutoSize.CENTER; _text.textColor = 0xFF0000; _text.defaultTextFormat = format; _text.text = "ATTACK POINT"; _text.x = -_text.width * 0.5; _text.y = 23; addChild(_text); this.visible = false; } public function valid():void { visible = true; //TODO:演出処理 } public function invalid():void { visible = false; //TODO:演出処理 } } import flash.display.Graphics; import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; class CounterArea extends Sprite { private const W:Number = 200; private const H:Number = 15; private const DEGREE_TO_RADIAN:Number = Math.PI / 180; private var _text:TextField; public function CounterArea() { var g:Graphics = graphics; g.lineStyle(1, 0xFF0000); g.drawCircle(0, 0, 8); var radius:Number = 21; var cRadius:Number = 17; g.moveTo(Math.cos(15 * DEGREE_TO_RADIAN) * radius, Math.sin(15 * DEGREE_TO_RADIAN) * radius); g.curveTo(cRadius, cRadius, Math.cos(75 * DEGREE_TO_RADIAN) * radius, Math.sin(75 * DEGREE_TO_RADIAN) * radius); g.moveTo(Math.cos(105 * DEGREE_TO_RADIAN) * radius, Math.sin(105 * DEGREE_TO_RADIAN) * radius); g.curveTo(-cRadius, cRadius, Math.cos(165 * DEGREE_TO_RADIAN) * radius, Math.sin(165 * DEGREE_TO_RADIAN) * radius); g.moveTo(Math.cos(195 * DEGREE_TO_RADIAN) *radius, Math.sin(195 * DEGREE_TO_RADIAN) * radius); g.curveTo(-cRadius, -cRadius, Math.cos(255 * DEGREE_TO_RADIAN) * radius, Math.sin(255 * DEGREE_TO_RADIAN) * radius); g.moveTo(Math.cos(285 * DEGREE_TO_RADIAN) * radius, Math.sin(285 * DEGREE_TO_RADIAN) * radius); g.curveTo(cRadius, -cRadius, Math.cos(345 * DEGREE_TO_RADIAN) * radius, Math.sin(345 * DEGREE_TO_RADIAN) * radius); // var lineLength:Number = 25; g.moveTo(0, -lineLength); g.lineTo(0, lineLength); g.moveTo(-lineLength, 0); g.lineTo(lineLength, 0); // var tmpW:Number = 2.5; var tmpH:Number = 3; g.beginFill(0xFF0000); g.moveTo(lineLength - tmpH, 0); g.lineTo(lineLength, tmpW); g.lineTo(lineLength, -tmpW); g.lineTo(lineLength - tmpH, 0); g.moveTo(-lineLength + tmpH, 0); g.lineTo(-lineLength, tmpW); g.lineTo(-lineLength, -tmpW); g.lineTo( -lineLength + tmpH, 0); g.moveTo(0, lineLength - tmpH); g.lineTo(tmpW, lineLength); g.lineTo(-tmpW, lineLength); g.lineTo(0, lineLength - tmpH); g.moveTo(0, -lineLength + tmpH); g.lineTo(tmpW, -lineLength); g.lineTo(-tmpW, -lineLength); g.lineTo(0, -lineLength + tmpH); g.endFill(); _text = new TextField(); var format:TextFormat = new TextFormat(); format.size = 10; _text.selectable = false; _text.autoSize = TextFieldAutoSize.CENTER; _text.textColor = 0xFF0000; _text.defaultTextFormat = format; _text.text = "COUNTER AREA"; _text.x = -_text.width * 0.5; _text.y = 23; addChild(_text); this.visible = false; } public function valid():void { visible = true; //TODO:演出処理 } public function invalid():void { visible = false; //TODO:演出処理 } } import flash.display.Graphics; import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; class MessageBoard extends Sprite { public var id:int; private const W:Number = 360; private const H:Number = 140; private var _text:TextField; private var ru:Sprite = new Sprite(); private var lu:Sprite = new Sprite(); private var rd:Sprite = new Sprite(); private var ld:Sprite = new Sprite(); public function MessageBoard() { addChild(ru); addChild(lu); addChild(rd); addChild(ld); var g:Graphics = graphics; g = lu.graphics; g.beginFill(0xCCCCCC); g.lineStyle(); g.moveTo(0, 0); g.lineTo(5, 0); g.lineTo(5, 2.5); g.lineTo(2.5, 2.5); g.lineTo(0, 0); g.beginFill(0x999999); g.lineStyle(); g.moveTo(0, 0); g.lineTo(2.5, 2.5); g.lineTo(2.5, 5); g.lineTo(0, 5); g.lineTo(0, 0); g = ru.graphics; g.beginFill(0xCCCCCC); g.lineStyle(); g.moveTo(0, 0); g.lineTo(-5, 0); g.lineTo(-5, 2.5); g.lineTo(-2.5, 2.5); g.lineTo(0, 0); g.beginFill(0x666666); g.lineStyle(); g.moveTo(0, 0); g.lineTo(-2.5, 2.5); g.lineTo(-2.5, 5); g.lineTo(0, 5); g.lineTo(0, 0); g = ld.graphics; g.beginFill(0x333333); g.lineStyle(); g.moveTo(0, 0); g.lineTo(5, 0); g.lineTo(5, -2.5); g.lineTo(2.5, -2.5); g.lineTo(0, 0); g.beginFill(0x999999); g.lineStyle(); g.moveTo(0, 0); g.lineTo(2.5, -2.5); g.lineTo(2.5, -5); g.lineTo(0, -5); g.lineTo(0, 0); g = rd.graphics; g.beginFill(0x333333); g.lineStyle(); g.moveTo(0, 0); g.lineTo(-5, 0); g.lineTo(-5, -2.5); g.lineTo(-2.5, -2.5); g.lineTo(0, 0); g.beginFill(0x666666); g.lineStyle(); g.moveTo(0, 0); g.lineTo(-2.5, -2.5); g.lineTo(-2.5, -5); g.lineTo(0, -5); g.lineTo(0, 0); _text = new TextField(); var format:TextFormat = new TextFormat(); format.size = 16; _text.selectable = false; _text.autoSize = TextFieldAutoSize.LEFT; _text.textColor = 0xFFFFFF; _text.defaultTextFormat = format; _text.x = 10; _text.y = 10; addChild(_text); visible = false; } private var message:Array = ["", "", "", "", ""]; public function add(txt:String):void { if (message[0] == "") { message[0] = txt; } else if (message[1] == "") { message[1] = txt; } else if (message[2] == "") { message[2] = txt; } else if (message[3] == "") { message[3] = txt; } else if (message[4] == "") { message[4] = txt; } else if (message[5] == "") { message[5] = txt; } else { message[0] = message[1]; message[1] = message[2]; message[2] = message[3]; message[3] = message[4]; message[4] = message[5]; message[5] = txt; } display(); } public function clear():void { message = ["", "", "", "", "", ""]; display(); } private function display():void { _text.text = ""; _text.appendText(message[0]); _text.appendText("\n"); _text.appendText(message[1]); _text.appendText("\n"); _text.appendText(message[2]); _text.appendText("\n"); _text.appendText(message[3]); _text.appendText("\n"); _text.appendText(message[4]); _text.appendText("\n"); _text.appendText(message[5]); } public function valid():void { visible = true; _text.visible = false; var fr:int = 12; var g:Graphics = graphics; var count:Number = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count <= fr) { ru.x = W * 0.5 / fr * count + W * 0.5; ru.y = -H * 0.5 / fr * count + H * 0.5; lu.x = -W * 0.5 / fr * count + W * 0.5; lu.y = -H * 0.5 / fr * count + H * 0.5; rd.x = W * 0.5 / fr * count + W * 0.5; rd.y = H * 0.5 / fr * count + H * 0.5; ld.x = -W * 0.5 / fr * count + W * 0.5; ld.y = H * 0.5 / fr * count + H * 0.5; g.clear(); g.beginFill(0x001122); g.lineStyle(0, 0xDDDDDD); g.drawRect(lu.x, lu.y, rd.x - lu.x, rd.y - lu.y); //if(count % 3 == 0) g.beginFill(0x0099CC, 0.2); //else //g.beginFill(0xFFFFFF, 0.6); g.lineStyle(0, 0xCCCCCC); g.moveTo(lu.x, ld.y); g.lineTo(lu.x, lu.y); g.lineTo(ru.x, lu.y); g.lineStyle(0, 0x333333); g.lineTo(ru.x, ld.y); g.lineTo(lu.x, ld.y); } else { g.clear(); g.beginFill(0x001122); g.lineStyle(0, 0xDDDDDD); g.drawRect(lu.x, lu.y, rd.x, rd.y); g.beginFill(0x0099CC, 0.2); g.lineStyle(0, 0xCCCCCC); g.moveTo(lu.x, ld.y); g.lineTo(lu.x, lu.y); g.lineTo(ru.x, lu.y); g.lineStyle(0, 0x333333); g.lineTo(ru.x, ld.y); g.lineTo(lu.x, ld.y); //mouseEnabled = true; _text.visible = true; dispatchEvent(new Event("valid")); removeEventListener(Event.ENTER_FRAME, arguments.callee); } count += 1; } ); } public function invalid():void { visible = true; //mouseEnabled = false; _text.visible = false; var fr:int = 6; var g:Graphics = graphics; var count:Number = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count <= fr) { ru.x = W * 0.5 * (fr - count + 1) / fr; ru.y = -H * 0.5 * (fr - count + 1) / fr; lu.x = -W * 0.5 * (fr - count + 1) / fr; lu.y = -H * 0.5 * (fr - count + 1) / fr; rd.x = W * 0.5 * (fr - count + 1) / fr; rd.y = H * 0.5 * (fr - count + 1) / fr; ld.x = -W * 0.5 * (fr - count + 1) / fr; ld.y = H * 0.5 * (fr - count + 1) / fr; g.clear(); g.beginFill(0x001122); g.lineStyle(0, 0xDDDDDD); g.drawRect(lu.x, lu.y, rd.x * 2, rd.y * 2); if(count % 3 == 0) { g.beginFill(0x0099CC, 0.2); } else { g.beginFill(0xFFFFFF, 0.6); } g.lineStyle(0, 0xCCCCCC); g.moveTo(lu.x, ld.y); g.lineTo(lu.x, lu.y); g.lineTo(ru.x, lu.y); g.lineStyle(0, 0x333333); g.lineTo(ru.x, ld.y); g.lineTo(lu.x, ld.y); } else { visible = false; dispatchEvent(new Event("invalid")); removeEventListener(Event.ENTER_FRAME, arguments.callee); } count += 1; } ); } } import flash.display.Graphics; import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; class Pannel extends Sprite { public var id:int; private const W:Number = 80; private const H:Number = 20; private var _text:TextField; private var ru:Sprite = new Sprite(); private var lu:Sprite = new Sprite(); private var rd:Sprite = new Sprite(); private var ld:Sprite = new Sprite(); public function Pannel(txt:String) { addChild(ru); addChild(lu); addChild(rd); addChild(ld); var g:Graphics = graphics; g.beginFill(0x001122); g.lineStyle(0, 0xDDDDDD); g.drawRect(-W * 0.5, -H * 0.5, W, H); g = lu.graphics; g.beginFill(0xCCCCCC); g.lineStyle(); g.moveTo(0, 0); g.lineTo(5, 0); g.lineTo(5, 2.5); g.lineTo(2.5, 2.5); g.lineTo(0, 0); g.beginFill(0x999999); g.lineStyle(); g.moveTo(0, 0); g.lineTo(2.5, 2.5); g.lineTo(2.5, 5); g.lineTo(0, 5); g.lineTo(0, 0); g = ru.graphics; g.beginFill(0xCCCCCC); g.lineStyle(); g.moveTo(0, 0); g.lineTo(-5, 0); g.lineTo(-5, 2.5); g.lineTo(-2.5, 2.5); g.lineTo(0, 0); g.beginFill(0x666666); g.lineStyle(); g.moveTo(0, 0); g.lineTo(-2.5, 2.5); g.lineTo(-2.5, 5); g.lineTo(0, 5); g.lineTo(0, 0); g = ld.graphics; g.beginFill(0x333333); g.lineStyle(); g.moveTo(0, 0); g.lineTo(5, 0); g.lineTo(5, -2.5); g.lineTo(2.5, -2.5); g.lineTo(0, 0); g.beginFill(0x999999); g.lineStyle(); g.moveTo(0, 0); g.lineTo(2.5, -2.5); g.lineTo(2.5, -5); g.lineTo(0, -5); g.lineTo(0, 0); g = rd.graphics; g.beginFill(0x333333); g.lineStyle(); g.moveTo(0, 0); g.lineTo(-5, 0); g.lineTo(-5, -2.5); g.lineTo(-2.5, -2.5); g.lineTo(0, 0); g.beginFill(0x666666); g.lineStyle(); g.moveTo(0, 0); g.lineTo(-2.5, -2.5); g.lineTo(-2.5, -5); g.lineTo(0, -5); g.lineTo(0, 0); _text = new TextField(); var format:TextFormat = new TextFormat(); format.size = 12; _text.mouseEnabled = false; _text.selectable = false; _text.autoSize = TextFieldAutoSize.CENTER; _text.textColor = 0xFFFFFF; _text.defaultTextFormat = format; _text.text = txt; _text.x = -_text.width * 0.5; _text.y = -_text.height * 0.5; addChild(_text); visible = false; } public function valid():void { visible = true; _text.visible = false; var fr:int = 8; var g:Graphics = graphics; var count:Number = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count <= fr) { ru.x = W * 0.5 / fr * count; ru.y = -H * 0.5 / fr * count; lu.x = -W * 0.5 / fr * count; lu.y = -H * 0.5 / fr * count; rd.x = W * 0.5 / fr * count; rd.y = H * 0.5 / fr * count; ld.x = -W * 0.5 / fr * count; ld.y = H * 0.5 / fr * count; g.clear(); g.beginFill(0x001122); g.lineStyle(0, 0xDDDDDD); g.drawRect(lu.x, lu.y, rd.x * 2, rd.y * 2); if(count % 3 == 0) g.beginFill(0x0099CC, 0.2); else g.beginFill(0xFFFFFF, 0.6); g.lineStyle(0, 0xCCCCCC); g.moveTo(lu.x, ld.y); g.lineTo(lu.x, lu.y); g.lineTo(ru.x, lu.y); g.lineStyle(0, 0x333333); g.lineTo(ru.x, ld.y); g.lineTo(lu.x, ld.y); } else { g.clear(); g.beginFill(0x001122); g.lineStyle(0, 0xDDDDDD); g.drawRect(lu.x, lu.y, rd.x * 2, rd.y * 2); g.beginFill(0x0099CC, 0.2); g.lineStyle(0, 0xCCCCCC); g.moveTo(lu.x, ld.y); g.lineTo(lu.x, lu.y); g.lineTo(ru.x, lu.y); g.lineStyle(0, 0x333333); g.lineTo(ru.x, ld.y); g.lineTo(lu.x, ld.y); buttonMode = true; mouseEnabled = true; _text.visible = true; dispatchEvent(new Event("valid")); removeEventListener(Event.ENTER_FRAME, arguments.callee); } count += 1; } ); } public function invalid():void { visible = true; buttonMode = false; mouseEnabled = false; _text.visible = false; var fr:int = 6; var g:Graphics = graphics; var count:Number = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count <= fr) { ru.x = W * 0.5 * (fr - count + 1) / fr; ru.y = -H * 0.5 * (fr - count + 1) / fr; lu.x = -W * 0.5 * (fr - count + 1) / fr; lu.y = -H * 0.5 * (fr - count + 1) / fr; rd.x = W * 0.5 * (fr - count + 1) / fr; rd.y = H * 0.5 * (fr - count + 1) / fr; ld.x = -W * 0.5 * (fr - count + 1) / fr; ld.y = H * 0.5 * (fr - count + 1) / fr; g.clear(); g.beginFill(0x001122); g.lineStyle(0, 0xDDDDDD); g.drawRect(lu.x, lu.y, rd.x * 2, rd.y * 2); if(count % 3 == 0) { g.beginFill(0x0099CC, 0.2); } else { g.beginFill(0xFFFFFF, 0.6); } g.lineStyle(0, 0xCCCCCC); g.moveTo(lu.x, ld.y); g.lineTo(lu.x, lu.y); g.lineTo(ru.x, lu.y); g.lineStyle(0, 0x333333); g.lineTo(ru.x, ld.y); g.lineTo(lu.x, ld.y); } else { visible = false; dispatchEvent(new Event("invalid")); removeEventListener(Event.ENTER_FRAME, arguments.callee); } count += 1; } ); } } import flash.display.Graphics; import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; class LifeGauge extends Sprite { public var id:int; private const W:Number = 200; private const H:Number = 15; private var _text:TextField; private var ru:Sprite = new Sprite(); private var lu:Sprite = new Sprite(); private var rd:Sprite = new Sprite(); private var ld:Sprite = new Sprite(); private var _life:Sprite; private var _maxHP:Number; private var _hp:Number; private var _side:Number; public function LifeGauge(side:int = 0) { _life = new Sprite(); if (side == 0) { _side = -1; } else { _side = 1; } addChild(_life); var g:Graphics = _life.graphics; g.beginFill(0xFF0000, 0.6); g.drawRect(0, 0, W, H); addChild(ru); addChild(lu); addChild(rd); addChild(ld); g = lu.graphics; g.beginFill(0xCCCCCC); g.lineStyle(); g.moveTo(0, 0); g.lineTo(5, 0); g.lineTo(5, 2.5); g.lineTo(2.5, 2.5); g.lineTo(0, 0); g.beginFill(0x999999); g.lineStyle(); g.moveTo(0, 0); g.lineTo(2.5, 2.5); g.lineTo(2.5, 5); g.lineTo(0, 5); g.lineTo(0, 0); g = ru.graphics; g.beginFill(0xCCCCCC); g.lineStyle(); g.moveTo(0, 0); g.lineTo(-5, 0); g.lineTo(-5, 2.5); g.lineTo(-2.5, 2.5); g.lineTo(0, 0); g.beginFill(0x666666); g.lineStyle(); g.moveTo(0, 0); g.lineTo(-2.5, 2.5); g.lineTo(-2.5, 5); g.lineTo(0, 5); g.lineTo(0, 0); g = ld.graphics; g.beginFill(0x333333); g.lineStyle(); g.moveTo(0, 0); g.lineTo(5, 0); g.lineTo(5, -2.5); g.lineTo(2.5, -2.5); g.lineTo(0, 0); g.beginFill(0x999999); g.lineStyle(); g.moveTo(0, 0); g.lineTo(2.5, -2.5); g.lineTo(2.5, -5); g.lineTo(0, -5); g.lineTo(0, 0); g = rd.graphics; g.beginFill(0x333333); g.lineStyle(); g.moveTo(0, 0); g.lineTo(-5, 0); g.lineTo(-5, -2.5); g.lineTo(-2.5, -2.5); g.lineTo(0, 0); g.beginFill(0x666666); g.lineStyle(); g.moveTo(0, 0); g.lineTo(-2.5, -2.5); g.lineTo(-2.5, -5); g.lineTo(0, -5); g.lineTo(0, 0); _text = new TextField(); var format:TextFormat = new TextFormat(); format.size = 16; _text.selectable = false; _text.autoSize = TextFieldAutoSize.LEFT; _text.textColor = 0xFFFFFF; _text.defaultTextFormat = format; _text.x = 10; _text.y = 10; addChild(_text); visible = false; } public function valid():void { visible = true; _text.visible = false; var fr:int = 12; var g:Graphics = graphics; var count:Number = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count <= fr) { ru.x = W * 0.5 / fr * count + W * 0.5; ru.y = -H * 0.5 / fr * count + H * 0.5; lu.x = -W * 0.5 / fr * count + W * 0.5; lu.y = -H * 0.5 / fr * count + H * 0.5; rd.x = W * 0.5 / fr * count + W * 0.5; rd.y = H * 0.5 / fr * count + H * 0.5; ld.x = -W * 0.5 / fr * count + W * 0.5; ld.y = H * 0.5 / fr * count + H * 0.5; _life.x = lu.x; _life.y = lu.y; _life.width = rd.x - lu.x; _life.height = rd.y - lu.y; g.clear(); //if(count % 3 == 0) g.beginFill(0x0099CC, 0.2); //else //g.beginFill(0xFFFFFF, 0.6); g.lineStyle(0, 0xCCCCCC); g.moveTo(lu.x, ld.y); g.lineTo(lu.x, lu.y); g.lineTo(ru.x, lu.y); g.lineStyle(0, 0x333333); g.lineTo(ru.x, ld.y); g.lineTo(lu.x, ld.y); } else { g.clear(); g.beginFill(0x0099CC, 0.2); g.lineStyle(0, 0xCCCCCC); g.moveTo(lu.x, ld.y); g.lineTo(lu.x, lu.y); g.lineTo(ru.x, lu.y); g.lineStyle(0, 0x333333); g.lineTo(ru.x, ld.y); g.lineTo(lu.x, ld.y); _life.x = lu.x; _life.y = lu.y; _life.width = rd.x - lu.x; _life.height = rd.y - lu.y; if (_side == -1) { _life.scaleX = -1; _life.x = W; } mouseEnabled = true; _text.visible = true; dispatchEvent(new Event("valid")); removeEventListener(Event.ENTER_FRAME, arguments.callee); } count += 1; } ); } public function invalid():void { visible = true; buttonMode = false; mouseEnabled = false; _text.visible = false; var fr:int = 6; var g:Graphics = graphics; var count:Number = 0; addEventListener( Event.ENTER_FRAME, function():void { if (count <= fr) { ru.x = W * 0.5 * (fr - count + 1) / fr; ru.y = -H * 0.5 * (fr - count + 1) / fr; lu.x = -W * 0.5 * (fr - count + 1) / fr; lu.y = -H * 0.5 * (fr - count + 1) / fr; rd.x = W * 0.5 * (fr - count + 1) / fr; rd.y = H * 0.5 * (fr - count + 1) / fr; ld.x = -W * 0.5 * (fr - count + 1) / fr; ld.y = H * 0.5 * (fr - count + 1) / fr; g.clear(); g.beginFill(0x001122); g.lineStyle(0, 0xDDDDDD); g.drawRect(lu.x, lu.y, rd.x * 2, rd.y * 2); if(count % 3 == 0) { g.beginFill(0x0099CC, 0.2); } else { g.beginFill(0xFFFFFF, 0.6); } g.lineStyle(0, 0xCCCCCC); g.moveTo(lu.x, ld.y); g.lineTo(lu.x, lu.y); g.lineTo(ru.x, lu.y); g.lineStyle(0, 0x333333); g.lineTo(ru.x, ld.y); g.lineTo(lu.x, ld.y); } else { visible = false; dispatchEvent(new Event("invalid")); removeEventListener(Event.ENTER_FRAME, arguments.callee); } count += 1; } ); } public function setHP(maxHP:Number):void { _hp = _maxHP = maxHP; } public function lifeCalculate(damage:Number):Boolean { var isDead:Boolean = false; _hp -= damage; if (_hp < 0) { _hp = 0; isDead = true; } _life.scaleX = (_hp / _maxHP) * _side; return isDead; } } Code Fullscreen Preview Fullscreen WinField95 kuroarizuka ton_ shiuchi1 siouxcitizen.. matacat : あとは音があれば 背景ロケ地:高梁川 message translate dispatchEvent callee identity DisplacementMapFilter removeEventListener addChild filter rotate TextFormat Event.ENTER_FRAME mouseEnabled Math.cos height size Math.sin Tweener.init filters Matrix sort new page view favorite forked pv0 forked from: forked from: GYAO.. a5qm1 forked:0 favorite:0lines:2196 (diff:1)