Forked from: alpicola's ワンダフルクエスト用 diff:230 プロフィール用 forked from: ワンダフルクエスト用 rsakane forked:0favorite:4lines:295license : MIT License modified : 2010-10-10 14:42:20 Embed Tweet // forked from alpicola's ワンダフルクエスト用 // font: http://slime4.hp.infoseek.co.jp/font/font.html // フォントの仕様で、一部入力できない文字があります。 package { import com.bit101.components.*; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLRequest; import flash.system.ApplicationDomain; import flash.system.LoaderContext; import flash.system.Security; import flash.system.SecurityDomain; public class Main extends Sprite { private var playerName:InputText; private var occupation:InputText; private var gender:InputText; private var level:InputText; private var hp:InputText; private var mp:InputText; private var equip1:InputText; private var equip2:InputText; private var equip3:InputText; private var equip4:InputText; private var param1:InputText; private var param2:InputText; private var param3:InputText; private var param4:InputText; private var param5:InputText; private var param6:InputText; private var param7:InputText; private var param8:InputText; private var param9:InputText; private var param10:InputText; private var status:DQTextField; private var equip:DQTextField; private var param:DQTextField; private var container:Sprite; public function Main() { graphics.beginFill(0x0); graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); graphics.endFill(); Security.loadPolicyFile("http://5ivestar.org/swf/crossdomain.xml"); var loader:Loader = new Loader(); var context:LoaderContext = new LoaderContext(); context.applicationDomain = ApplicationDomain.currentDomain; context.securityDomain = SecurityDomain.currentDomain; loader.contentLoaderInfo.addEventListener(Event.COMPLETE, initalize); loader.load(new URLRequest("http://5ivestar.org/swf/DQFC.swf"), context); } private function initalize(event:Event = null):void { status = new DQTextField(11, 5); status.x = 0 status.y = 10; addChild(status); equip = new DQTextField(11, 4, true); equip.x = 0; equip.y = 107; addChild(equip); param = new DQTextField(10, 10); param.x = 105; param.y = 10; addChild(param); Style.fontName = "dqfc"; Style.INPUT_TEXT = Style.DROPSHADOW = 0xFFFFFF; Style.BACKGROUND = 0x393939; playerName = new InputText(this, 5, 300, "えにくす", changeStatus); occupation = new InputText(this, 5, 320, "ゆうしゃ", changeStatus); gender = new InputText(this, 5, 340, "おとこ", changeStatus); level = new InputText(this, 5, 360, "41", changeStatus); hp = new InputText(this, 5, 380, "204", changeStatus); mp = new InputText(this, 5, 400, "128", changeStatus); equip1 = new InputText(this, 120, 300, "おうじゃのけん", changeEquip); equip2 = new InputText(this, 120, 320, "ひかりのよろい", changeEquip); equip3 = new InputText(this, 120, 340, "ゆうしゃのたて", changeEquip); equip4 = new InputText(this, 120, 360, "しあわせのくつ", changeEquip); param1 = new InputText(this, 235, 300, "203", changeParam); param2 = new InputText(this, 235, 320, "125", changeParam); param3 = new InputText(this, 235, 340, "203", changeParam); param4 = new InputText(this, 235, 360, "167", changeParam); param5 = new InputText(this, 235, 380, "4", changeParam); param6 = new InputText(this, 350, 300, "204", changeParam); param7 = new InputText(this, 350, 320, "128", changeParam); param8 = new InputText(this, 350, 340, "225", changeParam); param9 = new InputText(this, 350, 360, "189", changeParam); param10 = new InputText(this, 350, 380, "1497813", changeParam); changeStatus(); changeEquip(); changeParam(); container = new Sprite(); container.addChild(status); container.addChild(equip); container.addChild(param); container.x = (465 - container.width) / 2; addChild(container); } private function changeParam(event:Event = null):void { if (event != null) { var input:InputText = event.currentTarget as InputText; input.text = setTextFormat(input.text); } var length:int = param.cols - 2 - param10.text.length; var ex:String = param10.text; for (var i:int = 0; i < length; i++) ex = " " + ex; param.text = [ setParameterFormat("ちから:" + setValueFormat(param1.text), param.cols), setParameterFormat("すばやさ:" + setValueFormat(param2.text), param.cols), setParameterFormat("たいりょく:" + setValueFormat(param3.text), param.cols), setParameterFormat("かしこさ:" + setValueFormat(param4.text), param.cols), setParameterFormat("うんのよさ:" + setValueFormat(param5.text), param.cols), setParameterFormat("さいだいHP:" + setValueFormat(param6.text), param.cols), setParameterFormat("さいだいMP:" + setValueFormat(param7.text), param.cols), setParameterFormat("こうげきカ:" + setValueFormat(param8.text), param.cols), setParameterFormat("しゅびカ:" + setValueFormat(param9.text), param.cols), setParameterFormat("¥:" + setValueFormat(ex), param.cols), ].join("\n"); } private function changeEquip(event:Event = null):void { if (event != null) { var input:InputText = event.currentTarget as InputText; input.text = setTextFormat(input.text); } equip.text = [ " " + equip1.text, " " + equip2.text, " " + equip3.text, " " + equip4.text ].join("\n"); } private function changeStatus(event:Event = null):void { if (event != null) { var input:InputText = event.currentTarget as InputText; input.text = setTextFormat(input.text); } status.caption = playerName.text; status.text = [ setOccupationFormat(occupation.text, status.cols), setFormat("せいべつ:" + gender.text, status.cols), setFormat("レベル:" + setValueFormat(level.text), status.cols), setFormat("HP:" + setValueFormat(hp.text), status.cols), setFormat("MP:" + setValueFormat(mp.text), status.cols) ].join("\n"); } private function setOccupationFormat(str:String, cols:int):String { var length:int = Math.round((cols - 2 - str.length) / 2); for (var i:int = 0; i < length; i++) { str = " " + str; } return str; } private function setValueFormat(str:String, length:int = 3):String { var space:String = ""; for (var i:int = 0; i < length - str.length; i++) space += " "; return space + str; } private function setTextFormat(str:String):String { var from:String = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "; var to:String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ "; for (var i:int = 0; i < from.length; i++) { str = str.replace(from.charAt(i), to.charAt(i)); } return str; } private function setFormat(str:String, length:int):String { var pos:int = length / 2; while (true) { if (str.charAt(pos) == ":") break; str = " " + str; } return str; } private function setParameterFormat(str:String, length:int):String { while (str.length < length) { str = " " + str; } return str; } } } import flash.text.TextField; import flash.text.TextFormat; class DQTextField extends TextField { private var _cols:uint = 30; private var _rows:uint = 3; private var _text:String = ""; private var _caption:String = ""; private var bufChar:Array; private static const DAKUON:String = "がぎぐげござずぜぞぢづでばびべぼガギグゲゴザジズゼゾダヂヅデバビブベボ"; private static const HANDAKUON:String = "ぱぴぷぺぽパピプペポ"; public function DQTextField(cols:uint = 30, rows:uint = 3, equipFlag:Boolean = false):void { autoSize = "left"; embedFonts = true; multiline = true; background = true; backgroundColor = 0x000000; textColor = 0xFFFFFF; selectable = false; var fmt:TextFormat = new TextFormat(); fmt.font = "dqfc"; fmt.size = 8; defaultTextFormat = fmt; _cols = cols; _rows = rows; _caption = ""; if (equipFlag) bufChar = ["”", "^"]; else bufChar = ["”", "”"]; } override public function get text():String { return _text; } override public function set text(s:String):void { _text = s; super.text = prettify(_text); } public function get cols():uint { return _cols; } public function set cols(i:uint):void { _cols = i; super.text = prettify(_text); } public function get rows():uint { return _rows; } public function set rows(i:uint):void { _rows = i; super.text = prettify(_text); } public function get caption():String { return _caption; } public function set caption(s:String):void { _caption = s; super.text = prettify(_text); } private function prettify(s:String):String { var r:String, c:String; if (_caption == "" || _cols < 3) { r = "&" + repeat("#", _cols) + "’\n"; } else { c = _caption.substr(0, _cols - 2); var l:uint = (_cols - c.length) / 2; r = "&" + repeat("#", l - 1) + "=" + c + repeat("#", l + (_cols - c.length) % 2) + "’\n"; } var lines:Array = s.split("\n"); for (var i:int = 0; i < _rows; i++) { var line:String = lines.shift() || ""; var buf:Array = bufChar.slice(); if (line.length > _cols) { lines.unshift(line.substring(_cols)); } for (var j:int = 0; j < _cols; j++) { c = line.charAt(j); if (c == "" || c == " ") c = " "; if (DAKUON.indexOf(c) != -1) { buf[0] += "<"; buf[1] += String.fromCharCode(c.charCodeAt(0) - 1); } else if (HANDAKUON.indexOf(c) != -1) { buf[0] += ">"; buf[1] += String.fromCharCode(c.charCodeAt(0) - 2); } else { buf[0] += " "; buf[1] += c; } } buf[0] += "$"; buf[1] += "$"; r += buf.join("\n"); r += "\n"; } r += ")" + repeat("%", _cols) + "("; return r; } private function repeat(s:String, n:int):String { var r:String = ''; while (n--) r += s; return r; } } Code Fullscreen Preview Fullscreen 123strikeout.. xor siouxcitizen.. osamX currentTarget String charCodeAt String.fromCharCode substring replace unshift slice join substr split addChild charAt indexOf shift TextFormat length multiline Event Math.round