Local Shared Object

by umhr
Local Shared Object
♥0 | Line 163 | Modified 2009-06-11 22:08:26 | MIT License
play

ActionScript3 source code

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

/*
 * 
 * Local Shared Object
*/
package {
	import flash.display.Sprite;
	import flash.net.SharedObject;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	import flash.display.SimpleButton;
	[SWF(backgroundColor="0xEEEEEE")]
	public class Main extends Sprite {
		
		private var so:SharedObject = SharedObject.getLocal("soDemo");
		private var tf:TextField = Create.newTextField([8,8,stage.stageWidth-16,100],[["border",true]]);
		private var sb:SimpleButton = Create.newSimpleButton([(stage.stageWidth-200)/2,120,200,24,"記録したアクセス履歴を削除する"]);
		private var explanation:TextField = Create.newTextField([0,stage.stageHeight-280,stage.stageWidth,280],[["wordWrap",true]]);
		
		//この関数がまず実行される。
		public function Main() {
			var date:Date = new Date();
			
			
			if(so.data.count){
				tf.text = "お使いのPCからの"+so.data.count+"回目のアクセスです。"+"\n前回のアクセスは"+so.data.date.fullYear+"年"+(so.data.date.month+1)+"月"+so.data.date.date+"日"+so.data.date.hours+"時"+so.data.date.minutes+"分"+so.data.date.seconds+"秒でした。";
			}else{
				tf.text = "ようこそ。お使いのPCからこのFlash(swf)へのアクセス記録はありません。";
				so.data.count = 1;
			}
			tf.appendText("\n\n今回のアクセス時刻("+date.fullYear+"年"+(date.month+1)+"月"+date.date+"日"+date.hours+"時"+date.minutes+"分"+date.seconds+"秒)を記録します。");
			tf.appendText("\nサーバーへの情報送信は行っていません。");
			
			so.data.date = date;
			so.data.count ++;
			so.flush(100);
			
			addChild(tf);
			addChild(sb);
			
			explanation.appendText("Local Shared Object");
			explanation.appendText("\nLocal Shared Object(ローカル・シェアード・オブジェクト、LSO)とはAdobe社のFlash Player がユーザーPCの内部に保存するデータ形式である。 データは「Flashクッキー」とも呼ばれ、ブラウザのcookieのようにサイト毎の情報を保持する。 Macromedia Flash MX (Flash Player 6) 以降で実装されている。");
			explanation.appendText("\n\n出典: フリー百科事典『ウィキペディア(Wikipedia)』\nhttp://ja.wikipedia.org/wiki/Local_Shared_Object");
			addChild(explanation);
			sb.addEventListener(MouseEvent.MOUSE_DOWN, MOUSE_DOWN);
		}
		
		private function MOUSE_DOWN(e:MouseEvent):void{
			so.clear();
			tf.text = "データを削除しました。";
		}
	}
}


import flash.display.DisplayObject;
import flash.display.Graphics;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.text.TextFormat;
import flash.display.Sprite;
import flash.display.Shape;
import flash.display.SimpleButton;
class Create{
  public static var defaultTextFormat:TextFormat = new TextFormat();
  
	public static function newSimpleButton(x_y_w_h_txt:Array = null,property:Array=null,graphics:Array=null):SimpleButton{
			var upState:Sprite = newSprite([x_y_w_h_txt[0],x_y_w_h_txt[1]],null,[["beginFill",[0xCCCCCC,1]],["drawRoundRect",[0,0,x_y_w_h_txt[2],x_y_w_h_txt[3],8]]]);
			upState.addChild(newShape([2,2],null,[["beginFill",[0xE5E5E5,1]],["drawRoundRect",[0,0,x_y_w_h_txt[2]-4,x_y_w_h_txt[3]-4,6]]]))
			var overState:Sprite = newSprite([x_y_w_h_txt[0],x_y_w_h_txt[1]],null,[["beginFill",[0xBBBBBB,1]],["drawRoundRect",[0,0,x_y_w_h_txt[2],x_y_w_h_txt[3],8]]]);
			overState.addChild(newShape([2,2],null,[["beginFill",[0xEEEEEE,1]],["drawRoundRect",[0,0,x_y_w_h_txt[2]-4,x_y_w_h_txt[3]-4,6]]]))
			var downState:Sprite = newSprite([x_y_w_h_txt[0],x_y_w_h_txt[1]],null,[["beginFill",[0xAAAAAA,1]],["drawRoundRect",[0,0,x_y_w_h_txt[2],x_y_w_h_txt[3],8]]]);
			downState.addChild(newShape([2,2],null,[["beginFill",[0xDDDDDD,1]],["drawRoundRect",[0,0,x_y_w_h_txt[2]-4,x_y_w_h_txt[3]-4,6]]]))
			var hitTestState:Shape = newShape([x_y_w_h_txt[0],x_y_w_h_txt[1]],null,[["beginFill",[0,1]],["drawRoundRect",[0,0,x_y_w_h_txt[2],x_y_w_h_txt[3],8]]]);
			if(x_y_w_h_txt[4]){
				upState.addChild(newTextField([0,2,x_y_w_h_txt[2],x_y_w_h_txt[3]-2],[["defaultTextFormat",new TextFormat("_sans", null, null, null, null, null, null, null, "center")],["text",x_y_w_h_txt[4]]]));
				overState.addChild(newTextField([0,2,x_y_w_h_txt[2],x_y_w_h_txt[3]-2],[["defaultTextFormat",new TextFormat("_sans", null, null, null, null, null, null, null, "center")],["text",x_y_w_h_txt[4]]]));
				downState.addChild(newTextField([0,3,x_y_w_h_txt[2],x_y_w_h_txt[3]-3],[["defaultTextFormat",new TextFormat("_sans", null, null, null, null, null, null, null, "center")],["text",x_y_w_h_txt[4]]]));
			}
     		var sb:SimpleButton = new SimpleButton(upState,overState,downState,hitTestState);
		
		return sb;
	}
  
