text
♥0 |
Line 74 |
Modified 2011-04-18 00:29:37 |
MIT License
archived:2017-03-20 02:33:59
ActionScript3 source code
/**
* Copyright Scmiz ( http://wonderfl.net/user/Scmiz )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/lwiB
*/
package {
import flash.text.AntiAliasType;
import flash.events.Event;
import flash.text.TextField;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
const BASE_SPAN:Number = 4;
var speed:Number = 1.0;
var str:String = "文字を徐々に表示してみるテスト。";
str += "一定時間<wait=20>待たせて<wait=20>みたり<wait=20>";
str += "<speed=3.0>一時的に速度を変えてみたり<speed=1>。";
str += "今のところこのふたつしかできないけれど、";
str += "クリック待ちとか<wait=10>色変更とか<wait=10>できるようになると、";
str += "サウンドノベルのようなものに応用できるかも。";
str += "とりあえず即席で実装してみたけど、あとでもうちょっとコードをまとめたい。";
str += "タグ解析の部分とか特に。";
str += "おおむね似たようなことをしているので、だいぶまとめられそうな気はする。";
var current:uint = 0;
var textField:TextField = new TextField();
var scale:Number = 2.0;
textField.scaleX = scale;
textField.scaleY = scale;
textField.width = 456 / scale;
textField.height = 456 / scale;
textField.text = "";
textField.antiAliasType = AntiAliasType.ADVANCED;
textField.mouseEnabled = false;
textField.wordWrap = true;
textField.x = 4;
textField.y = 4;
this.addChild(textField);
var frame:uint = 0;
var nextFrame:uint = BASE_SPAN;
var proc:Function = function (e:Event):void {
if (current > str.length) return;
++frame;
if (frame >= nextFrame) {
frame = 0;
if (str.substring(current, current+6) == "<wait=") {
current += 6;
var index:uint = str.substring(current).search(">");
var waitFrame:uint = parseInt(str.substring(current, current + index));
current += index + 1;
nextFrame = waitFrame;
}
else if (str.substring(current, current + 7) == "<speed=") {
current += 7;
var index2:uint = str.substring(current).search(">");
speed = parseFloat(str.substring(current, current + index2));
current += index2 + 1;
nextFrame = 0;
}
else {
if (str.substring(current, current + 1) == "、") {
nextFrame = uint(4.0 * BASE_SPAN / speed);
}
else if (str.substring(current, current + 1) == "。") {
nextFrame = uint(8.0 * BASE_SPAN / speed);
}
else {
nextFrame = uint(BASE_SPAN / speed);
}
if (current < str.length) {
textField.appendText(str.substring(current, current + 1));
}
++current;
}
}
};
this.addEventListener(Event.ENTER_FRAME, proc);
}
}
}