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: forked from: forked from: ランダムテキストに座布団つけてみた

よく見るランダムテキストの練習。

カーソルが指になるようにSpriteの上にのせてTextFieldのmouseEnabledをfalseにしてみた
座布団のカラーをランダムにしてみた。
日本語はひらがなとカタカナとCJK統合からランダムで表示にしてみた。
// forked from flabaka's forked from: forked from: ランダムテキストに座布団つけてみた
// forked from northprint's forked from: ランダムテキストに座布団つけてみた
// forked from clockmaker's ランダムテキストに座布団つけてみた
// forked from sake's ランダムテキストのサンプル
/*
    よく見るランダムテキストの練習。
*/
//カーソルが指になるようにSpriteの上にのせてTextFieldのmouseEnabledをfalseにしてみた
//座布団のカラーをランダムにしてみた。
//日本語はひらがなとカタカナとCJK統合からランダムで表示にしてみた。
package
{
	import flash.display.Sprite;

	[SWF(width="465", height="465", backgroundColor="0xffffff", frameRate="60")]
	public class RandomTextSample extends Sprite
	{

		public function RandomTextSample()
		{
            var i:int = 1
            
			var rand1:RandomText=new RandomText("Wonderfl build flash online.");
			addChild(rand1);
			rand1.x = 20;
			rand1.y = 24 * i++;
			var rand2:RandomText=new RandomText("ActionScript3.0 and Papervision3D and Tweener.");
			addChild(rand2);
			rand2.x = 20;
			rand2.y = 24 * i++;
			var rand3:RandomText=new RandomText("Progression and Box2DFlashAS3 and Tweensy.");
			addChild(rand3);
			rand3.x = 20;
			rand3.y = 24 * i++;

			var rand4:RandomText=new RandomText("Flex and Mete and yui.");
			addChild(rand4);
			rand4.x = 20;
			rand4.y = 24 * i++;

			var rand5:RandomText=new RandomText("ロールオーバーに座布団つけてみました", true);
			addChild(rand5);
			rand5.x = 20;
			rand5.y = 24 * i++;

            var rand6:RandomText=new RandomText("座布団つけるとちょっといい感じ", true);
			addChild(rand6);
			rand6.x = 20;
			rand6.y = 24 * i++;

            var rand7:RandomText=new RandomText("メニューバーの演出とかに使えそう", true);
			addChild(rand7);
			rand7.x = 20;
			rand7.y = 24 * i++;

            var rand8:RandomText=new RandomText("ついでにマウスカーソルが指になるように少々いじってみました", true);
            addChild(rand8);
			rand8.x = 20;
			rand8.y = 24 * i++;
			
			var rand9:RandomText=new RandomText("ひらがなとカタカナと漢字", true);
            addChild(rand9);
			rand9.x = 20;
			rand9.y = 24 * i++;
		}
	}
}

import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.utils.Timer;
import flash.events.MouseEvent;
import caurina.transitions.*

class RandomText extends Sprite
{
	private var _isJapanese:Boolean;
	private var RandSource:String="_ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
	private var MainString:String;
	private var Length:int;
	private var ReplaceCount:int;
	private var ReplaceTimer:Timer;
	private var RandomTimer:Timer;
	public var MainTextField:TextField;

        private var mainBg:Sprite = new Sprite();
        private var bg:Sprite = new Sprite();

	public function RandomText(main_string:String, isJapanese:Boolean = false)
	{
		_isJapanese = isJapanese;
		MainString = main_string;
		Length=MainString.length;
		MainTextField=new TextField();
		MainTextField.defaultTextFormat=new TextFormat(null, 17, 0x000000);
		MainTextField.text=MainString;
		MainTextField.autoSize=TextFieldAutoSize.LEFT;

		mainBg.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
		mainBg.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);

                MainTextField.selectable = false;
                MainTextField.mouseEnabled = false;
                
                mainBg.buttonMode = true;
                mainBg.useHandCursor = true;
                
                addChild(mainBg);
		mainBg.addChild(MainTextField);
		ReplaceTimer=new Timer(10);
		ReplaceTimer.addEventListener(TimerEvent.TIMER, onReplaceTimer);
		
                var padding:int = 3
                bg.graphics.beginFill(Math.random()*0xFFFFFF)
                bg.graphics.drawRect(
                - padding,
                - padding,
                MainTextField.textWidth  + padding * 2,  
                MainTextField.textHeight + padding * 2)
                bg.scaleX = 0;
                bg.alpha = 0;

                addChildAt(bg, 0);
                
	}
	
	private function onMouseOver(e:MouseEvent):void
	{
		if (ReplaceTimer.running) ReplaceTimer.stop();
                ReplaceCount = 0
		ReplaceTimer.start();
                Tweener.addTween(bg, {scaleX:1, alpha:1, time:0.5})
	}

	private function onMouseOut(e:MouseEvent):void
	{
                Tweener.addTween(bg, {scaleX:0, alpha:0, time:1.25, transition:"easeInCubic"})
	}

	private function onReplaceTimer(e:TimerEvent):void
	{
		MainTextField.text="";
	        var i:int=0;
		for (i = 0; i < ReplaceCount; i++) MainTextField.appendText(MainString.charAt(i));
		
		for (i = 0; i < Length - ReplaceCount; i++) 
		{
			if (_isJapanese) MainTextField.appendText(RandomChar.getChar());			
			else MainTextField.appendText(RandSource.charAt(Math.floor(Math.random() * (RandSource.length - 1))));
			
		}
		if(ReplaceCount==Length) ReplaceTimer.stop();
		ReplaceCount++;
	}
}

class RandomChar
{
	/** ひらがなの開始コード */
	private static const HIRAGANA_START:uint = 0x3041;
	
	/** ひらがなの終了コード */
	private static const HIRAGANA_END:uint = 0x3093;
	
	/** 全角カタカナの開始コード */
	private static const KATAKANA_START:uint = 0x30a1;
	
	/** 全角カタカナの終了コード */
	private static const KATAKANA_END:uint = 0x30f6;
	
	/** CJK統合漢字の開始コード */
	private static const CJK_START:uint = 0x4e00;
	
	/** CJK統合漢字の開始コード */
	private static const CJK_END:uint = 0x9fff;
	
	public static function getChar():String
	{
		var chars:Array = [getHiragana(), getKatakana(), getCJK()];
		return chars[Math.floor(Math.random() * chars.length)];
	}
	
	private static function getHiragana():String
	{
		return String.fromCharCode(createRandom(HIRAGANA_START, HIRAGANA_END));
	}
	
	private static function getKatakana():String
	{
		return String.fromCharCode(createRandom(KATAKANA_START, KATAKANA_END));
	}
	
	private static function getCJK():String
	{
		return String.fromCharCode(createRandom(CJK_START, CJK_END));
	}
	
	private static function createRandom(minCode:uint, maxCode:uint):uint
	{
		return Math.floor(Math.random() * (maxCode - minCode + 1)) + minCode;
	}
}