犯罪予告風櫻井メソッド

ライブプレゼン用
犯行声明
櫻井メソッド ver0.10

■使用環境
flash player 9以降

■使い方

fonts.swfを起動し、
左上をクリックします。

そこにテキストを打ち込みます。

空白行を入れると改ページになります。

あらかじめ用意したテキストを用いることは
現バージョンでは出来ません。

テキストエディタからコピペしてください。

■開発環境
flex sdk 3.2.0

■ビルド方法
方法1. mk.batを実行します。
方法2. コマンドラインからmxmlc fonts.asと入力します。
方法3. 変更を加えながら行う場合は
fcshとコマンドラインから入力します。
mxmlc fonts.asと入力するとコンパイルされます。
コンパイル中にcompile 1と先行入力しておきます。
次回からはfonts.asだけを変更すると大幅にコンパイル時間を
減らすことが出来ます。

History

2008.9.17 ver0.10リリース

■TODO
○ファイルの読み込みをする。
○ページをいったりきたり出来るようにする。
○FlexBuilderでGUIを作ってみる。
○サーバに保存できるようにする。
AIRアプリにしてファイルを保存できるようにする。
flash player 10でファイル読み込みできるようにする。
○モード切替を入れる。
○画面効果をいろいろ入れる。
○htmlのパラメータを受け取って表示
○urlからプレゼンが見れるようにする。

package {
    import flash.display.Sprite;
	import flash.text.Font;

    public class EFont extends Sprite {
        [Embed(source='c:\\windows\\fonts\\msgothic.ttc', fontName='MSゴシック')]
        private var font:Class;
        public function EFont(){
		Font.registerFont( font );
        }
    }
}
package {

	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.text.*;
	import flash.events.Event;
	import flash.geom.*;
	import flash.filters.*;
	[SWF(width="300", height="200", frameRate="5", backgroundColor="#FFFFFF")]
	public class fonts extends Sprite {
		public var e:EFont = new EFont();
		public var formats:Array;
		public var txt2:TextField = new TextField();
		public var texts:Array = new Array();
		public var sprite:Sprite = new Sprite();
		public var dropShadow:DropShadowFilter;
		public var glowFilter:GlowFilter;
		public var filter:Array;
		public var len:int;
		public var arraypos:int;

		public function fonts(){
			// ドロップシャドウ
			dropShadow = new flash.filters.DropShadowFilter();
			dropShadow.blurX = 5;
			dropShadow.blurY = 5;
			dropShadow.distance = 5;
			dropShadow.angle = 35;
			dropShadow.quality = 1;
			dropShadow.alpha = 0.5;
			//グロー
			glowFilter = new flash.filters.GlowFilter();
			glowFilter.blurY=10;
			glowFilter.blurX=10;
			glowFilter.knockout=true;

			filter = [dropShadow];


			stage.align = "TL";
			stage.scaleMode = "noScale";
			addChild(sprite);
			sprite.filters = filter;

			formats = new Array();
			for(var i:int = 0; i < 10; i++) {
				var format:TextFormat = new TextFormat();
						format.font = "MSゴシック";
				format.color = 0x000000;
				format.size = 30+i;
				formats[i]=format;
			}



			txt2.width = 400;
			txt2.height = 300;
			txt2.type = TextFieldType.INPUT;
			txt2.multiline = true;
			addChild(txt2);
			addEventListener("enterFrame", onEnterFrame);
			arraypos=0;
		}


		public function onEnterFrame( event:Event ):void {
			var w:int = 1;
			var x:int = 0;
			var y:int = 0;
			var str:String = txt2.text.replace(/\r\n/g, "\n").replace(/\r/g, "\n")
				.replace(/^\n+/,"").replace(/\n+$/,"");
			var array:Array = str.split("\n\n");
			if(arraypos != array.length){
				len = 0;
			}
			arraypos=array.length;
			str = array[array.length -1];
			sprite.scaleX=1;
			sprite.scaleY=1;
			for(var j:int ;j<texts.length;j++){
				try{
					sprite.removeChild(texts[j]);//.text = "";
				} catch(e:Object){}
			}
			if(len < str.length)len++; else len = str.length;

			for(var i:int = 0; i < len; i++) {
				try {
					var chr:String = str.substring(i,i+1);

					var txt:TextField;
					//if(texts.length <= i) {
						txt = new TextField();
						txt.embedFonts = true;
						//txt.width = 100;
						//txt.height = 100;
						txt.autoSize= TextFieldAutoSize.LEFT;
						txt.type = TextFieldType.INPUT;
						txt.background = true;
						txt.backgroundColor = 0x010101*int(Math.random()*22+0xff-22);
						sprite.addChild(txt);
						texts[i] = txt;
					//}

					txt = texts[i];
					if(chr == "\n") {
					//	txt.visible = false;
						x = 0;
						y += 40; continue;
					}
					//txt.visible = true;
					txt.defaultTextFormat = formats[int(Math.random()*10)];
					txt.text = chr;
					txt.rotation = Math.random()*30-15;
					//txt.x=0;
					var rect:Rectangle = txt.getRect(sprite);
					txt.x = x;
					txt.y = y;

					x += rect.width*0.65;
					//x += txt.getLineMetrics(0).width;
					if(x > w) w = x;
					//x += 30;
				}catch(e:Object){
					//texts[i].text = "";
				}
			}
		/*	for(;i<texts.length;i++){
				texts[i].visible = false;
			}*/
			var h:int = y + 45;
			w+=10;
			// サイズをあわせる。
			// 1.幅を
			var size:Number = stage.stageWidth/w*2;
			var size2:Number = stage.stageHeight/h;
			if(size > size2)size = size2;
			sprite.scaleX = size/2;
			sprite.scaleY = size;
		}
	}




}