メッセージウィンドウ

by nishink
メッセージウィンドウ
1文字ずつ流れるように表示する
クリックでウィンドウを消したり出したり
♥0 | Line 65 | Modified 2010-07-03 21:10:47 | MIT License
play

ActionScript3 source code

/**
 * Copyright nishink ( http://wonderfl.net/user/nishink )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/eavY
 */

// メッセージウィンドウ
// 1文字ずつ流れるように表示する
// クリックでウィンドウを消したり出したり
package {
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            var rf:RenderField = new RenderField();
            addChild(rf);
        }
    }
}

import flash.display.Sprite;
import flash.text.TextField;
import flash.events.Event;
import flash.events.MouseEvent;
class RenderField extends Sprite {
    private var mw:MessageWindow;
    public function RenderField() {
        graphics.beginFill(0);
        graphics.drawRect(0, 0, 465, 465);
        graphics.endFill();
        mw = new MessageWindow(120, 250, 230, 100);
        mw.setMessage("おきのどくですが ぼうけんのしょ1ばんは きえてしまいました。");
        addChild(mw);
        addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
    }
    private function onMouseDown(ev:MouseEvent):void {
        if (mw.visible) {
            mw.visible = false;
        } else {
            mw.setMessage("おきのどくですが ぼうけんのしょ1ばんは きえてしまいました。");
            mw.visible = true;
        }
    }
}
class MessageWindow extends TextField {
    private var msg:String;
    private var cnt:int;
    public function MessageWindow(
    x:Number, y:Number, width:Number, height:Number) {
        this.border = true;
        this.borderColor = 0xffffff;
        this.background = true;
        this.backgroundColor = 0;
        this.wordWrap = true;
        this.text = "";
        this.textColor = 0xffffff;
        this.width = width;
        this.height = height;
        this.x = x;
        this.y = y;
        msg = "";
        cnt = 0;
        addEventListener(Event.ENTER_FRAME, onEnterFrame);
    }
    private function onEnterFrame(ev:Event):void {
        if (msg.length > cnt) {
            this.appendText(msg.charAt(cnt));
            cnt++;
        }
    }
    public function setMessage(msg:String):void {
        this.msg = msg;
        this.cnt = 0;
        this.text = "";
    }
}