  public static function newShape(x_y_w_h_sh:Array = null,property:Array=null,graphics:Array=null):Shape{
    var i:int;
    var sh:Shape;
    if(x_y_w_h_sh && x_y_w_h_sh[4]){
      sh = x_y_w_h_sh[4];
    }else{
      sh = new Shape();
    }
    if(x_y_w_h_sh){
      if (x_y_w_h_sh[0]) { sh.x = x_y_w_h_sh[0] };
      if (x_y_w_h_sh[1]) { sh.y = x_y_w_h_sh[1] };
    }
    if(property){
      for (i = 0; i < property.length; i++) {
        if(property[i] && property[i].length > 1){
          sh[property[i][0]] = property[i][1];
        }
      }
    }
    if(graphics){
      for (i = 0; i < graphics.length; i++) {
        if(graphics[i] && graphics[i].length > 1){
          sh.graphics[graphics[i][0]].apply(null, graphics[i][1]);
        }
      }
      
    }
    if(x_y_w_h_sh){
      if (x_y_w_h_sh[2]) { sh.width = x_y_w_h_sh[2] };
      if (x_y_w_h_sh[3]) { sh.height = x_y_w_h_sh[3] };
    }
    return sh;
  }
  public static function newSprite(x_y_w_h_sp:Array = null,property:Array=null,graphics:Array=null,addChild:DisplayObject = null):Sprite{
    var i:int;
    var sp:Sprite;
    if(x_y_w_h_sp && x_y_w_h_sp[4]){
      sp = x_y_w_h_sp[4];
    }else{
      sp = new Sprite();
    }
    if(x_y_w_h_sp){
      if (x_y_w_h_sp[0]) { sp.x = x_y_w_h_sp[0] };
      if (x_y_w_h_sp[1]) { sp.y = x_y_w_h_sp[1] };
    }
    if(property){
      for (i = 0; i < property.length; i++) {
        if(property[i] && property[i].length > 1){
          sp[property[i][0]] = property[i][1];
        }
      }
    }
    if(graphics){
      for (i = 0; i < graphics.length; i++) {
        if(graphics[i] && graphics[i].length > 1){
          sp.graphics[graphics[i][0]].apply(null, graphics[i][1]);
        }
      }
      
    }
    if(addChild){
      sp.addChild(addChild);
    }
    if(x_y_w_h_sp){
      if (x_y_w_h_sp[2]) { sp.width = x_y_w_h_sp[2] };
      if (x_y_w_h_sp[3]) { sp.height = x_y_w_h_sp[3] };
    }
    return sp;
  }

  public static function newTextField(x_y_w_h_txt_color_alpha:Array = null,property:Array=null,method:Array=null):TextField{
    var i:int;
    var ta:TextField = new TextField();
    ta.defaultTextFormat = defaultTextFormat;
    if(x_y_w_h_txt_color_alpha){
      if (x_y_w_h_txt_color_alpha[0]) { ta.x = x_y_w_h_txt_color_alpha[0] };
      if (x_y_w_h_txt_color_alpha[1]) { ta.y = x_y_w_h_txt_color_alpha[1] };
      if (x_y_w_h_txt_color_alpha[2]) { ta.width = x_y_w_h_txt_color_alpha[2] };
      if (x_y_w_h_txt_color_alpha[3]) { ta.height = x_y_w_h_txt_color_alpha[3] };
      if (x_y_w_h_txt_color_alpha[4]) { ta.text = x_y_w_h_txt_color_alpha[4] };
      if (x_y_w_h_txt_color_alpha[5]) { ta.textColor = x_y_w_h_txt_color_alpha[5] };
      if (x_y_w_h_txt_color_alpha[6]) { ta.alpha = x_y_w_h_txt_color_alpha[6] };
    }
    if(property){
      for (i = 0; i < property.length; i++) {
        if(property[i] && property[i].length > 1){
          ta[property[i][0]] = property[i][1];
        }
      }
    }
    if(method){
      for (i = 0; i < method.length; i++) {
        if(method[i] && method[i].length > 1){
          ta[i].apply(null, method[i][1]);
        }
      }
    }
    return ta;
  }
}