In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: RandomTextを作ってみた。

RandomTextを作ってみた。
こういうのをRandomText,RandomTypo,TextSlotなどと呼ぶらしい。
twitterで教えてくれた方々、ありがとう。

いろいろ設定できるように作ったつもりだけど、
align = 'right'/'center'と、
tween対応をしていない。
日本語の時に2byteとして、とかもやってない。
まあ、そのうち。

private var obj:Object = { cursor:"" , random:true, randomNum: -1, defoltText:"" , targetText:"", delay:0, speed:1 };

【参考】
http://www.5ive.info/blog/archives/60
http://blog.bonkura.jp/2008/10/as3-1.html
/**
 * Copyright wondflacre ( http://wonderfl.net/user/wondflacre )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/1PxP
 */

// forked from umhr's RandomTextを作ってみた。
/*
 * RandomTextを作ってみた。
 * こういうのをRandomText,RandomTypo,TextSlotなどと呼ぶらしい。
 * twitterで教えてくれた方々、ありがとう。
 * 
 * いろいろ設定できるように作ったつもりだけど、
 * align = 'right'/'center'と、
 * tween対応をしていない。
 * 日本語の時に2byteとして、とかもやってない。
 * まあ、そのうち。
 * 
 * 
 * private var obj:Object = { cursor:"" , random:true, randomNum: -1, defoltText:"" , targetText:"", delay:0, speed:1 };
 * 
 * 【参考】
 * http://www.5ive.info/blog/archives/60
 * http://blog.bonkura.jp/2008/10/as3-1.html
 * */


