forked from: GYAOS_sample
forked from GYAOS_sample (diff: 1146)
青色がプレイヤー、赤色が敵モンスターです。 戦闘はよくあるターン制です。 画面をタイミングよくクリックして、アタックボールを連鎖させて消すことができるとダメージが大きくなります。
♥2 |
Line 996 |
Modified 2011-01-31 23:42:19 |
MIT License
archived:2017-03-04 11:04:07
| (replaced)
Related images
- 384dff5908315fd8d47079e0458b5f153dc9b1a0
- c5305ae6b0ca97d87b989bc6c22d50f2d09a67f5
- 39ae39536a5b27a8020b8687ffdef82b24742f57
- f2c485ad993ddac1e0d528d6c905b6c0349951da
- 4f40bf2621faa791d59900be37589b68b30d010a
- 52999904f7dd1494d9b57c8b5e82392914eb93f0
- 6e5e6974a253f55d47d3f33052a71e85647224ff
- f199f047e98cfdbb7ec8e2a7c7396f389cce9ed3
- 2ace1c6d1a11068f5e5ca795dd1f58a474141ef6
- cf91a624bc5b5b8653a7aac087429026e713899b
- c213687a041e02584ef596de2e89212de0c99111
- 7f03201a5613b1f08d0ada04464fb87a6a80ba53
- 8cefbfc5add91d107907fa1abd4c80e23975b673
- dc44ca24859ee6dbef77410d9174cb7a50bbd4e0
- 35282f113a4cc6239764b84b2aabb533f985b945
- 7b144676411639c9ca04748a94bdb50f4eed5727
- 0b10da40b4407fa294f6c853d065432af60c68ea
- 66bb20ff3ae56ec294d63c3ef349707fef6e01a3
- 648b8c30fbc551881cf1ce21b573da809d92018a
- d27d4b59d6fb0132ebd6ed6a28390a0c0b5ef84c
- 113475b745a7838bf26f909f00429795827cb833
- cfaf512be52b2c441f5eeee16dcd65b51ad3e0be
- 79df81c3eb1ead143408f584d81b1e2a395cc643
- 9478092c9457783f43a9c1794b2e79759601fcb2
- dcc55b2404bc880be802e9515829e69e6c6ea896
- b023093e3d74ac16676d0fde00598130358d6009
- 2b27fb60109a906fe880cf2a128065079a2609db
ActionScript3 source code
/**
* Copyright qbo ( http://wonderfl.net/user/qbo )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/4D7N
*/
// forked from hacker_9vjnvtdz's GYAOS_sample
/**
* 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
*/
/*
attak
*/
package
{
import caurina.transitions.Tweener;
import flash.display.Loader;
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.net.URLRequest;
import flash.system.LoaderContext;
import flash.utils.Timer;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.ui.Mouse;
[SWF(width="465", height="465", frameRate="30", backgroundColor="#FFFFFF")]
public class Main extends MovieClip
{
private var _turn:Boolean = true;
public function get turn ():Boolean { return _turn; }
public function set turn (value:Boolean):void
{
_turn = value;
_commandView.mode =
_clickCursor.mode = _turn;
}
private var _loader:Loader;
private var _hpView:HpView;
private var _bg:Loader;
private var _commandView:CommandView;
private var _blinkTimer:Timer;
private var _filter:Sprite;
private var _statusTf:TextField;
private var _clickCursor:ClickCursor;
private var _chara1:Character = new PlayerCharacter;
private var _chara2:Character = new NonPlayerCharacter;
function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
Mouse.hide();
_blinkTimer = new Timer(50, 10);
_bg = new Loader;
_bg.load(new URLRequest(SkinPath.BACKGROUND));
addChild(_bg);
var context:LoaderContext = new LoaderContext(true);
_loader = new Loader;
_loader.load(new URLRequest(SkinPath.MONSTER), context);
addChild(_loader);
_commandView = new CommandView(_chara1, _chara2);
_commandView.y = stage.stageHeight - 100;
addChild(_commandView);
_hpView = new HpView(_chara1, _chara2);
addChild(_hpView);
_filter = new Sprite;
_filter.graphics.beginFill(0x000000, 1);
_filter.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
_filter.graphics.endFill();
_filter.alpha = 0;
addChild(_filter);
var format:TextFormat = new TextFormat;
format.color = "0xffffff";
format.font = "_sans";
format.size = 40;
format.align = "center";
_statusTf = new TextField;
_statusTf.selectable = false;
_statusTf.defaultTextFormat = format;
_statusTf.y = 200;
_statusTf.width = 465;
_statusTf.text = "Game Over";
_filter.addChild(_statusTf);
_clickCursor = new ClickCursor;
addChild(_clickCursor);
turn = true;
_blinkTimer.addEventListener(TimerEvent.TIMER,
function (e:TimerEvent):void
{
_loader.visible = (_blinkTimer.currentCount % 2== 1) ? false : true;
} );
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,
function(e:Event):void
{
_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, arguments.callee);
_loader.x = stage.stageWidth/2 - _loader.width/2;
_loader.y = stage.stageHeight/2 - _loader.height/2 - 40;
} );
_commandView.addEventListener(CommandView.COMBO_COUNT_END,
function(e:Event):void
{
Tweener.addTween( { }, { delay:0.5, onComplete:
function():void {
if (_turn)
{
atcPlayer();
}
else
{
atcNonPlayer();
}
turn = !turn;
} } );
} );
_commandView.addEventListener(CommandView.ATTACK_CLICK,
function(e:Event):void
{
_clickCursor.mode = false;
} );
addEventListener(Event.ENTER_FRAME,
function (e:Event):void
{
_clickCursor.x = mouseX;
_clickCursor.y = mouseY;
} );
}
private function atcPlayer():void
{
var target:Character = _chara2;
target.currentHp -= Lib.attack(40, 40, _commandView.combo);
if (target.currentHp < 1)
{
target.currentHp = 0;
_loader.visible = false;
_commandView.roulette(true);
_statusTf.text = "You Win !";
_clickCursor.visible = false;
Tweener.addTween(_filter, { delay:2, alpha:1, time:2 } );
}
else
{
_blinkTimer.reset();
_blinkTimer.start();
}
_hpView.update();
}
private function atcNonPlayer():void
{
var target:Character = _chara1;
target.currentHp -= Lib.attack(40, 40, _commandView.combo);
if (target.currentHp < 1)
{
target.currentHp = 0;
_commandView.roulette(true);
_statusTf.text = "Game Over ...";
_clickCursor.visible = false;
Tweener.addTween(_filter, { delay:2, alpha:1, time:2 } );
}
else
{
var timer:Timer = new Timer(50, 10);
timer.addEventListener(TimerEvent.TIMER,
function (e:TimerEvent):void
{
var pos:Array =
[
_hpView.y + 10, _hpView.y - 10,
_commandView.y + 10, _commandView.y - 10
];
if (timer.currentCount % 2== 1)
{
_hpView.y = pos[0];
_commandView.y = pos[2];
}
else
{
_hpView.y = pos[1];
_commandView.y = pos[3];
}
} );
timer.start();
}
_hpView.update();
}
}
}
import caurina.transitions.Tweener;
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.display.Loader;
import flash.display.Shape;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.utils.Timer;
import flash.net.URLRequest;
final class SkinPath
{
//public static const MONSTER:String = "http://assets.wonderfl.net/images/related_images/6/6d/6d2a/6d2aac9165308e05d07f52232f99bfe9d52a06fb"
public static const MONSTER:String = "http://assets.wonderfl.net/images/related_images/9/9a/9a67/9a674310835d956620db269594b14241d8c079ba"
//public static const MONSTER:String = "http://assets.wonderfl.net/images/related_images/5/57/5728/5728bb5057da70c62a2bff824fac59cf139bcb44"
public static const BACKGROUND:String = "http://assets.wonderfl.net/images/related_images/f/f2/f2c4/f2c485ad993ddac1e0d528d6c905b6c0349951da";
public static const BAR:String = "http://assets.wonderfl.net/images/related_images/3/38/384d/384dff5908315fd8d47079e0458b5f153dc9b1a0";
public static const BAR_SPACE_L:String = "http://assets.wonderfl.net/images/related_images/c/c5/c530/c5305ae6b0ca97d87b989bc6c22d50f2d09a67f5";
public static const BAR_SPACE_R:String = "http://assets.wonderfl.net/images/related_images/3/39/39ae/39ae39536a5b27a8020b8687ffdef82b24742f57";
public static const COMMAND_VIEW_BG:String = "http://assets.wonderfl.net/images/related_images/d/dc/dcc5/dcc55b2404bc880be802e9515829e69e6c6ea896";
public static const COMMAND_BALL_1:String = "http://assets.wonderfl.net/images/related_images/6/64/648b/648b8c30fbc551881cf1ce21b573da809d92018a";
public static const COMMAND_BALL_2:String = "http://assets.wonderfl.net/images/related_images/d/d2/d27d/d27d4b59d6fb0132ebd6ed6a28390a0c0b5ef84c";
public static const COMMAND_BALL_3:String = "http://assets.wonderfl.net/images/related_images/1/11/1134/113475b745a7838bf26f909f00429795827cb833";
public static const COMMAND_BALL_4:String = "http://assets.wonderfl.net/images/related_images/c/cf/cfaf/cfaf512be52b2c441f5eeee16dcd65b51ad3e0be";
public static const COMBO_A_1:String = "http://assets.wonderfl.net/images/related_images/4/4f/4f40/4f40bf2621faa791d59900be37589b68b30d010a";
public static const COMBO_A_2:String = "http://assets.wonderfl.net/images/related_images/5/52/5299/52999904f7dd1494d9b57c8b5e82392914eb93f0";
public static const COMBO_A_3:String = "http://assets.wonderfl.net/images/related_images/6/6e/6e5e/6e5e6974a253f55d47d3f33052a71e85647224ff";
public static const COMBO_A_4:String = "http://assets.wonderfl.net/images/related_images/f/f1/f199/f199f047e98cfdbb7ec8e2a7c7396f389cce9ed3";
public static const COMBO_A_5:String = "http://assets.wonderfl.net/images/related_images/2/2a/2ace/2ace1c6d1a11068f5e5ca795dd1f58a474141ef6";
public static const COMBO_A_6:String = "http://assets.wonderfl.net/images/related_images/c/cf/cf91/cf91a624bc5b5b8653a7aac087429026e713899b";
public static const COMBO_A_7:String = "http://assets.wonderfl.net/images/related_images/c/c2/c213/c213687a041e02584ef596de2e89212de0c99111";
public static const COMBO_B_1:String = "http://assets.wonderfl.net/images/related_images/7/7f/7f03/7f03201a5613b1f08d0ada04464fb87a6a80ba53";
public static const COMBO_B_2:String = "http://assets.wonderfl.net/images/related_images/8/8c/8cef/8cefbfc5add91d107907fa1abd4c80e23975b673";
public static const COMBO_B_3:String = "http://assets.wonderfl.net/images/related_images/d/dc/dc44/dc44ca24859ee6dbef77410d9174cb7a50bbd4e0";
public static const COMBO_B_4:String = "http://assets.wonderfl.net/images/related_images/3/35/3528/35282f113a4cc6239764b84b2aabb533f985b945";
public static const COMBO_B_5:String = "http://assets.wonderfl.net/images/related_images/7/7b/7b14/7b144676411639c9ca04748a94bdb50f4eed5727";
public static const COMBO_B_6:String = "http://assets.wonderfl.net/images/related_images/0/0b/0b10/0b10da40b4407fa294f6c853d065432af60c68ea";
public static const COMBO_B_7:String = "http://assets.wonderfl.net/images/related_images/6/66/66bb/66bb20ff3ae56ec294d63c3ef349707fef6e01a3";
public static const CURSOR_A:String = "http://assets.wonderfl.net/images/related_images/b/b0/b023/b023093e3d74ac16676d0fde00598130358d6009";
public static const CURSOR_B:String = "http://assets.wonderfl.net/images/related_images/2/2b/2b27/2b27fb60109a906fe880cf2a128065079a2609db";
public static const COMMAND_LIST_BG_A:String = "http://assets.wonderfl.net/images/related_images/7/79/79df/79df81c3eb1ead143408f584d81b1e2a395cc643";
public static const COMMAND_LIST_BG_B:String = "http://assets.wonderfl.net/images/related_images/9/94/9478/9478092c9457783f43a9c1794b2e79759601fcb2";
}
class Core extends Sprite
{
protected var _container:Sprite;
protected var _mode:Boolean = true;
public function get mode (): Boolean { return _mode; }
public function set mode (value:Boolean):void
{
_mode = value;
}
function Core ():void
{
_container = new Sprite;
addChild(_container);
}
}
class CommandView extends Core
{
public static const SLIDE_END:String = "slideEnd";
public static const COMBO_COUNT:String = "comboCount";
public static const COMBO_COUNT_END:String = "comboCountEnd";
public static const ATTACK_CLICK:String = "attackClick";
private var _chara1:Character;
private var _chara2:Character;
private var _isBattleEnd:Boolean = false;
private var _length:int = 12;
private var _speed:Number = 0.2;
private var _transition:String = "linear";
private var _comboCounting:Boolean = false;
private var _loader:Loader;
private var _comboView:ComboView;
private var _commandList:CommandListView;
private var _cursor:CommandBallCursor;
private var _filter:Shape;
private var _turnTf:TextField;
public function get combo ():int { return _comboView.combo; }
override public function set mode (value:Boolean):void
{
super.mode = value;
_cursor.mode =
_comboView.mode =
_commandList.mode = value;
_turnTf.text = ((_mode) ? _chara1.name : _chara2.name );
if (!_isBattleEnd)
{
roulette();
}
}
function CommandView (chara1:Character, chara2:Character):void
{
_chara1 = chara1;
_chara2 = chara2;
_loader = new Loader;
_loader.load(new URLRequest(SkinPath.COMMAND_VIEW_BG));
_loader.y = -19;
addChildAt(_loader,0);
compAddBall();
var ball:CommandBall = getBallAt(0);
_filter = new Shape;
_filter.alpha = 0;
_filter.graphics.beginFill(0x000000, 0.2);
_filter.graphics.drawRect(0, 0, 465, ball.height);
addChild(_filter);
var containerMask:Shape = new Shape;
containerMask.graphics.beginFill(0);
containerMask.graphics.drawRect(0, 0, 465, ball.height);
addChild(containerMask);
_container.mask = containerMask;
_comboView = new ComboView;
_comboView.y = -160;
addChild(_comboView);
_cursor = new CommandBallCursor;
_cursor.visible = false;
addChild(_cursor);
_commandList = new CommandListView(_chara1,_chara2);
_commandList.x = 465 / 2 - 454/2;
_commandList.y = 60;
addChild(_commandList);
var format:TextFormat = new TextFormat;
format.color = "0xffffff";
format.font = "_sans";
format.size = 14;
format.bold = true;
format.align = "right";
_turnTf = new TextField;
_turnTf.defaultTextFormat = format;
_turnTf.y = -20;
_turnTf.width = 465;
addChild(_turnTf);
addEventListener(SLIDE_END,
function(e:Event):void
{
compAddBall();
checkColor();
} );
addEventListener(COMBO_COUNT_END,
function(e:Event):void
{
_comboCounting = false;
} );
}
private function addBallAt (index:int=-1):CommandBall
{
if (index == -1)
{
index = _container.numChildren;
}
var ball:CommandBall = new CommandBall;
ball.x = ball.width * index;
_container.addChildAt(ball, index);
if (index > 0)
{
var pball:CommandBall = getBallAt(index - 1);
ball.setOtherColor(pball.color);
}
slide();
return ball;
}
private function removeBallAt (index:int):void
{
_container.removeChildAt(index);
slide();
}
private function getBallAt(index:int):CommandBall
{
return _container.getChildAt(index) as CommandBall;
}
private function compAddBall ():void
{
var len:int = _length - _container.numChildren;
if (len > 0)
{
for (var i:int = 0; i < len; i++)
{
addBallAt();
}
}
}
private function slide ():void
{
sortIndex();
Tweener.removeAllTweens();
var loop:int = 0;
for (var i:int = 0, len:int = _container.numChildren; i < len; i++)
{
var ball:CommandBall = (getBallAt(i) as CommandBall);
Tweener.addTween(ball, {
x: ball.width * i,
time: _speed,
transition: _transition,
onComplete: function():void
{
loop++;
if (_container.numChildren == loop)
{
dispatchEvent(new Event(SLIDE_END));
}
}
});
}
}
private function checkColor ():void
{
if (_container.numChildren < 2)
{
return;
}
var isCommonColor:Boolean;
for (var i:int = 0, len:int = _container.numChildren - 1; i < len; i++)
{
var ball:CommandBall = getBallAt(i);
var ballR:CommandBall = getBallAt(i + 1);
if (ball.color == ballR.color)
{
isCommonColor = true;
var timer:Timer = new Timer(100, 5);
timer.addEventListener(TimerEvent.TIMER,
function(e:TimerEvent):void
{
ball.visible = !ball.visible;
ballR.visible = !ballR.visible;
} );
timer.addEventListener(TimerEvent.TIMER_COMPLETE,
function(e:TimerEvent):void
{
timer.reset();
try
{
_container.removeChild(ball);
_container.removeChild(ballR);
slide();
setCombo(_comboView.combo + 1, ball.url);
}
catch (e:Error)
{
}
} );
timer.start();
break;
}
else
{
isCommonColor = false;
}
}
if (!isCommonColor && _comboCounting)
{
dispatchEvent(new Event(COMBO_COUNT_END));
}
}
private function sortIndex ():void
{
var arr:Array = [];
for (var i:int = 0, len:int = _container.numChildren; i < len; i++)
{
arr[i] = getBallAt(i);
}
arr.sortOn("x", Array.NUMERIC);
for (i = 0, len = arr.length; i < len; i++)
{
var ball:CommandBall = arr[i];
_container.setChildIndex(ball, i);
}
}
private function setCombo (comboCount:int, url:String, reset:Boolean=false):void
{
_comboCounting = true;
_comboView.x = (_mode) ? 0 : 340;
_comboView.combo = comboCount;
_comboView.render();
if (reset)
{
_comboView.reset();
}
_comboView.addCommand(url);
}
public function roulette (stop:Boolean=false):void
{
// RESET -
var lastIndex:int = _length - 2;
var index:int = 0;
var loop:int = (_mode) ? 0 : lastIndex;
_cursor.x = (_mode) ? 0 : _cursor.width * lastIndex;
_cursor.visible = true;
Tweener.addTween(_filter, { alpha:1, time:_speed } );
// ACTION -
if (_mode)
{
stage.addEventListener(MouseEvent.CLICK,
function(e:MouseEvent):void
{
stage.removeEventListener(MouseEvent.CLICK, arguments.callee);
timer.reset();
index = loop - 1;
Tweener.addTween( { }, { delay:_speed, onComplete:selectCommandBall } );
Tweener.addTween(_filter, { alpha:0, time:1 } );
dispatchEvent(new Event(ATTACK_CLICK));
} );
}
else
{
var actTimer:Timer = new Timer( Lib.random(1000, 3000), 1);
actTimer.addEventListener(TimerEvent.TIMER,
function(e:TimerEvent):void
{
actTimer.removeEventListener(TimerEvent.TIMER, arguments.callee);
actTimer.reset();
timer.reset();
index = loop + 1//- 1;
Tweener.addTween( { }, { delay:_speed, onComplete:selectCommandBall } );
Tweener.addTween(_filter, { alpha:0, time:1 } );
} );
actTimer.start();
}
// CURSOR MOVE -
var timer:Timer = new Timer(35, 0);
timer.addEventListener(TimerEvent.TIMER,
function(e:TimerEvent):void
{
if (_mode)
{
if (loop >= _length - 1)
{
loop = 0;
}
_cursor.x = _cursor.width * loop;
loop++;
}
else
{
if (loop < 0)
{
loop = lastIndex;
}
_cursor.x = _cursor.width * loop;
loop--;
}
} );
if (!stop)
{
timer.start();
}
else
{
_isBattleEnd = true;
_cursor.visible = false;
}
function selectCommandBall ():void
{
_cursor.visible = false;
var ball:CommandBall = getBallAt(index);
removeBallAt(index);
addBallAt();
setCombo(1, ball.url, true);
}
}
}
class CommandBallCursor extends Core
{
private var _loaderA:Loader;
private var _loaderB:Loader;
override public function set mode (value:Boolean):void
{
_mode = value;
if (_mode)
{
_loaderA.visible = true;
_loaderB.visible = false;
}
else
{
_loaderA.visible = false;
_loaderB.visible = true;
}
}
function CommandBallCursor ():void
{
_loaderA = new Loader;
_loaderA.load(new URLRequest(SkinPath.CURSOR_A));
addChild(_loaderA);
_loaderB = new Loader;
_loaderB.load(new URLRequest(SkinPath.CURSOR_B));
addChild(_loaderB);
}
}
class CommandBall extends Core
{
public var color:String;
private var _radius:Number = 20;
private var _colorPattern:Array =
[
SkinPath.COMMAND_BALL_1,
SkinPath.COMMAND_BALL_2,
SkinPath.COMMAND_BALL_3,
SkinPath.COMMAND_BALL_4
];
private var _loader:Loader;
private var _ur:URLRequest;
public function get url ():String { return _loader.contentLoaderInfo.url; }
function CommandBall ():void
{
graphics.drawCircle(_radius, _radius, _radius);
graphics.endFill();
_ur = new URLRequest;
_loader = new Loader;
addChild(_loader);
getRandomColor();
render();
}
public function setOtherColor(nonSelectColor:String):String
{
while (nonSelectColor == color)
{
getRandomColor();
}
render();
return color;
}
private function getRandomColor ():String
{
color = _colorPattern[ Lib.random(0, _colorPattern.length) ];
return color;
}
private function render ():void
{
_ur.url = color;
_loader.load(_ur);
}
}
class CommandListView extends Core
{
private var _chara1:Character;
private var _chara2:Character;
private var _commandList1:Loader;
private var _commandList2:Loader;
private var _commandTf1:TextField;
private var _commandTf2:TextField;
private var _commandTf3:TextField;
private var _commandTf4:TextField;
override public function set mode (value:Boolean):void
{
super.mode = value;
if (_mode)
{
_commandList1.visible = true;
_commandList2.visible = false;
_commandTf1.text = _chara1.commands.cmd1.name;
_commandTf2.text = _chara1.commands.cmd2.name;
_commandTf3.text = _chara1.commands.cmd3.name;
_commandTf4.text = _chara1.commands.cmd4.name;
}
else
{
_commandList1.visible = false;
_commandList2.visible = true;
_commandTf1.text = _chara2.commands.cmd1.name;
_commandTf2.text = _chara2.commands.cmd2.name;
_commandTf3.text = _chara2.commands.cmd3.name;
_commandTf4.text = _chara2.commands.cmd4.name;
}
}
function CommandListView (chara1:Character, chara2:Character):void
{
_chara1 = chara1;
_chara2 = chara2;
_commandList1 = new Loader;
_commandList1.load(new URLRequest(SkinPath.COMMAND_LIST_BG_A));
_commandList1.visible = false;
addChild(_commandList1);
_commandList2 = new Loader;
_commandList2.load(new URLRequest(SkinPath.COMMAND_LIST_BG_B));
_commandList2.visible = false;
addChild(_commandList2);
var format:TextFormat = new TextFormat;
format.color = 0xffffff;
format.font = "_sans";
format.align = "center";
_commandTf1 = new TextField;
_commandTf1.defaultTextFormat = format;
_commandTf1.x = 25;
_commandTf1.y = 12;
addChild(_commandTf1);
_commandTf2 = new TextField;
_commandTf2.defaultTextFormat = format;
_commandTf2.x = 135;
_commandTf2.y = 12;
addChild(_commandTf2);
_commandTf3 = new TextField;
_commandTf3.defaultTextFormat = format;
_commandTf3.x = 245;
_commandTf3.y = 12;
addChild(_commandTf3);
_commandTf4 = new TextField;
_commandTf4.defaultTextFormat = format;
_commandTf4.x = 355;
_commandTf4.y = 12;
addChild(_commandTf4);
}
}
class ComboView extends Core
{
public static const COMBO_INVISBLE:String = "comboInvisble";
public var combo:int = 1;
private var _speed:Number = 0.2;
private var _loader:Loader = new Loader;
private var _ur:URLRequest = new URLRequest;
private var _timer:Timer = new Timer(1000, 0);
private var images:Array =
[
SkinPath.COMBO_A_1,
SkinPath.COMBO_A_2,
SkinPath.COMBO_A_3,
SkinPath.COMBO_A_4,
SkinPath.COMBO_A_5,
SkinPath.COMBO_A_6,
SkinPath.COMBO_A_7,
SkinPath.COMBO_B_1,
SkinPath.COMBO_B_2,
SkinPath.COMBO_B_3,
SkinPath.COMBO_B_4,
SkinPath.COMBO_B_5,
SkinPath.COMBO_B_6,
SkinPath.COMBO_B_7
];
override public function set mode (value:Boolean):void
{
_mode = value;
}
function ComboView ():void
{
addChild(_loader);
render();
this.visible = false;
}
public function addCommand (url:String):void
{
var loader:Loader = new Loader;
loader.load(new URLRequest(url));
loader.x = (_mode) ? 20 * _container.numChildren : 75 - (20 * _container.numChildren);
loader.y = 60;
_container.addChild(loader);
}
public function reset (): void
{
for (var i:int = 0, len:int = _container.numChildren; i < len; i++)
{
_container.removeChildAt(0);
}
}
public function render ():void
{
var scope:Sprite = this;
scope.visible = true;
_ur.url = (_mode) ? images[combo - 1] : images[combo - 1 + images.length/2];
_loader.load(_ur);
_loader.x = (_mode) ? -100 : 100;
Tweener.addTween(_loader, { x: 0, time: _speed } );
_timer.reset();
_timer.addEventListener(TimerEvent.TIMER,
function(e:TimerEvent):void
{
_timer.removeEventListener(TimerEvent.TIMER, arguments.callee);
scope.visible = false;
reset();
dispatchEvent(new Event(COMBO_INVISBLE));
} );
_timer.start();
}
}
class HpView extends Core
{
private var _nameL:TextField;
private var _nameR:TextField;
private var _hpL:TextField;
private var _hpR:TextField;
private var _bar:Loader;
private var _barL:HpBarView;
private var _barR:HpBarView;
private var _chara1:Character;
private var _chara2:Character;
private var txColor:int = 0xffffff;
private var txFont:String = "_sans";
public function HpView (chara1:Character, chara2:Character):void
{
_chara1 = chara1;
_chara2 = chara2;
_barL = new HpBarView(SkinPath.BAR_SPACE_L, HpBarView.HP_BAR_LEFT);
_barL.x = 20;
_barL.y = 34;
addChild(_barL);
_barR = new HpBarView(SkinPath.BAR_SPACE_R, HpBarView.HP_BAR_RIGHT);
_barR.x = 259;
_barR.y = 34;
addChild(_barR);
_bar = new Loader;
_bar.load(new URLRequest(SkinPath.BAR));
addChild(_bar);
var format1:TextFormat = new TextFormat;
format1.color = txColor;
format1.font = txFont;
_nameL = new TextField;
_nameL.defaultTextFormat = format1;
_nameL.text = _chara1.name;
_nameL.x = 110;
_nameL.y = 11;
addChild(_nameL);
_hpL = new TextField;
_hpL.defaultTextFormat = format1;
_hpL.text = "HP: " + String(_chara1.currentHp);
_hpL.x = 30;
_hpL.y = 11;
addChild(_hpL);
var format2:TextFormat = new TextFormat;
format2.color = txColor;
format2.font = txFont;
format2.align = "right";
_hpR = new TextField;
_nameR = new TextField;
_nameR.defaultTextFormat = format2;
_nameR.text = _chara2.name;
_nameR.x = 250;
_nameR.y = 11;
addChild(_nameR);
_hpR.text = String(_chara2.currentHp);
_hpR.defaultTextFormat = format2;
_hpR.text = "HP: " + String(_chara2.currentHp);
_hpR.x = 330;
_hpR.y = 11;
addChild(_hpR);
update();
_bar.contentLoaderInfo.addEventListener(Event.COMPLETE,
function (e:Event):void
{
_bar.x = stage.stageWidth / 2 - _bar.width / 2;
_bar.y = 10;
});
}
public function update ():void
{
_barL.update(_chara1.currentHp / _chara1.maxHp);
_barR.update(_chara2.currentHp / _chara2.maxHp);
_hpL.text = "HP: " + String(_chara1.currentHp);
_hpR.text = "HP: " + String(_chara2.currentHp);
}
}
class HpBarView extends Core
{
public static const HP_BAR_LEFT:String = 'hpBarLeft';
public static const HP_BAR_RIGHT:String = 'hpBarRight';
private var _bar:Loader;
private var _mask:Shape;
private var _direction:String;
public function HpBarView (url:String, direction:String):void
{
_direction = direction;
if (
_direction != HP_BAR_LEFT &&
_direction != HP_BAR_RIGHT
){
_direction = HP_BAR_LEFT;
}
_mask = new Shape;
addChild(_mask);
_bar = new Loader;
_bar.contentLoaderInfo.addEventListener(Event.COMPLETE,
function(e:Event):void
{
_mask.graphics.beginFill(0);
_mask.graphics.drawRect(0,0,_bar.width,_bar.height);
_mask.graphics.endFill();
_bar.mask = _mask;
});
_bar.load(new URLRequest(url));
addChild(_bar);
}
public function update (scale:Number):void
{
animate(scale);
}
private function animate (scale:Number):void
{
var size:Number = _bar.width * scale;
var offset:Number = size - _mask.width;
var divide:Number = 30;
var one:Number = offset / divide;
var i:uint = 0;
var timer:Timer = new Timer(1);
timer.addEventListener(TimerEvent.TIMER,
function(e:TimerEvent):void{
var w:Number = _mask.width + one;
if (_direction == HP_BAR_LEFT)
{
_mask.graphics.clear();
_mask.graphics.beginFill(0);
_mask.graphics.drawRect(0,0,w,_bar.height);
_mask.graphics.endFill();
}
else if (_direction == HP_BAR_RIGHT)
{
_mask.graphics.clear();
_mask.graphics.beginFill(0);
_mask.graphics.drawRect(_bar.width-w,0,w,_bar.height);
_mask.graphics.endFill();
}
else
{
// DON'T USE -
}
i++;
if (i > divide)
{
timer.reset();
timer.removeEventListener(TimerEvent.TIMER, arguments.callee);
}
});
timer.start();
}
}
class ClickCursor extends Core
{
private var _clickTf:TextField;
override public function set mode (value:Boolean):void
{
super.mode = value;
if (_mode)
{
alpha = 1;
_clickTf.text = "[click]";
}
else
{
alpha = 0.5;
_clickTf.text = "wait...";
}
}
function ClickCursor ():void
{
graphics.beginFill(0xffffff);
graphics.drawCircle(0, 0, 10);
graphics.endFill();
var format:TextFormat = new TextFormat;
format.color = 0xffffff;
format.size = 14;
format.font = "_sans";
format.bold = "true";
_clickTf = new TextField;
_clickTf.defaultTextFormat = format;
_clickTf.x = 10;
_clickTf.y = -10;
_clickTf.selectable = false;
addChild(_clickTf);
mode = true;
}
}
class Character extends EventDispatcher
{
public var name:String;
public var skin:String;
public var commands:Commands;
public var maxHp:int = 500;
public var currentHp:int = maxHp;
}
class Commands
{
public var cmd1:Command;
public var cmd2:Command;
public var cmd3:Command;
public var cmd4:Command;
}
class Command
{
public var name:String;
}
class PlayerCharacter extends Character
{
function PlayerCharacter ():void
{
name = "Player";
commands = new Commands;
commands.cmd1 = new Command;
commands.cmd1.name = "カミツク";
commands.cmd2 = new Command;
commands.cmd2.name = "ハナデワラウ";
commands.cmd3 = new Command;
commands.cmd3.name = "オドリクルウ";
commands.cmd4 = new Command;
commands.cmd4.name = "シッポヲフル";
}
}
class NonPlayerCharacter extends Character
{
function NonPlayerCharacter ():void
{
name = "Non Player";
skin = SkinPath.MONSTER;
commands = new Commands;
commands.cmd1 = new Command;
commands.cmd1.name = "クビヲノバス";
commands.cmd2 = new Command;
commands.cmd2.name = "カミツク";
commands.cmd3 = new Command;
commands.cmd3.name = "タイアタリ";
commands.cmd4 = new Command;
commands.cmd4.name = "スルドイキバ";
}
}
class Lib
{
public static function random (min:Number = 0, max:Number = 0):Number
{
return Math.floor(Math.random() * max) + min;
}
public static function attack (min:Number = 0, max:Number = 0, combo:int = 0):Number
{
return Lib.random(min, max) * (combo / 10 + 1);
}
}