テキストフィールドに一文字ずつ表示
求む、山の画像
/**
* Copyright Tamotsu.Sennen ( http://wonderfl.net/user/Tamotsu.Sennen )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/lOOB
*/
package {
import flash.net.URLRequest;
import flash.system.LoaderContext;
import flash.display.*;
import flash.text.*;
import flash.display.Sprite;
import flash.events.*;
public class Main extends Sprite {
public function Main() {
// 山の画像をいれたい
/*var url:String = "http://wonderfl.net/static/tmp/related_images/209917f871aa6df947c3a911726dd5f6542fbc1cm";
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoad);
loader.load(new URLRequest(url), new LoaderContext(true));
addChild(loader);*/
// 背景色
var bg_shape:Shape = new Shape();
bg_shape.graphics.beginFill(0xddaa00);
bg_shape.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
addChildAt(bg_shape,0);
// こっちが本編
onLoad();
}
private function onLoad():void {
var a:String = "このまわりはやまばかりだ、なにがおこったんだろうか。一息つきたいところだが、そうも言ってはいられない。どこに何があるのか?持ってきた食料は?のどもすごくかわいている。何が何だかわからない!でもまあいいかと思える自分の脳天気さにすこし喜びを感じる。だが、死ぬかもしれない!ああ、俺は不安定になっている。俺は不安定になっている。さて、これからなにをしよう。あたらしい今日がはじまる…";
// テキストのフォーマット
var fmt:TextFormat = new TextFormat();
fmt.size = 14;
fmt.font = "_等幅"; //なんで等幅フォントにならんのよ
fmt.leading = 4;
fmt.leftMargin = 7;
fmt.rightMargin = 7;
// テキストフィールドのフォーマット
var x:TextField = new TextField();
x.multiline = true;
x.wordWrap = true;
x.defaultTextFormat = fmt;
x.width = 410;
x.height = 65;
x.x = (stage.stageWidth - x.width) / 2;
x.y = (stage.stageHeight - x.height) / 1.5;
x.background = true;
x.backgroundColor = 0xf0f0f0;
x.borderColor = 0x000000;
// テキストフィールドを配置&管理するMC
var box:MovieClip = new TextBox(x);
box.text = a;
box.speed = 100;
addChild(box);
// キックします
box.start();
}
}
}
import flash.utils.Timer;
import flash.text.TextFormat;
import flash.text.TextField;
import flash.display.*;
import flash.events.*;
class TextBox extends MovieClip {
private var field:TextField;
private var _text:Array;
private var _speed:int = 10;
private var charLength:int = 0;
private var charPointer:int = 0;
private var textWidthPointer:int = 0;
public function TextBox(f:TextField):void {
field = f;
addChild(field);
}
public function set text(t:String):void {
_text = t.split("");
charLength = _text.length;
}
public function set speed(msec:int):void {
_speed = msec;
}
public function start():void {
// タイマーで表示間隔を調整
var myTimer:Timer = new Timer(_speed, charLength);
myTimer.addEventListener(TimerEvent.TIMER, kick);
myTimer.start();
}
private function kick(e:TimerEvent):void {
// 文字がなくなるまでTimerの間隔で実行されつづける
if(_text[charPointer]) {
field.scrollV = int(charPointer / 27) + 1;
field.appendText(_text[charPointer]);
charPointer++;
} else {
e.target.removeEventListener(TimerEvent.TIMER, kick);
}
}
}
var trace:Function = Wonderfl.log;