package {
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.text.TextField;
    import flash.text.TextFormat;
    public class Main extends Sprite {
                
        public function Main(){
            
            var test_txt1:TextField = new TextField();
            test_txt1.text = "RandomText defolt これは、日本語ダミーテキスト。"
            test_txt1.height = 21;
            test_txt1.width = 450;
            test_txt1.defaultTextFormat = new TextFormat("_typewriter");
            var randomText1:RandomText = new RandomText( { textField:test_txt1} );
            randomText1.addEventListener(MouseEvent.ROLL_OVER, function():void { randomText1.start() } );
            randomText1.x = 10;
            randomText1.y = 10;
            randomText1.start();
            addChild(randomText1);
            
            //speed:1を基準に早くしたいときは小さな値、遅くしたいときは大きな値を設定する。
            var test_txt2:TextField = new TextField();
            test_txt2.text = "RandomText speed:0.5 これは、日本語ダミーテキスト。"
            test_txt2.height = 21;
            test_txt2.width = 450;
            test_txt2.defaultTextFormat = new TextFormat("_typewriter");
            var randomText2:RandomText = new RandomText( { textField:test_txt2, speed:0.5} );
            randomText2.addEventListener(MouseEvent.ROLL_OVER, function():void { randomText2.start() } );
            randomText2.x = 10;
            randomText2.y = 40;
            randomText2.start();
            addChild(randomText2);
            
            var test_txt3:TextField = new TextField();
            test_txt3.text = "RandomText speed:2 これは、日本語ダミーテキスト。"
            test_txt3.height = 21;
            test_txt3.width = 450;
            test_txt3.defaultTextFormat = new TextFormat("_typewriter");
            var randomText3:RandomText = new RandomText( { textField:test_txt3, speed:2} );
            randomText3.addEventListener(MouseEvent.ROLL_OVER, function():void { randomText3.start() } );
            randomText3.x = 10;
            randomText3.y = 70;
            randomText3.start();
            addChild(randomText3);
            
            //置き換えが始まるまでの時間(frame)30fpsに設定しているなら、30だと、1秒になる。
            var test_txt4:TextField = new TextField();
            test_txt4.text = "RandomText delay:30 これは、日本語ダミーテキスト。"
            test_txt4.height = 21;
            test_txt4.width = 450;
            test_txt4.defaultTextFormat = new TextFormat("_typewriter");
            var randomText4:RandomText = new RandomText( { textField:test_txt4, delay:30} );
            randomText4.addEventListener(MouseEvent.ROLL_OVER, function():void { randomText4.start() } );
            randomText4.x = 10;
            randomText4.y = 100;
            randomText4.start();
            addChild(randomText4);
            
            //delayとspeedを組み合わせると、ちょっと待ってから、すばやくそろう。speedを文字の長さと同じなら、delay直後になる。
            var test_txt5:TextField = new TextField();
            test_txt5.text = "RandomText delay:30, speed:10 これは、日本語ダミーテキスト。"
            test_txt5.height = 21;
            test_txt5.width = 450;
            test_txt5.defaultTextFormat = new TextFormat("_typewriter");
            var randomText5:RandomText = new RandomText( { textField:test_txt5, delay:30, speed:10 } );
            randomText5.addEventListener(MouseEvent.ROLL_OVER, function():void { randomText5.start() } );
            randomText5.x = 10;
            randomText5.y = 130;
            randomText5.start();
            addChild(randomText5);
            
            //randomNumで、randomのテキストの量を設定できる。
            var test_txt6:TextField = new TextField();
            test_txt6.text = "RandomText randomNum:0 これは、日本語ダミーテキスト。"
            test_txt6.height = 21;
            test_txt6.width = 450;
            test_txt6.defaultTextFormat = new TextFormat("_typewriter");
            var randomText6:RandomText = new RandomText( { textField:test_txt6, randomNum:0 } );
            randomText6.addEventListener(MouseEvent.ROLL_OVER, function():void { randomText6.start() } );
            randomText6.x = 10;
            randomText6.y = 160;
            randomText6.start();
            addChild(randomText6);
            
            var test_txt7:TextField = new TextField();
            test_txt7.text = "RandomText randomNum:1 これは、日本語ダミーテキスト。"
            test_txt7.height = 21;
            test_txt7.width = 450;
            test_txt7.defaultTextFormat = new TextFormat("_typewriter");
            var randomText7:RandomText = new RandomText( { textField:test_txt7, randomNum:1 } );
            randomText7.addEventListener(MouseEvent.ROLL_OVER, function():void { randomText7.start() } );
            randomText7.x = 10;
            randomText7.y = 190;
            randomText7.start();
            addChild(randomText7);
            
            var test_txt8:TextField = new TextField();
            test_txt8.text = "RandomText randomNum:5 これは、日本語ダミーテキスト。"
            test_txt8.height = 21;
            test_txt8.width = 450;
            test_txt8.defaultTextFormat = new TextFormat("_typewriter");
            var randomText8:RandomText = new RandomText( { textField:test_txt8, randomNum:5 } );
            randomText8.addEventListener(MouseEvent.ROLL_OVER, function():void { randomText8.start() } );
            randomText8.x = 10;
            randomText8.y = 220;
            randomText8.start();
            addChild(randomText8);
            
            //デフォルトのテキストを設定できる。
            var test_txt9:TextField = new TextField();
            test_txt9.text = "RandomText randomNum:1, defoltText:'ABCD...'これは、日本語ダミーテキスト。"
            test_txt9.height = 21;
            test_txt9.width = 450;
            test_txt9.defaultTextFormat = new TextFormat("_typewriter");
            var randomText9:RandomText = new RandomText( { textField:test_txt9, randomNum:1, defoltText:"ABCDEFGHIJKLMNOPQRSTUVWXYZ" } );
            randomText9.addEventListener(MouseEvent.ROLL_OVER, function():void { randomText9.start() } );
            randomText9.x = 10;
            randomText9.y = 250;
            randomText9.start();
            addChild(randomText9);
            
            //cursorの形を設定できる。
            var test_txt10:TextField = new TextField();
            test_txt10.text = "RandomText randomNum:0, cursor:'_'これは、日本語ダミーテキスト。"
            test_txt10.height = 21;
            test_txt10.width = 450;
            test_txt10.defaultTextFormat = new TextFormat("_typewriter");
            var randomText10:RandomText = new RandomText( { textField:test_txt10, randomNum:0, cursor:"_" } );
            randomText10.addEventListener(MouseEvent.ROLL_OVER, function():void { randomText10.start() } );
            randomText10.x = 10;
            randomText10.y = 280;
            randomText10.start();
            addChild(randomText10);
            
            var test_txt11:TextField = new TextField();
            test_txt11.text = "RandomText randomNum:0, cursor:'(^^;)'これは、日本語ダミーテキスト。"
            test_txt11.height = 21;
            test_txt11.width = 450;
            test_txt11.defaultTextFormat = new TextFormat("_typewriter");
            var randomText11:RandomText = new RandomText( { textField:test_txt11, randomNum:0, cursor:"(^^;)これは、日本語ダミーテキスト。" } );
            randomText11.addEventListener(MouseEvent.ROLL_OVER, function():void { randomText11.start() } );
            randomText11.x = 10;
            randomText11.y = 310;
            randomText11.start();
            addChild(randomText11);
            
            //ターゲットののテキストを設定できる。textの中身は無視
            var test_txt12:TextField = new TextField();
            test_txt12.text = "ここのテキストは無視されます。"
            test_txt12.height = 21;
            test_txt12.width = 450;
            test_txt12.defaultTextFormat = new TextFormat("_typewriter");
            var randomText12:RandomText = new RandomText( { textField:test_txt12, targetText:"RandomText targetText'RandomText...'これは、日本語ダミーテキスト。" } );
            randomText12.addEventListener(MouseEvent.ROLL_OVER, function():void { randomText12.start() } );
            randomText12.x = 10;
            randomText12.y = 340;
            randomText12.start();
            addChild(randomText12);
            
            //組み合わせ例
            var test_txt13:TextField = new TextField();
            test_txt13.text = "RandomText delay:30, speed:0.5 , randomNum: -1, cursor:'>>'これは、日本語ダミーテキスト。";
            test_txt13.height = 21;
            test_txt13.width = 450;
            test_txt13.defaultTextFormat = new TextFormat("_typewriter");
            var randomText13:RandomText = new RandomText( { textField:test_txt13, delay:30, speed:0.5 , randomNum: -1, cursor:">>" } );
            randomText13.addEventListener(MouseEvent.ROLL_OVER, function():void { randomText13.start() } );
            randomText13.x = 10;
            randomText13.y = 370;
            randomText13.start();
            addChild(randomText13);
            
            //日本語例
            var test_txt14:TextField = new TextField();
            test_txt14.text = "RandomText randomNum: -1, これは、日本語ダミーテキスト。これは、日本語ダミーテキスト。";
            test_txt14.height = 21;
            test_txt14.width = 450;
            test_txt14.defaultTextFormat = new TextFormat("_typewriter");
            var randomText14:RandomText = new RandomText( { textField:test_txt14, randomNum: -1 } );
            randomText14.addEventListener(MouseEvent.ROLL_OVER, function():void { randomText14.start() } );
            randomText14.x = 10;
            randomText14.y = 400;
            randomText14.start();
            addChild(randomText14);
            
        }
    }
}


import flash.display.DisplayObjectContainer;
import flash.display.Sprite;
import flash.text.TextField;
import flash.events.Event;
class RandomText extends Sprite
{
    public var replaceText:String = "_/-=+%&$#!?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
    private var _sliceCnt:int;
    private var _textField:TextField;
    private var obj:Object = { cursor:"" , random:true, randomNum: -1, defoltText:"" , targetText:"", delay:0, speed:1 };
    public function RandomText(arg:Object) {
        for (var _str:String in arg) {
            obj[_str] = arg[_str];
        } 
        if (!obj.targetText) {
            obj.targetText = obj.textField.text;
        }
        if (obj.randomNum == -1) {
            obj.randomNum = obj.targetText.length;
        }
        this._textField = obj.textField;
        addChild(obj.textField);
    }
    private function replaceTxt(num:int = 1):String {
        var result:String = "";
        for (var i:int = 0; i < num; ++i) {
            result += replaceText.charAt(Math.floor(Math.random() * replaceText.length));
        }
        return result;
    }
    public function start():void {
        _textField.text = obj.defoltText;
        _sliceCnt = -obj.delay;
        removeEventListener(Event.ENTER_FRAME, onEnterFrame);
        addEventListener(Event.ENTER_FRAME, onEnterFrame);
    }
    private function onEnterFrame(e:Event):void {
        var count:int = Math.min(_sliceCnt * obj.speed,obj.targetText.length);
        var cursor:String = obj.cursor;
        if (_sliceCnt<0) {
            count = 0;
            cursor = "";
        }
        var randomTxt:String = obj.targetText.substr(0, count);
        if (obj.random) {
            cursor += replaceTxt(obj.randomNum);
        }
        var maxLength:int;
        if(count < obj.targetText.length){
            randomTxt += cursor;
            randomTxt += obj.defoltText.substr(count);
            maxLength = Math.max(obj.defoltText.length, obj.targetText.length);
        }else {
            maxLength = obj.targetText.length
            removeEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
        _textField.text = randomTxt.substr(0,maxLength);
        _sliceCnt++;
    }
}