<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>memo</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/" />
    <link rel="self" type="application/atom+xml" href="http://www.pandama.net/memo/atom.xml" />
    <id>tag:www.pandama.net,2009-09-27:/memo//2</id>
    <updated>2009-12-18T08:39:57Z</updated>
    <subtitle>メモ</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.261</generator>

<entry>
    <title>AS3 javascriptを使用せずにactionscriptのみでブラウザ判別</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/2009/12/as3-javascriptactionscript.php" />
    <id>tag:www.pandama.net,2009:/memo//2.56</id>

    <published>2009-12-18T08:39:07Z</published>
    <updated>2009-12-18T08:39:57Z</updated>

    <summary> javascript側に関数を用意して、swfからその関数を呼び出してブラウザ...</summary>
    <author>
        <name>pandama</name>
        
    </author>
    
        <category term="as3" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.pandama.net/memo/">
        <![CDATA[<p class="maB10">
javascript側に関数を用意して、swfからその関数を呼び出してブラウザ判別する方法はよくしていましたが、<br />
htmlファイルをいじらずにswfのみで同じことが出来ないかなー思っていたら出来るみたいなのでメモ。
</p>

<p class="maB10">
htmlファイルが何らかの理由でさわれない時に重宝しそう・・・。
</p>

<p class="maB20">
下記のサンプルswfに現在このサイトを見ているブラウザ名が表示されていれば成功。
</p>]]>
        <![CDATA[<p class="sample">
【サンプルswf】
</p>

<script type="text/javascript">
	
	var swfURL="/memo/sample/sample20091218.swf?noCash="+new Date().getTime();
	
	var flashvars = {};
	var params = {
		menu: "false",
		scale: "noScale",
		allowFullscreen: "true",
		allowScriptAccess: "always",
		wmode:"window",
		bgcolor: "#F4F4F4"
	};
	
	var attributes = {};
	
	swfobject.embedSWF(swfURL, "fla20091218", "455", "455", "9.0.0", "/common/swf/expressInstall.swf",flashvars,params,attributes);

</script>

<div id="fla20091218" class="sampleFla">

</div>
<!-- / fla20091120 -->

<p class="source">【Sample20091218.as】</p>

<div class="codeWrap">
<div class="codeInner">
<pre class="js" name="code">

package {
	
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;
	
	import flash.external.ExternalInterface;
	
	/*
	 *	【参考サイト】
	 * 	http://blog.air-life.net/2008/12/flex.html
	 * 	http://flex4web.sblo.jp/article/26894378.html
	 * 
	 */
	
	public class Sample20091218 extends Sprite {
		
		private var _debugTxt:TextField;
		
		public function Sample20091218():void {
			
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			
			_debugTxt= new TextField();
			_debugTxt.autoSize = TextFieldAutoSize.CENTER;
			_debugTxt.selectable = false;
			_debugTxt.x = stage.stageWidth / 2 - _debugTxt.width / 2;
			_debugTxt.y = stage.stageHeight / 2 - _debugTxt.height / 2;
			addChild(_debugTxt);
			
			_init();

		}
		
		private function _init():void {
			
			_debugTxt.text = "_init";
			
			if (ExternalInterface.available) {
				
				var str:String = ExternalInterface.call("window.navigator.userAgent.toLowerCase");
				
				if (str.indexOf("msie") > -1) {
					_debugTxt.text = "IE";
				}else if (str.indexOf("firefox") > -1) {
					_debugTxt.text = "Firefox";
				}else if (str.indexOf("opera") > -1) {
					_debugTxt.text = "opera";
				}else if (str.indexOf("netscape") > -1) {
					_debugTxt.text = "netscape";
				}else if (str.indexOf("chrome") > -1) {
					_debugTxt.text = "Chrome";
				}else {
					_debugTxt.text = "Unknown";
				}
				
			}else {
				_debugTxt.text = "EROOR";
			}
			
		}
	}
}
                
</pre>
</div>
</div>
<!-- / codeWrap -->

<div class="download">
<a href="/memo/download/Sample20091210.as"><span>Sample20091218.as</span></a>
</div>

<p class="maB10">【参考サイト】</p>
<div class="reference">
<ul>
<li><a href="http://flex4web.sblo.jp/article/26894378.html" target="_blank">http://flex4web.sblo.jp/article/26894378.html</a></li>
<li class="noLine"><a href="http://blog.air-life.net/2008/12/flex.html" target="_blank">http://blog.air-life.net/2008/12/flex.html</a></li>
</ul>
</div>]]>
    </content>
</entry>

<entry>
    <title>AS3 フルスクリーンで表示（TEST）</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/2009/12/as3-test.php" />
    <id>tag:www.pandama.net,2009:/memo//2.55</id>

    <published>2009-12-10T09:27:23Z</published>
    <updated>2010-02-02T04:39:45Z</updated>

    <summary>フルスクリーンで表示のテストうまくいっとる。明日追記  【サンプルswf】  	...</summary>
    <author>
        <name>pandama</name>
        
    </author>
    
        <category term="as3" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.pandama.net/memo/">
        <![CDATA[<p class="maB20">フルスクリーンで表示のテスト<br />うまくいっとる。明日追記 </p>
<p class="sample">【サンプルswf】 </p>
<script type="text/javascript">
	
	var swfURL="/memo/sample/Main.swf?noCash="+new Date().getTime();
	
	var flashvars = {};
	var params = {
		menu: "false",
		scale: "noScale",
		allowFullscreen: "true",
		allowScriptAccess: "always",
		wmode:"window",
		bgcolor: "#F4F4F4"
	};
	
	var attributes = {};
	
	swfobject.embedSWF(swfURL, "fla20091210", "455", "455", "9.0.0", "/common/swf/expressInstall.swf",flashvars,params,attributes);

</script>

<div id="fla20091210" class="sampleFla"></div><!-- / fla20091120 -->]]>
        <![CDATA[<p class="source">【Sample20091210.as】</p>

<div class="codeWrap">
<div class="codeInner">
<pre class="js" name="code">

package {
	
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;
	import flash.utils.getTimer;
	
	public class Sample20091210 extends Sprite {
		
		
		private var _normalBtn:TextBtn;
		private var _fullBtn:TextBtn;
		
		public function Sample20091210():void {
			
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			
			_init();

			
		}
		
		private function _init():void {
			
			_normalBtn = new TextBtn("通常");
			addChild(_normalBtn);
			_normalBtn.x = stage.stageWidth / 2 - _normalBtn.width / 2 - 100;
			_normalBtn.y = stage.stageHeight / 2 - _normalBtn.height / 2;
			
			_normalBtn.addEventListener(MouseEvent.MOUSE_DOWN, _normalHandler);
			
			_fullBtn = new TextBtn("フルスクリーン");
			addChild(_fullBtn);
			_fullBtn.x = stage.stageWidth / 2 - _fullBtn.width / 2 + 100;
			_fullBtn.y = stage.stageHeight / 2-_fullBtn.height / 2;
			
			_fullBtn.addEventListener(MouseEvent.MOUSE_DOWN, _fullHandler);

		}
		
		private function _normalHandler(e:MouseEvent):void {
			stage.displayState = StageDisplayState.NORMAL;
		}
		
		private function _fullHandler(e:MouseEvent):void {
			stage.displayState = StageDisplayState.FULL_SCREEN;
		}
	}
}


import flash.display.Sprite; 
import flash.text.*;
 
dynamic class TextBtn extends Sprite {
	
	public function TextBtn(str:String):void {
		
		this.graphics.beginFill(0x666666);
		this.graphics.drawRect(0,0, 100, 22);
		this.graphics.endFill();

		this.buttonMode = true;
		this.mouseChildren = false;
		
		var tf= new TextField();
		tf.width = 100;
		tf.y = 2;
		tf.autoSize = TextFieldAutoSize.CENTER;	//autoSizeを指定しないと高さが100pxになる
		tf.selectable=false;
		this.addChild(tf);
			
		var format:TextFormat=new TextFormat();
		format.color=0xFFFFFF;
		format.size = 12;
		tf.defaultTextFormat = format;
		tf.text = str;
		
	}
}
                
</pre>
</div>
</div>
<!-- / codeWrap -->


<div class="download">
<a href="/memo/download/Sample20091210.as"><span>Sample20091210.as</span></a>
</div>]]>
    </content>
</entry>

<entry>
    <title>AS3 経過時間を表示する（テキスト版）</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/2009/12/as3-4.php" />
    <id>tag:www.pandama.net,2009:/memo//2.53</id>

    <published>2009-12-08T04:01:37Z</published>
    <updated>2009-12-08T04:07:12Z</updated>

    <summary>必要な時は下記の時など。  ゲームの作成時に経過時間表示が必要な時 mp3プレー...</summary>
    <author>
        <name>pandama</name>
        
    </author>
    
        <category term="as3" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="ゲーム作成" label="ゲーム作成" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.pandama.net/memo/">
        <![CDATA[<p class="maB20">必要な時は下記の時など。 </p>
<ul class="ul-num">
<li>ゲームの作成時に経過時間表示が必要な時</li>
<li>mp3プレーヤー・FLVプレーヤー作成時、経過時間表示が必要な時</li></ul>
<p class="maB10"><span class="point">作成手順</span> </p>
<ul class="ul-num">
<li>なんらかの方法で経過時間を取得（今回は単純にgetTimer()で取得しています。）FLVの時は確かstream（NetStream）.timeが経過時間やったような・・</li>
<li>_convertTime関数を用意して経過時間をミリ秒・秒・分・時（そこまではいらん？）に分解する</li>
<li>秒・分なら60　ミリ秒なら1000を超えないように処理を施す。この作業を省くと65秒などがありえてしまいます。</li>
<li>次に10以下の時は左に0を足すといった処理を施す</li>
<li>最後にTextFieldにtext!!</li></ul>
<p class="maB20">上記だけ理解しておけば経過時間表記など楽勝！！<br />今回は簡単にテキストだけだがよく使うので見た目をよくするために要画像化。 </p>
<p class="sample">【サンプルswf】 </p>
<script type="text/javascript">
	
	var swfURL="/memo/sample/sample20091208.swf?noCash="+new Date().getTime();
	
	var flashvars = {};
	var params = {
		menu: "false",
		scale: "noScale",
		allowFullscreen: "true",
		allowScriptAccess: "always",
		wmode:"window",
		bgcolor: "#F4F4F4"
	};
	
	var attributes = {};
	
	swfobject.embedSWF(swfURL, "fla20091208", "455", "455", "9.0.0", "/common/swf/expressInstall.swf",flashvars,params,attributes);

</script>

<div id="fla20091208" class="sampleFla"></div><!-- / fla20091120 -->]]>
        <![CDATA[<p class="source">【Sample20091208.as】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">
package {
	
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;
	import flash.utils.getTimer;
	
	public class Sample20091208 extends Sprite {
		
		private var _startBtn:TextBtn;
		private var _timeText:TextField;
		private var _hackTime:Number;
		
		public function Sample20091208():void {
			
			_init();
			
		}
		
		private function _init():void {
			
			_timeText= new TextField();
			_timeText.width = 200;
			_timeText.y = 2;
			_timeText.autoSize = TextFieldAutoSize.CENTER;
			_timeText.selectable=false;
			addChild(_timeText);
			
			_timeText.x = stage.stageWidth / 2 - _timeText.width / 2;
			_timeText.y = stage.stageHeight / 2 - _timeText.height / 2;
			
			_startBtn = new TextBtn("スタート");
			addChild(_startBtn);
			_startBtn.x = stage.stageWidth / 2 - _startBtn.width / 2;
			_startBtn.y = stage.stageHeight -40;
			
			_convertTime(0);
			
			_startBtn.addEventListener(MouseEvent.MOUSE_DOWN, _startHandler);

		}
		
		private function _startHandler(e:MouseEvent):void {
			
			_hackTime = getTimer();
		
			addEventListener(Event.ENTER_FRAME, _onEnterFrameHandler);
			
		}
		
		private function _onEnterFrameHandler(e:Event):void {
			
			/*
			 * ムービーが動作している時間をミリ秒で返してくれる _hackTimeでどれ位時間が経過したかを取得して現在の時間から引く
			 */
		
			var progressTime:uint = getTimer() - _hackTime;
			
			_convertTime(progressTime);
		}
		
		private function _convertTime(_time:Number):void {
			
			/* ミリ秒を取得 */
			var _mil:Number= _time;
			/* 秒を取得 */
			var _sec:Number = Math.floor(_mil / 1000);
			/* 分を取得 */
			var _min:Number = Math.floor(_sec / 60);
			/*　時を取得 */
			var _hou:Number = Math.floor(_min / 60);
			
			/* 秒・分なら60　ミリ秒なら1000を超えないように処理を施す。この作業を省くと65秒などがありえてしまいます。 */
			
			_mil %= 1000;
			_sec %= 60;
			_min %= 60;
			
			/* 三桁は必要ないので10で割る */
			
			_mil = uint(_mil / 10);
			
			/* 表示に関する制御(二桁以下なら0を表記する) */
			
			var _milStr:String = String(_mil);
			_milStr = ((_milStr.length &lt; 2) ? "0"  : "") + _milStr;

			var _secStr:String = String(_sec);
			_secStr = ((_secStr.length &lt; 2) ? "0"  : "") + _secStr;
			
			var _minStr:String = String(_min);
			_minStr = ((_minStr.length &lt; 2) ? "0"  : "") + _minStr;
			
			var _houStr:String = String(_hou);
			_houStr = ((_houStr.length &lt; 2) ? "0"  : "") + _houStr;
			
			_timeText.text = _houStr + ":" + _minStr + ":" + _secStr + ":" + _milStr;
			
		}
	}
}

import flash.display.Sprite; 
import flash.text.*;
 
dynamic class TextBtn extends Sprite {
	
	public function TextBtn(str:String):void {
		
		this.graphics.beginFill(0x666666);
		this.graphics.drawRect(0,0, 100, 22);
		this.graphics.endFill();

		this.buttonMode = true;
		this.mouseChildren = false;
		
		var tf= new TextField();
		tf.width = 100;
		tf.y = 2;
		tf.autoSize = TextFieldAutoSize.CENTER;	//autoSizeを指定しないと高さが100pxになる
		tf.selectable=false;
		this.addChild(tf);
			
		var format:TextFormat=new TextFormat();
		format.color=0xFFFFFF;
		format.size = 12;
		tf.defaultTextFormat = format;
		tf.text = str;
		
	}
}
                
</pre></div></div><!-- / codeWrap -->
<div class="download"><a href="/memo/download/Sample20091208.as"><span>Sample20091208.as</span></a> </div>]]>
    </content>
</entry>

<entry>
    <title>javascriptで動的にテーブルを作成するときのIE8以下のバグ</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/2009/12/javascriptie8.php" />
    <id>tag:www.pandama.net,2009:/memo//2.49</id>

    <published>2009-12-04T05:39:57Z</published>
    <updated>2009-12-04T05:49:10Z</updated>

    <summary> 【サンプル】 久々のメモ。現在IE8を使用しているのですがブラウザチェック時に...</summary>
    <author>
        <name>pandama</name>
        
    </author>
    
        <category term="javascript" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="ieバグ" label="IEバグ" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.pandama.net/memo/">
        <![CDATA[<p class="maB20"><a href="/memo/sample/20091203/" target="_blank"><img alt="alert" src="/memo/images/img_2009_12_03.gif" width="560" height="230" /></a></p>
<p class="sample">【<a href="/memo/sample/20091203/" target="_blank">サンプル</a>】</p>
<p class="maB20">久々のメモ。<br />現在IE8を使用しているのですがブラウザチェック時にIE6・7共に動的にjavascriptでテーブルを作成したときにはまったのでメモ。 </p>]]>
        <![CDATA[<p class="source">【IE6・7では表示されない記述方法】</p>

<div class="codeWrap">
<div class="codeInner">
<pre class="js" name="code">

//TABLE作成
var TABLE = document.createElement("TABLE");
TABLE.cellPadding =TABLE.cellSpacing=0;
document.body.appendChild(TABLE);

//TR作成
var TR = document.createElement("TR");
TABLE.appendChild(TR);

//TD作成
var TD = document.createElement("TD");
TD.innerHTML="IE6・7だと表示されません";
TR.appendChild(TD);
                
</pre>
</div>
</div>
<!-- / codeWrap -->

<p class="source">【IE6・7でも表示される記述方法】</p>

<div class="codeWrap">
<div class="codeInner">
<pre class="js" name="code">

//TABLE作成
var TABLE = document.createElement("TABLE");
TABLE.cellPadding =TABLE.cellSpacing=0;
document.body.appendChild(TABLE);

//TBODY作成
var TBODY = document.createElement("TBODY");
TABLE.appendChild(TBODY);

//TR作成
var TR = document.createElement("TR");
TABLE.appendChild(TR);

//TD作成
var TD = document.createElement("TD");
TD.innerHTML="IE6・7だと表示されません";
TR.appendChild(TD);
                
</pre>
</div>
</div>
<!-- / codeWrap -->

<p class="maB20">
上記の様にTR作成時の前にTBODYを作成してTBODYにTRをappendChildしてあげると表示されるようになりました。<br />
alert()してみるとタイトル下の画像のようにきちんとIE6・7でもきちんとappendChildは出来ている様なのでどうやら表示がされていない感じなのかなー。<br />
それを回避するためにTBODYを利用すると一発解決するというメモ。
</p>

<div class="download">
<a href="/memo/download/Sample20091203.lzh"><span>Sample20091203.lzh</span></a>
</div>
]]>
    </content>
</entry>

<entry>
    <title>AS3 イージングとバネのモーションのメモ</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/2009/11/as3-3.php" />
    <id>tag:www.pandama.net,2009:/memo//2.46</id>

    <published>2009-11-20T06:43:42Z</published>
    <updated>2009-11-23T13:58:54Z</updated>

    <summary>下記サンプルのボタンをクリックしてください。移動距離がイージングの場合は+なら+...</summary>
    <author>
        <name>pandama</name>
        
    </author>
    
        <category term="as3" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="公式" label="公式" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="基本" label="基本" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.pandama.net/memo/">
        <![CDATA[<p class="maB20">下記サンプルのボタンをクリックしてください。<br />移動距離がイージングの場合は+なら+のまま-なら-のままですが<br />バネの場合はターゲットに近づくと+-がいったりきたりしています。（その値がバネの振り幅） </p>
<p class="sample">【サンプルswf】 </p>
<script type="text/javascript">
	
	var swfURL="/memo/sample/sample20091120.swf?noCash="+new Date().getTime();
	
	var flashvars = {};
	var params = {
		menu: "false",
		scale: "noScale",
		allowFullscreen: "true",
		allowScriptAccess: "always",
		wmode:"window",
		//wmode:"transparent",
		bgcolor: "#F4F4F4"
	};
	
	var attributes = {};
	
	swfobject.embedSWF(swfURL, "fla20091120", "400", "400", "9.0.0", "/common/swf/expressInstall.swf",flashvars,params,attributes);

</script>

<div class="sampleFla">
<div id="fla20091120"></div></div><!-- / sampleFla -->]]>
        <![CDATA[<p class="tit1"><span>イージングについてメモ</span></p>
<ul class="ul-num">
<li>まずイージングの値を決める。必ず1以下数字が小さいほどターゲットに対してゆっくり近づく。</li>
<li>次にターゲット（徐々に近づけたい目標）を決める。</li>
<li>ターゲットまでの距離を求める。</li>
<li>ターゲットまでの距離にイージングの値を掛けて速度を算出する。</li>
<li>速度を現在の位置に加算。</li>
<li>目標に到達するまで3～5を繰り返す。</li></ul>
<p class="maB20">時間が出来た時に要図解<br />下記がイージングの公式 </p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">_ball.x += (mouseX - _ball.x) * _easing;
_ball.y += (mouseY - _ball.y) * _easing;
</pre></div></div>
<p class="tit1"><span>バネ的な動きについてメモ</span></p>
<ul class="ul-num">
<li>バネの比率を決める。（高いほど強いバネに、低いと伸びたようなバネに）</li>
<li>次にターゲットを決める。</li>
<li>ターゲットまでの距離を求める。</li>
<li>加速度を求める。（加速度=ターゲットまでの距離*バネの比率）</li>
<li>加速度を速度に加える。</li>
<li>速度に摩擦を適用（この処理がないと永遠にバネる）</li>
<li>速度を現在の位置に加算。</li>
<li>目標に到達するまで3～7を繰り返す。</li></ul><!--
<p class="maB20">
加速度はターゲットに近づくほど小さくなるが、速度は増え続ける。<br / / />
</p>
-->
<p class="maB20">時間が出来た時に要図解<br />下記がバネ的な動きの公式 </p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">_ball.vx += (mouseX - _ball.x) * _spring;
_ball.vx *= _fliction;
_ball.x += _ball.vx;

_ball.vy +=(mouseY - _ball.y) * _spring;
_ball.vy *= _fliction;
_ball.y += _ball.vy;
</pre></div></div>

<p class="source">【Sample20091120.as】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">package {

    import flash.display.*;
	import flash.events.*; 
	import flash.text.*;
	
	public class Sample20091120 extends Sprite {
		
		private var _ball:Ball;
		/*_easing*/
		private var _easing:Number = 0.15;//大きいほど早い
		/*_spring*/
		private var _spring:Number = 0.2;//高いほど大きなバネになる
		private var _fliction:Number = 0.8;
		
		private var _easingBtn:TextBtn;
		private var _springBtn:TextBtn;
		
		private var _mode:String;
		
		private var _debugTxt:TextField;
		
		public function Sample20091120():void{
			
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			
			_init();
		
		}
		
		private function _init():void {
			
			//dynamic クラスにしているのでプロパティの追加可能
			_ball = new Ball();
			_ball.vx = 0;
			_ball.vy = 0;
			_ball.x = stage.stageWidth / 2;
			_ball.y = stage.stageHeight / 2;
			addChild(_ball);
			
			_easingBtn = new TextBtn("イージング");
			_easingBtn.id = "イージング";
			addChild(_easingBtn);
			_easingBtn.x = stage.stageWidth / 2 - _easingBtn.width / 2-50;
			_easingBtn.y = stage.stageHeight -40;
			_easingBtn.addEventListener(MouseEvent.MOUSE_DOWN, _startHandler);
			
			_springBtn = new TextBtn("バネ");
			_springBtn.id = "バネ";
			addChild(_springBtn);
			_springBtn.x = stage.stageWidth / 2 - _springBtn.width / 2+50;
			_springBtn.y = stage.stageHeight - 40;
			_springBtn.addEventListener(MouseEvent.MOUSE_DOWN, _startHandler);
			
			_debugTxt= new TextField();
			_debugTxt.autoSize = TextFieldAutoSize.LEFT;
			_debugTxt.selectable = false;
			_debugTxt.x = 20;
			_debugTxt.y = 20;
			addChild(_debugTxt);
			
			_debugTxt.text = "移動距離 : 0"
			
		}
		
		private function _startHandler(e:MouseEvent):void {
			
			_mode = e.target.id;
			
			this.stage.addEventListener(Event.ENTER_FRAME, _enterframeHandler);

		}
		
		private function _enterframeHandler(e:Event):void {
			
			if (_mode == "イージング") {
				//イージングの公式
				_ball.x += (mouseX - _ball.x) * _easing;
				_ball.y += (mouseY - _ball.y) * _easing;
				
				_debugTxt.text = "移動距離 : " + String(Math.floor((mouseX - _ball.x) * _easing));
				
				trace(String(Math.floor((mouseX - _ball.x) * _easing)));
				
			}else if (_mode == "バネ") {
				//バネの公式
				_ball.vx += (mouseX - _ball.x) * _spring;
				_ball.vx *= _fliction;
				_ball.x += _ball.vx;
				
				_ball.vy +=(mouseY - _ball.y) * _spring;
				_ball.vy *= _fliction;
				_ball.y += _ball.vy;
				
				_debugTxt.text = "移動距離 : " + String(Math.floor(_ball.vx));
				
				trace(String(Math.floor(_ball.vx)));
			}
		}
	}
}

import flash.display.Sprite; 
 
dynamic class Ball extends Sprite {
	
	public function Ball():void {
		
		this.graphics.beginFill(0x333333);
		this.graphics.drawCircle(0, 0, 30);
		this.graphics.endFill();
		
	}
}

import flash.text.*;
 
dynamic class TextBtn extends Sprite {
	
	public function TextBtn(str:String):void {
		
		this.graphics.beginFill(0x666666);
		this.graphics.drawRect(0,0, 60, 22);
		this.graphics.endFill();

		this.buttonMode = true;
		this.mouseChildren = false;
		
		var tf= new TextField();
		tf.width = 60;
		tf.y = 2;
		tf.autoSize = TextFieldAutoSize.CENTER;	//autoSizeを指定しないと高さが100pxになる
		tf.selectable=false;
		this.addChild(tf);
			
		var format:TextFormat=new TextFormat();
		format.color=0xFFFFFF;
		format.size = 10;
		tf.defaultTextFormat = format;
		tf.text = str;
		
	}
}

</pre></div></div><!-- / codeWrap -->
<div class="download"><a href="http://www.pandama.net/memo/download/Sample20091120.as"><span>Sample20091120.as</span></a> </div>]]>
    </content>
</entry>

<entry>
    <title>javascriptとCSSで超シンプルなプルダウンメニュー</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/2009/11/javascriptcss.php" />
    <id>tag:www.pandama.net,2009:/memo//2.45</id>

    <published>2009-11-19T05:08:51Z</published>
    <updated>2009-11-22T01:24:24Z</updated>

    <summary> 久しぶりにFLASH以外のメモ。  たまに案件でグローバルメニューでプルダウン...</summary>
    <author>
        <name>pandama</name>
        
    </author>
    
        <category term="javascript" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.pandama.net/memo/">
        <![CDATA[<p class="maB20"><a href="http://www.pandama.net/memo/sample/20091119/" target="_blank"><img height="230" alt="pulldown" src="http://www.pandama.net/memo/images/img_2009_11_19.gif" width="560" /></a></p>
<p class="maB10">久しぶりにFLASH以外のメモ。 </p>
<p class="maB10">たまに案件でグローバルメニューでプルダウンメニューを使用することがありますが<br />エフェクトなど何もない場合は自分で作成した方があとで拡張等しやすいので作成。 </p>
<p class="maB20">といっても本当にメインのボタンにロールオーバーしたらそれに対応するサブメニューがシンプルに出るのみ。<br />個人的にはこれぐらいシンプルなのが好きだが時間ができたときになにかエフェクトを付けれたらつけよう・・・<br /></p>]]>
        <![CDATA[<p class="sample">【<a href="http://www.pandama.net/memo/sample/20091119/" target="_blank">サンプル</a>】</p>
<p class="maB20">ポイントとしては </p>
<ul class="ul-num">
<li>プルダウンメニューがFLASHにかぶる場合は忘れずにflashをwmode:"transparent"にしておくこと（今回はswfobjectを使用）</li>
<li>CSSでちゃんとプルダウンメニューのBOXが一番上にくるようにz-indexで制御しておくこと</li>
<li>ul liをposition:relative;にul li ulをposition:absolute;にして最初はul li ul（サブメニュー）は非表示にしておく</li>
<li>親のリストがロールオーバーするとサブメニュ表示・ロールアウトするとサブメニュ非表示のJSを作成する</li></ul>
<p class="source">【transparentの仕方】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code"><!--
<script type="text/javascript">
	
	var swfURL="index.swf?noCash="+new Date().getTime();//swfのキャッシュ対策
	
	var flashvars = {};
	var params = {
		menu: "false",
		scale: "noScale",
		allowFullscreen: "true",
		allowScriptAccess: "always",
		wmode:"transparent",//ここがすんごい重要！！
		bgcolor: "#FFFFFF"
	};
	
	var attributes = {};
	
	swfobject.embedSWF(swfURL, "indexFlash", "800", "200", "9.0.0", "expressInstall.swf",flashvars,params,attributes);

</script>
-->
</pre></div></div>
<p class="source">【CSS】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="css" name="code">#gnavi{
	width:800px;
	height:30px;
	margin:0;
	position:relative;
	z-index:100; /* gnaviを最善面に */
}

#indexFlash{
	position:relative;
	z-index:1;
}

#gnavi ul li{
	position:relative;
	float:left;
}

#gnavi ul li ul{
	position:absolute;
	display:none; /* 最初は非表示に */
}

</pre></div></div>
<p class="maB20">あとは下記のようにリストにロールオーバーしたら表示・非表示したい要素を第二引数で渡せばOK! </p>
<p class="source">【html抜粋】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="xml" name="code"><!--
<li id="gnavi1" onmouseover="pulldown('over','gnavi1_sub')" onmouseout="pulldown('out','gnavi1_sub')"><a href="#">メニュー1</a>
<ul id="gnavi1_sub">
<li><a href="#">サブメニュー1_1</a></li>
<li><a href="#">サブメニュー1_2</a></li>
<li><a href="#">サブメニュー1_3</a></li>
</ul>
</li>
-->
</pre></div></div>
<p class="source">【js】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code"><!--
function pulldown(action,target){
	
	listthis=document.getElementById(target);
	
	if(action=="over"){
		
		listthis.style.display='block';
		
	}else if(action=="out"){
		listthis.style.display='none';
	}
	
}
-->
</pre></div></div>
<div class="download"><a href="http://www.pandama.net/memo/download/Pandama_pulldown_20091119.lzh"><span>Pandama_pulldown_20091119.lzh</span></a> </div>
]]>
    </content>
</entry>

<entry>
    <title>AS3 papervision3dで3D座標を2D座標に変換する魔法の公式</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/2009/11/papervision3d3d2d.php" />
    <id>tag:www.pandama.net,2009:/memo//2.44</id>

    <published>2009-11-18T07:04:48Z</published>
    <updated>2009-11-23T13:58:26Z</updated>

    <summary>papervision3dで3D座標を2D座標に変換できたら夢が膨らむなーと思っ...</summary>
    <author>
        <name>pandama</name>
        
    </author>
    
        <category term="as3" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="papervision3d" label="papervision3d" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="公式" label="公式" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.pandama.net/memo/">
        <![CDATA[<p class="maB10">papervision3dで3D座標を2D座標に変換できたら夢が膨らむなーと思っていたら・・・<br />やはり世の中には天才がいるもんですね。 </p>
<p class="maB20">下記サンプルのようにPlaneの中心に必ず赤いボールが付いてきているので座標変換は成功！ </p>
<p class="sample">【サンプルswf】 </p>
<script type="text/javascript">
	
	var swfURL="/memo/sample/sample20091118.swf?noCash="+new Date().getTime();
	
	var flashvars = {};
	var params = {
		menu: "false",
		scale: "noScale",
		allowFullscreen: "true",
		allowScriptAccess: "always",
		wmode:"window",
		//wmode:"transparent",
		bgcolor: "#000000"
	};
	
	var attributes = {};
	
	swfobject.embedSWF(swfURL, "fla20091118", "400", "400", "9.0.0", "/common/swf/expressInstall.swf",flashvars,params,attributes);

</script>

<div class="sampleFla">
<div id="fla20091118"></div></div><!-- / sampleFla -->]]>
        <![CDATA[<p class="maB10">とりあえず理解しようとしても無理なものは無理なので・・・<br />他に覚えないといけないことは山ほどあるので現状下記の公式を丸暗記。 </p>

<p class="maB20">第1引数に2D座標に変換したいDisplayObject3Dを指定。<br />第2引数にcameraを指定。<br />第3引数・第4引数にXYそれぞれのオフセット値を設定。（大概ステージの中央で大丈夫かと思われます） </p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">private function getObj2DCords ( o:DisplayObject3D, camera:CameraObject3D,  offsetX:Number = 0, offsetY:Number = 0 ):Point{
    var view:Matrix3D = o.view;
    var persp:Number = (camera.focus * camera.zoom) / (camera.focus + view.n34);
    return new Point ( (view.n14 * persp) + offsetX, (view.n24 * persp) + offsetY );
}
</pre></div></div>
<p class="maB20">あとこの公式を使用する時は忘れずに下記4行もimportしていないとエラーがでます。 </p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">import flash.geom.Point;
import org.papervision3d.cameras.CameraType;
import org.papervision3d.core.math.Matrix3D;
import org.papervision3d.core.proto.CameraObject3D;
</pre></div></div>

<p class="source">【Sample20091118.as】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">package {
	
	import flash.display.*;
	import flash.events.*;
	import flash.geom.Point;
	
	import org.papervision3d.cameras.*;
	import org.papervision3d.materials.*;
	import org.papervision3d.materials.utils.*;
	import org.papervision3d.objects.primitives.*;
	import org.papervision3d.render.*;
	import org.papervision3d.scenes.*;
	import org.papervision3d.view.*;
	import org.papervision3d.objects.*;
	
	import org.papervision3d.cameras.CameraType;
	import org.papervision3d.core.math.Matrix3D;
	import org.papervision3d.core.proto.CameraObject3D;
	
	public class Sample20091118 extends BasicView {
		
		private var _isMouseDown:Boolean = false;
		private var _oldX:Number=0
		private var _oldY:Number=0
		private var _nowX:Number = 0;
		private var _nowY:Number = 0;
		private var _targetRot:Number = 0;
		private var _targetPitch:Number = 0;
		private var _rot:Number = 0 // 角度
		private var _pitch:Number = 0 // ピッチ=縦の角度
		
		private var _plane:Plane;
		
		private var _ball:Ball;
			
		public function Sample20091118() {
			
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			
			
			_init();
		
		}
		
		private function _init():void {
			
			camera.zoom = 11;
			camera.focus = 100;
			camera.z = -1100;
			
			var material:WireframeMaterial = new WireframeMaterial(0xFF0000);
			material.doubleSided = true;
			
			_plane = new Plane( material, 100, 100, 1, 1 );
			_plane.extra=new Object();
			_plane.extra.range=100;
			_plane.extra.angle = 0;
			
			scene.addChild( _plane );
			
			
			_ball = new Ball();
			addChild(_ball);

			startRendering();
			
			stage.addEventListener(MouseEvent.MOUSE_DOWN,_onMouseDownHandler);
			stage.addEventListener(MouseEvent.MOUSE_UP, _onMouseUpHandler);
			stage.addEventListener(MouseEvent.MOUSE_MOVE, _onMouseMoveHandler);
			
		}
		
		override protected function onRenderTick(event:Event=null):void{   
 
			_rot += (_targetRot - _rot) * 0.05;
			_pitch += (_targetPitch - _pitch) * 0.05;

			_plane.x=Math.sin(_plane.extra.angle) * _plane.extra.range;
			_plane.extra.angle += 0.05;
			
			// 角度に応じてカメラの位置を設定
			camera.x = 1100 * Math.sin(_rot * Math.PI / 180);
			camera.z = 1100 * Math.cos(_rot * Math.PI / 180);
			camera.y = 1100 * Math.sin(_pitch * Math.PI / 180);
			
			var p:Point = getObj2DCords(_plane, camera, stage.stageWidth / 2 , stage.stageHeight / 2 );
			
			_ball.x = p.x;
			_ball.y = p.y;
	
			renderer.renderScene(scene, camera, viewport);   
 
		} 
		
		private function _onMouseDownHandler(e:MouseEvent):void {
			_isMouseDown = true;
			_oldX = mouseX;
			_oldY = mouseY;
		}
		private function _onMouseMoveHandler(e:MouseEvent):void {
			
			if(_isMouseDown){
				var dx:Number = e.stageX - _oldX
				var dy:Number = e.stageY - _oldY
				
				_targetRot += dx * 0.25
				_targetPitch += dy * 0.25
				
				_oldX = e.stageX
				_oldY = e.stageY
			}
			
		}
		private function _onMouseUpHandler(e:MouseEvent):void {
			_isMouseDown = false
		}
		
		private function getObj2DCords ( o:DisplayObject3D, camera:CameraObject3D,  offsetX:Number = 0, offsetY:Number = 0 ):Point{
			var view:Matrix3D = o.view;
			var persp:Number = (camera.focus * camera.zoom) / (camera.focus + view.n34);
			return new Point ( (view.n14 * persp) + offsetX, (view.n24 * persp) + offsetY );
		}
			
	}
}

import flash.display.Sprite;
class Ball extends Sprite {
	public function Ball():void {
		this.graphics.beginFill(0xCC0000 , 1 );
		this.graphics.drawCircle(0,0,6);
		this.graphics.endFill();
	}
}

</pre></div></div><!-- / codeWrap -->
<div class="download"><a href="http://www.pandama.net/memo/download/Sample20091118.as"><span>Sample20091118.as</span></a> </div>
<p class="maB10">【参考サイト】</p>
<div class="reference">
<ul>
<li class="noLine"><a href="http://www.y-tti.com/blog/2009/06/papervision3d_3d2d.php" target="_blank">http://www.y-tti.com/blog/2009/06/papervision3d_3d2d.php</a></li></ul></div>]]>
    </content>
</entry>

<entry>
    <title>AS3 flashvarsを利用してhtmlファイルからパラメータを受け取る</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/2009/11/as3-flashvarshtml.php" />
    <id>tag:www.pandama.net,2009:/memo//2.43</id>

    <published>2009-11-16T06:23:03Z</published>
    <updated>2009-11-23T14:03:28Z</updated>

    <summary>たまに使用するのでメモ。  AS2.0の時はそのまま何も難しいことなく使用できて...</summary>
    <author>
        <name>pandama</name>
        
    </author>
    
        <category term="as3" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="flashvars" label="flashvars" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.pandama.net/memo/">
        <![CDATA[<p class="maB10">たまに使用するのでメモ。 </p>
<p class="maB10">AS2.0の時はそのまま何も難しいことなく使用できていたがAS3.0になって少しだけ複雑になった。</p>
<p class="maB20">SWFファイルに読込まれた変数は、DisplayObject.loaderInfoプロパティのLoaderInfo.parametersプロパティに設定される模様。 </p>

<p class="sample">【サンプルswf】 </p>

<script type="text/javascript">
	
	var swfURL="/memo/sample/sample20091116.swf?noCash="+new Date().getTime();
	
	var flashvars = {
		name :"PANDAMA",
		url:'http://www.pandama.net/'
	};
	var params = {
		menu: "false",
		scale: "noScale",
		allowFullscreen: "true",
		allowScriptAccess: "always",
		wmode:"window",
		//wmode:"transparent",
		bgcolor: "#F4F4F4"
	};
	
	var attributes = {};
	
	swfobject.embedSWF(swfURL, "fla20091116", "300", "100", "9.0.0", "/common/swf/expressInstall.swf",flashvars,params,attributes);

</script>

<div class="sampleFla">
<div id="fla20091116"></div>
</div><!-- / sampleFla -->]]>
        <![CDATA[<p class="source">【Sample20091116.as】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">	var flashvars = {
		name :"PANDAMA",
		url:'http://www.pandama.net/'
	};
</pre></div></div>

<p class="maB20">下記コード30行から32行目が重要！ </p>

<p class="source">【Sample20091116.as】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">
package {

    import flash.display.*;
	import flash.events.*;  
	import flash.display.LoaderInfo;
    
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormatAlign;

	public class Sample20091116 extends Sprite {
		
		public function Sample20091116():void{
			
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			
			_init();
		
		}
		
		private function _init():void {
			
			/*
			 * htmlから受け取ったパラメーターをオブジェクトに入れる
			 * loaderInfo.parametersで受け取れる（要調）
			 * 連想配列で値を代入する
			 */
			
			var jsFrom:Object = loaderInfo.parameters;
			var name = jsFrom["name"];
			var url = jsFrom["url"];
			
			var format:TextFormat=new TextFormat();
			format.color=0x333333;
			format.size = 14;
			format.bold = true;
			
			var name_txt= new TextField();
			name_txt.width = 140;
			name_txt.autoSize = TextFieldAutoSize.LEFT;	//autoSizeを指定しないと高さが100pxになる
			name_txt.x = 10;
			name_txt.y = 10;
			name_txt.selectable=false;
			addChild(name_txt);
			
			name_txt.defaultTextFormat = format;
			name_txt.text = name;
			
			var url_txt= new TextField();
			url_txt.width = 140;
			url_txt.autoSize = TextFieldAutoSize.LEFT;	//autoSizeを指定しないと高さが100pxになる
			url_txt.x = 10;
			url_txt.y = 40;
			url_txt.selectable=false;
			addChild(url_txt);
			
			url_txt.defaultTextFormat = format;
			url_txt.text = url;
		
		}
		
	}
}

</pre></div></div><!-- / codeWrap -->
<div class="download"><a href="http://www.pandama.net/memo/download/Sample20091116.as"><span>Sample20091116.as</span></a> </div>
<p class="maB10">【参考サイト】</p>
<div class="reference">
<ul>
<li class="noLine"><a href="http://fumiononaka.com/TechNotes/Flash/FN0901001.html" target="_blank">http://fumiononaka.com/TechNotes/Flash/FN0901001.html</a></li></ul></div>]]>
    </content>
</entry>

<entry>
    <title>AS3 papervision3d BasicView のスタートアップテンプレート</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/2009/11/as3-papervision3d-basicview.php" />
    <id>tag:www.pandama.net,2009:/memo//2.42</id>

    <published>2009-11-11T06:35:00Z</published>
    <updated>2009-11-23T14:07:01Z</updated>

    <summary>BasicViewにはビューポートとシーンとカメラとレンダラーなどpapervi...</summary>
    <author>
        <name>pandama</name>
        
    </author>
    
        <category term="as3" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="papervision3d" label="papervision3d" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.pandama.net/memo/">
        <![CDATA[<p class="maB10">BasicViewにはビューポートとシーンとカメラとレンダラーなどpapervision3dで必要な機能がすでに用意されているspriteを拡張しているクラスみたい。 </p>
<p class="maB10">viewport = new Viewport3D();<br />addChild(viewport);<br />scene = new Scene3D();<br />camera = new Camera3D();<br />renderer = new BasicRenderEngine(); </p>
<p class="maB20">などをいちいち記述しなくてもいけます </p>

<p class="sample">【サンプルswf】 </p>

<script type="text/javascript">
	
	var swfURL="/memo/sample/sample20091111.swf?noCash="+new Date().getTime();
	
	var flashvars = {};
	var params = {
		menu: "false",
		scale: "noScale",
		allowFullscreen: "true",
		allowScriptAccess: "always",
		wmode:"window",
		//wmode:"transparent",
		bgcolor: "#000000"
	};
	
	var attributes = {};
	
	swfobject.embedSWF(swfURL, "fla20091111", "300", "300", "9.0.0", "/common/swf/expressInstall.swf",flashvars,params,attributes);

</script>

<div class="sampleFla">
<div id="fla20091111"></div>
</div><!-- / sampleFla -->]]>
        <![CDATA[<p class="maB20">あとこのファイルでポイントの箇所は<br />3Dオブジェクトを裏表表示したい場合はmaterialのdoubleSidedプロパティをtrueに変更。<br />defaultはfalse。下記の様に記述すればOK。 </p>
<p class="maB20">var material:WireframeMaterial = new WireframeMaterial(0xFF0000);<br />material.doubleSided = true; </p>

<p class="source">【Sample20091111.as】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">package {
	
	import flash.display.*;
	import flash.events.*;
	
	import org.papervision3d.cameras.*;
	import org.papervision3d.materials.*;
	import org.papervision3d.materials.utils.*;
	import org.papervision3d.objects.primitives.*;
	import org.papervision3d.render.*;
	import org.papervision3d.scenes.*;
	import org.papervision3d.view.*;
	import org.papervision3d.objects.*;
	
	/*
	 * BasicView参考サイト
	 * http://wakaz.info/2009/02/pv3d_basicview.html
	 */
	
	public class Sample20091111 extends BasicView {

		private var _isMouseDown:Boolean = false;
		private var _oldX:Number=0
		private var _oldY:Number=0
		private var _targetRot:Number = 0;
		private var _targetPitch:Number = 0;
		private var _rot:Number = 0 // 角度
		private var _pitch:Number = 0 // ピッチ=縦の角度
		
		private var _plane:Plane;
			
		public function Sample20091111() {
			
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			
			_init();
		
		}
		
		private function _init():void {
			
			/*
			 * 等倍表示のための魔法の値参考サイト
			 * http://blog.r3c7.net/?p=166
			 */

			camera.zoom = 11;
			camera.focus = 100;
			camera.z = -1100;
			
			/*
			 * マテリアル参考サイト
			 * http://clockmaker.jp/blog/2009/05/papervision3d_tutorial_3/
			 */
			
			var material:WireframeMaterial = new WireframeMaterial(0xFF0000);
			//var material:ColorMaterial = new ColorMaterial(0x666666, 1, true);
			
			//裏表表示
			material.doubleSided = true;
			
			_plane = new Plane( material, 100, 100, 1, 1 );
			scene.addChild( _plane );
			
			//レンダリング開始
			startRendering();
			
			/*
			 * カメラの動き参考サイト
			 * http://clockmaker.jp/blog/2009/05/papervision3d_tutorial_5/
			 */
			
			stage.addEventListener(MouseEvent.MOUSE_DOWN,_onMouseDownHandler);
			stage.addEventListener(MouseEvent.MOUSE_UP, _onMouseUpHandler);
			stage.addEventListener(MouseEvent.MOUSE_MOVE, _onMouseMoveHandler);
			
		}
		
		override protected function onRenderTick(event:Event=null):void{   
 
			_rot += (_targetRot - _rot) * 0.05;
			_pitch += (_targetPitch - _pitch) * 0.05;
			
			camera.x = 1100 * Math.sin(_rot * Math.PI / 180);
			camera.z = 1100 * Math.cos(_rot * Math.PI / 180);
			camera.y = 1100 * Math.sin(_pitch * Math.PI / 180);
	
			renderer.renderScene(scene, camera, viewport);   
 
		} 
		
		private function _onMouseDownHandler(e:MouseEvent):void {
			_isMouseDown = true;
			_oldX = mouseX;
			_oldY = mouseY;
		}
		
		private function _onMouseMoveHandler(e:MouseEvent):void {
			
			if(_isMouseDown){
				var dx:Number = e.stageX - _oldX
				var dy:Number = e.stageY - _oldY
				
				_targetRot += dx * 0.25
				_targetPitch += dy * 0.25
				
				_oldX = e.stageX
				_oldY = e.stageY
			}
			
		}
		
		private function _onMouseUpHandler(e:MouseEvent):void {
			_isMouseDown = false
		}
			
	}
}

</pre></div></div><!-- / codeWrap -->
<div class="download"><a href="http://www.pandama.net/memo/download/Sample20091111.as"><span>Sample20091111.as</span></a> </div>]]>
    </content>
</entry>

<entry>
    <title>AS3 ColorTransformを利用してBitmapDataに残像をdrawする</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/2009/11/as3-colortransformbitmapdatadraw.php" />
    <id>tag:www.pandama.net,2009:/memo//2.41</id>

    <published>2009-11-09T08:50:34Z</published>
    <updated>2009-11-23T14:09:30Z</updated>

    <summary>残像を残すだけならnew ColorTransform(1,1,1,1,0,0,...</summary>
    <author>
        <name>pandama</name>
        
    </author>
    
        <category term="as3" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="bitmapdata" label="BitmapData" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="colortransform" label="ColorTransform" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.pandama.net/memo/">
        <![CDATA[<p class="maB10">残像を残すだけなら<br />new ColorTransform(1,1,1,1,0,0,0,-1)<br />の様に第8引数に-の数値を指定すればOK。 </p>
<p class="maB20">BitmapDataをいじるのは奥が深いが大分勉強しなやばげ・・・ </p>
<p class="sample">【サンプルswf】 </p>
<p class="mRL10B10">
<script type="text/javascript">
	
	var swfURL="/memo/sample/sample20091109.swf?noCash="+new Date().getTime();
	
	var flashvars = {};
	var params = {
		menu: "false",
		scale: "noScale",
		allowFullscreen: "true",
		allowScriptAccess: "always",
		wmode:"window",
		//wmode:"transparent",
		bgcolor: "#000000"
	};
	
	var attributes = {};
	
	swfobject.embedSWF(swfURL, "fla20091109", "300", "300", "9.0.0", "/common/swf/expressInstall.swf",flashvars,params,attributes);

</script>

<div class="sampleFla">
<div id="fla20091109"></div>
</div><!-- / sampleFla -->]]>
        <![CDATA[<p class="source">【Sample20091109.as】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">package {

    import flash.display.*;
	import flash.events.*;  
    
    import flash.filters.BlurFilter; 
    import flash.geom.*; 
	

	
	public class Sample20091109 extends Sprite {
		
		private var _ball:Ball;
		private var _canvas:BitmapData;
		private var _world:Sprite;
		
		private var _startBtn:StartBtn;
		
		public function Sample20091109():void{
			
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			
			_init();
		
		}
		
		private function _init():void {
			
			_startBtn = new StartBtn();
			addChild(_startBtn);
			_startBtn.x = stage.stageWidth / 2 - _startBtn.width / 2;
			_startBtn.y = stage.stageHeight / 2 - _startBtn.height / 2;
			_startBtn.addEventListener(MouseEvent.MOUSE_DOWN, _startHandler);
			
		}
		
		private function _startHandler(e:MouseEvent):void {
			
			removeChild(_startBtn);
			
			_ball = new Ball();
			_canvas = new BitmapData( stage.stageWidth,  stage.stageHeight, true, 0xFFFFFF);
			addChild(new Bitmap(_canvas)) as Bitmap;
			
			_world = new Sprite(); 
            _world.addChild(_ball);
			
			this.stage.addEventListener(Event.ENTER_FRAME, _enterframeHandler);

		}
		
		private function _enterframeHandler(e:Event):void {
			_canvas.lock();
			_canvas.applyFilter( _canvas, _canvas.rect, new Point(), new BlurFilter(2,2,3)); 
            _canvas.colorTransform(_canvas.rect, new ColorTransform(1,1,1,1,0,0,0,-1)); 
            _canvas.draw( _world, null, null); 
            _ball.x +=  ((stage.mouseX-_ball.width/2) - _ball.x)/10; 
            _ball.y +=  ((stage.mouseY-_ball.height/2) - _ball.y)/10; 
            _canvas.unlock(); 
		}
	}
}

import flash.display.Sprite; 
 
class Ball extends Sprite {
	
	public function Ball():void {
		
		this.graphics.beginFill(0xCC0000);
		this.graphics.drawCircle(0, 0, 30);
		this.graphics.endFill();
		
	}
	
}

import flash.display.Sprite; 
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormatAlign;
 
class StartBtn extends Sprite {
	
	public function StartBtn():void {
		
		this.graphics.beginFill(0x666666);
		this.graphics.drawRect(0,0, 140, 30);
		this.graphics.endFill();

		this.buttonMode = true;
		this.mouseChildren = false;
		
		var tf= new TextField();
		tf.width = 140;
		tf.autoSize = TextFieldAutoSize.CENTER;	//autoSizeを指定しないと高さが100pxになる
		tf.y = 4;
		tf.selectable=false;
		this.addChild(tf);
			
		var format:TextFormat=new TextFormat();
		format.color=0xFFFFFF;
		format.size = 14;
		format.bold = true;
		tf.defaultTextFormat = format;
		tf.text = "S T A R T";
		
	}
	
}

</pre></div></div><!-- / codeWrap -->
<div class="download"><a href="http://www.pandama.net/memo/download/Sample20091109.as"><span>Sample20091109.as</span></a> </div>]]>
    </content>
</entry>

<entry>
    <title>AS3 外部CSSファイルを読み込んでstyleSheetでスタイルシートに対応</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/2009/11/as3-cssstylesheet.php" />
    <id>tag:www.pandama.net,2009:/memo//2.40</id>

    <published>2009-11-06T10:17:03Z</published>
    <updated>2009-11-23T14:11:12Z</updated>

    <summary>CssAnalysisクラスを作成しているので外部cssファイルの解析が終了する...</summary>
    <author>
        <name>pandama</name>
        
    </author>
    
        <category term="as3" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.pandama.net/memo/">
        <![CDATA[<p class="maB10">CssAnalysisクラスを作成しているので外部cssファイルの解析が終了するとCSS_PARSE_COMPLETEがdispatchされるのでgetCSS関数を用意しているのgetでStyleSheetをゲット。<br />自分しか分からない文章ですいません。 </p>
<p class="maB10">_sheet = _cssAnalysis.getCSS; </p>
<p class="maB10">あとは任意のテキストフィールドにstyleSheetを適応させればOK!<br />_text.styleSheet=_sheet; </p>
<p class="maB20">やはりmacならhtmlファイルと同じくフォントサイズが大きくなるので振り分ける必要性あります。<br />CssAnalysis.asを同階層に置いておいて下さい。 </p>
<p class="sample">【サンプルswf】 </p>
<script type="text/javascript">
	
	var swfURL="/memo/sample/sample20091106.swf?noCash="+new Date().getTime();
	
	var flashvars = {};
	var params = {
		menu: "false",
		scale: "noScale",
		allowFullscreen: "true",
		allowScriptAccess: "always",
		wmode:"window",
		//wmode:"transparent",
		bgcolor: "#f4f4f4"
	};
	
	var attributes = {};
	
	swfobject.embedSWF(swfURL, "fla20091106", "300", "200", "9.0.0", "/common/swf/expressInstall.swf",flashvars,params,attributes);

</script>

<div class="sampleFla">
<div id="fla20091106"></div>
</div><!-- / sampleFla -->]]>
        <![CDATA[<p class="source">【Sample20091106.as】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">package {

	import flash.display.*;
	import flash.events.*;
	
	import flash.text.TextField;   
	import flash.text.TextFormat;   
	import flash.text.TextFieldAutoSize;   
	import flash.text.TextFormatAlign;
	
	import flash.text.StyleSheet;
	
	public class Sample20091106 extends Sprite {
		
		private var _cssAnalysis:CssAnalysis;
		private var _sheet:StyleSheet;
		
		private var _text:TextField;
		
		public function Sample20091106() {
			
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			
			_init();
		
		}
		
		private function _init():void {
			
			_cssAnalysis=new CssAnalysis("./style.css");
			_cssAnalysis.addEventListener(CssAnalysis.CSS_PARSE_COMPLETE, _css_parse_complete );
			
		}
		
		private function _css_parse_complete(e:Event):void {
			
			var mystr = "<p class="css1">CSSファイルが効いていれば<br /><br />color:#FF3333;<br />letterSpacing:2;<br />fontSize:12px;<br />fontWeight:bold;<br /><br />で表示されているはずです。</p>";
			
			_sheet = _cssAnalysis.getCSS;
			
			_text= new TextField();
			_text.x = 10;
			_text.y = 10;
			_text.width = stage.stageWidth - 20;
			_text.height = stage.stageHeight - 20;
			//_text.wordWrap=true;
			_text.multiline=true;
			_text.autoSize = TextFieldAutoSize.LEFT;
			_text.selectable = false;
			_text.styleSheet=_sheet;
			_text.htmlText = mystr;
			addChild(_text);
			
		}
		
	}
}

</pre></div></div><!-- / codeWrap -->
<p class="source">【CssAnalysis.as】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">package {

	import flash.net.*;
	import flash.display.*;
	import flash.events.*;
	import flash.text.StyleSheet;
	import flash.system.System;

	public class CssAnalysis extends EventDispatcher {
		
		public static  const CSS_PARSE_COMPLETE:String="css_parse_complete";

		private var _cssLoader:URLLoader;
		private var _isUnicode:Boolean=true;
		private var _sheet:StyleSheet;
		
		public function CssAnalysis(url) {

			_cssLoader=new URLLoader();
			_cssLoader.dataFormat=URLLoaderDataFormat.TEXT;
			_cssLoader.addEventListener(Event.COMPLETE, onCSSloaded);
			
			var urlReq:URLRequest=new URLRequest(url);
			System.useCodePage=! _isUnicode;
			_cssLoader.load(urlReq);

		}
		
		private function onCSSloaded(e:Event):void {
			_sheet=new StyleSheet();
			_sheet.parseCSS(_cssLoader.data);	
			dispatchEvent(new Event(CssAnalysis.CSS_PARSE_COMPLETE));
		}
		
		public function get getCSS():StyleSheet{
			return _sheet;
		}

	}
}

</pre></div></div><!-- / codeWrap -->
<p class="source">【style.css】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="css" name="code">.css1{
color:#FF3333;
letterSpacing:2;
fontSize:12px;
fontWeight:bold;
}


</pre></div></div><!-- / codeWrap -->
<div class="download"><a href="http://www.pandama.net/memo/download/Sample20091106.lzh"><span>Sample20091106.lzh</span></a> </div>]]>
    </content>
</entry>

<entry>
    <title>AS3 setChildIndexを使用して表示オブジェクトの重なり順を変更する</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/2009/11/as3-setchildindex.php" />
    <id>tag:www.pandama.net,2009:/memo//2.39</id>

    <published>2009-11-05T09:54:50Z</published>
    <updated>2009-11-23T14:15:42Z</updated>

    <summary>AS 2.0の時はswapdepthで変更していたっけたしか・・・ var la...</summary>
    <author>
        <name>pandama</name>
        
    </author>
    
        <category term="as3" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.pandama.net/memo/">
        <![CDATA[<p class="maB10">AS 2.0の時はswapdepthで変更していたっけたしか・・・</p>
<p class="maB10">var lastIndex:int = _world.numChildren - 1;<br />
_world.setChildIndex(target,lastIndex); </p>
<p class="maB20">上記がポイントです。最前面にするなら表示オブジェクトの数を数えてその数をsetChildIndexで指定すればOK<br /></p>
<p class="sample">【サンプルswf】 </p>
<script type="text/javascript">
	
	var swfURL="/memo/sample/sample20091105.swf?noCash="+new Date().getTime();
	
	var flashvars = {};
	var params = {
		menu: "false",
		scale: "noScale",
		allowFullscreen: "true",
		allowScriptAccess: "always",
		wmode:"window",
		//wmode:"transparent",
		bgcolor: "#f4f4f4"
	};
	
	var attributes = {};
	
	swfobject.embedSWF(swfURL, "fla20091105", "400", "200", "9.0.0", "/common/swf/expressInstall.swf",flashvars,params,attributes);

</script>

<div class="sampleFla">
<div id="fla20091105"></div>
</div><!-- / sampleFla -->]]>
        <![CDATA[<p class="source">【asソース】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">package {

	import flash.display.*;
	import flash.events.*;
	
	import flash.text.TextField;   
	import flash.text.TextFormat;   
	import flash.text.TextFieldAutoSize;   
	import flash.text.TextFormatAlign; 
	
	public class Sample20091105 extends Sprite {
		
		private const BALL_NUM:uint = 10;
		private var _world:Sprite;
		private var _ballArr:Array = new Array();
		
		public function Sample20091105() {
			
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			
			_init();
		
		}
		
		private function _init():void {
        
			_world = new Sprite();
			addChild(_world);
			
			var format:TextFormat=new TextFormat();
			format.color=0xFFFFFF;
			format.size = 20;
			format.align=TextFormatAlign.CENTER;
		
			for (var i:uint = 0; i &lt; BALL_NUM; i++) {
				
				var color = Math.random() * 0xFFFFFF;
				
				var ball:MovieClip = new MovieClip();
				ball.graphics.beginFill(color);
				ball.graphics.drawCircle(0, 0, 30);
				ball.graphics.endFill();
				ball.depth = i;
				_world.addChild(ball);
				
				ball.x = i*35+40;
				ball.y = stage.stageHeight/2;
				
				var myText:TextField = new TextField();
				myText.autoSize = TextFieldAutoSize.CENTER;	//autoSizeを指定しないと高さが100pxになる
				myText.x = -myText.width / 2;
				myText.y =-12;
				myText.selectable=false;
				ball.addChild(myText);
					
				myText.defaultTextFormat = format;
				myText.text = String(i);
				
				/*
				 * 子オブジェクトのボタン機能を無効化
				 */
				ball.mouseChildren = false;
				ball.buttonMode = true;
				ball.addEventListener(MouseEvent.MOUSE_OVER, _ballOverHandler);
				ball.addEventListener(MouseEvent.MOUSE_OUT, _ballOutHandler);
				ball.addEventListener(MouseEvent.MOUSE_UP, _ballUpHandler);
				
				_ballArr.push(ball);
				
			}
		}
		
		private function _ballUpHandler(e:MouseEvent):void {

			var target:MovieClip = e.target as MovieClip;
			target.scaleX = 1.4;
			target.scaleY = 1.4;
			
		}
		
		private function _ballOverHandler(e:MouseEvent):void {
			
			var target:MovieClip = e.target as MovieClip;
			
			//ロールオーバーされたballを一番最前面にする処理
			var lastIndex:int = _world.numChildren - 1;
			_world.setChildIndex(target,lastIndex);

			target.scaleX = 1.4;
			target.scaleY = 1.4;
		}
		
		private function _ballOutHandler(e:MouseEvent):void {
			
			var target:MovieClip = e.target as MovieClip;
			
			_world.setChildIndex(target,target.depth);
			target.scaleX = 1;
			target.scaleY = 1;	
		}
	}
}

</pre></div></div><!-- / codeWrap -->
<div class="download"><a href="http://www.pandama.net/memo/download/Sample20091105.as"><span>Sample20091105.as</span></a> </div>]]>
    </content>
</entry>

<entry>
    <title>AS3 Event.MOUSE_LEAVEを使用してステージ外へマウスカーソルが出た事を感知させる</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/2009/11/as3-eventmouse-leave.php" />
    <id>tag:www.pandama.net,2009:/memo//2.38</id>

    <published>2009-11-04T07:33:23Z</published>
    <updated>2009-11-23T14:17:19Z</updated>

    <summary>Event.MOUSE_LEAVEを使用することによりずいぶん楽にステージ外へマ...</summary>
    <author>
        <name>pandama</name>
        
    </author>
    
        <category term="as3" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.pandama.net/memo/">
        <![CDATA[<p class="maB10">Event.MOUSE_LEAVEを使用することによりずいぶん楽にステージ外へマウスカーソルが出たことを感知できます。</p>
<p class="maB10">特に難しい事はなく<br />下記の様にEvent.MOUSE_LEAVEをイベントリスナーに登録しておけば、<br />マウス位置がステージ外に出るとイベントが発動。 </p>
<p class="maB20">ステージ内に戻ってきたかどうかを判別する方法が不明。<br />今回はとりあえずステージ内でMouseEvent.MOUSE_MOVEが感知できればステージ内ということで対応。 </p>
<p class="sample">【サンプルswf】 </p>
<script type="text/javascript">
	
	var swfURL="/memo/sample/sample20091104.swf?noCash="+new Date().getTime();
	
	var flashvars = {};
	var params = {
		menu: "false",
		scale: "noScale",
		allowFullscreen: "true",
		allowScriptAccess: "always",
		wmode:"window",
		//wmode:"transparent",
		bgcolor: "#f4f4f4"
	};
	
	var attributes = {};
	
	swfobject.embedSWF(swfURL, "fla20091104", "300", "200", "9.0.0", "/common/swf/expressInstall.swf",flashvars,params,attributes);

</script>

<div class="sampleFla">
<div id="fla20091104"></div>
</div><!-- / sampleFla -->
]]>
        <![CDATA[<p class="source">【asソース】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">package {

	import flash.display.*;
	import flash.events.*;
	
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormatAlign;
	
	public class Sample20091104 extends Sprite {
		
		private var _text:TextField;
		
		public function Sample20091104() {
			
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			
			_init();
		
		}
		
		private function _init():void {
		
			
			_text= new TextField();
			_text.width = 160;
			_text.autoSize = TextFieldAutoSize.CENTER;	//autoSizeを指定しないと高さが100pxになる
			_text.x = stage.stageWidth / 2 - _text.width / 2;
			_text.y = stage.stageHeight / 2 - _text.height / 2;
			_text.selectable=false;
			addChild(_text);
			
			var format:TextFormat=new TextFormat();
			format.color=0x333333;
			format.size = 12;
			_text.defaultTextFormat = format;
			
			_text.text = "マウスカーソルはステージ外";
			
			stage.addEventListener(Event.MOUSE_LEAVE, _mouseLeaveHandler);
			stage.addEventListener(MouseEvent.MOUSE_MOVE, _mouseMoveHandler);
			
		}
		
		private function _mouseLeaveHandler(e:Event):void {
			_text.text = "マウスカーソルはステージ外";
		}
		
		private function _mouseMoveHandler(e:MouseEvent):void {
		
			//if (mouseX &gt; 0 &amp;&amp; mouseX &lt; stage.stageWidth &amp;&amp; mouseY &gt; 0 &amp;&amp; stage.stageHeight) {
			_text.text = "マウスカーソルはステージ内";
			//}
		}
		
	}
}

</pre></div></div><!-- / codeWrap -->
<div class="download"><a href="http://www.pandama.net/memo/download/Sample20091104.as"><span>Sample20091104.as</span></a> </div>]]>
    </content>
</entry>

<entry>
    <title>AS3 URLRequest・navigateToURLを使用してリンクする</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/2009/11/as3-urlrequestnavigatetourl.php" />
    <id>tag:www.pandama.net,2009:/memo//2.37</id>

    <published>2009-11-02T10:51:38Z</published>
    <updated>2009-11-23T14:18:53Z</updated>

    <summary>as2の時と仕様が変更されているのでメモ。 まず初めにimport flash....</summary>
    <author>
        <name>pandama</name>
        
    </author>
    
        <category term="as3" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.pandama.net/memo/">
        <![CDATA[<p class="maB10">as2の時と仕様が変更されているのでメモ。</p>
<p class="maB10">まず初めに<br />import flash.net.navigateToURL;<br />import flash.net.URLRequest;<br />を必ずimportしておく。 </p>
<p class="maB20">あとは下記の様に記述していれば特に問題なし。 </p>
<p class="sample">【サンプルswf】 </p>
<script type="text/javascript">
	
	var swfURL="/memo/sample/sample20091102.swf?noCash="+new Date().getTime();
	
	var flashvars = {};
	var params = {
		menu: "false",
		scale: "noScale",
		allowFullscreen: "true",
		allowScriptAccess: "always",
		wmode:"window",
		//wmode:"transparent",
		bgcolor: "#f4f4f4"
	};
	
	var attributes = {};
	
	swfobject.embedSWF(swfURL, "fla20091102", "200", "100", "9.0.0", "/common/swf/expressInstall.swf",flashvars,params,attributes);

</script>

<div class="sampleFla">
<div id="fla20091102"></div>
</div><!-- / sampleFla -->]]>
        <![CDATA[<p class="source">【asソース】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">package {

	import flash.display.*;
	import flash.events.*;
	
	import flash.net.navigateToURL;
    import flash.net.URLRequest;
	
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormatAlign;
	
	public class Sample20091102 extends Sprite {
		
		public function Sample20091102() {
			
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			
			_init();
		
		}
		
		private function _init():void {
			
			// ボタンの設定/////////////////////////////////////////////////////////////////////////////////
			var btn:Sprite = new Sprite();
			addChild(btn);
			btn.graphics.beginFill(0x666666);
			btn.graphics.drawRect(0,0, 160, 30);
			btn.graphics.endFill();
			btn.x = stage.stageWidth / 2 - btn.width / 2;
			btn.y = stage.stageHeight / 2 - btn.height / 2;
			btn.buttonMode = true;
			btn.mouseChildren = false;
			btn.addEventListener(MouseEvent.MOUSE_DOWN, _toLinkHandler);
			
			var btnText:TextField= new TextField();
			btnText.width = 160;
			btnText.autoSize = TextFieldAutoSize.CENTER;	//autoSizeを指定しないと高さが100pxになる
			btnText.y = 4;
			btnText.selectable=false;
			btn.addChild(btnText);
			
			var format:TextFormat=new TextFormat();
			format.color=0xFFFFFF;
			format.size = 12;
			btnText.defaultTextFormat = format;
			
			btnText.text = "http://www.pandama.net/";
			
		}
		
		private function _toLinkHandler(e:MouseEvent):void {
			
			//まずはリンク先のURLを指定する
			var url:URLRequest = new URLRequest("http://www.pandama.net/");
			//第二引数で_selfか_blankか等を指定
			navigateToURL( url , "_self");	
		
		}
		
	}
}

</pre></div></div><!-- / codeWrap -->
<div class="download"><a href="http://www.pandama.net/memo/download/Sample20091102.as"><span>Sample20091102.as</span></a> </div>]]>
    </content>
</entry>

<entry>
    <title>AS3 Tweenerの_bezierを使用して曲線のアニメーションを作成する</title>
    <link rel="alternate" type="text/html" href="http://www.pandama.net/memo/2009/10/as3-tweener-bezier.php" />
    <id>tag:www.pandama.net,2009:/memo//2.36</id>

    <published>2009-10-29T09:28:16Z</published>
    <updated>2009-11-23T14:20:53Z</updated>

    <summary>sinカーブなどを使用せずにTweenerの_bezierを使用して曲線のアニメ...</summary>
    <author>
        <name>pandama</name>
        
    </author>
    
        <category term="as3" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.pandama.net/memo/">
        <![CDATA[<p class="maB10">sinカーブなどを使用せずにTweenerの_bezierを使用して曲線のアニメーションを作成。</p>
<p class="maB10">まず初めに<br />import caurina.transitions.Tweener;<br />import caurina.transitions.properties.CurveModifiers;<br />を必ずimportしておく。 </p>
<p class="maB10">次に<br />CurveModifiers.init(); </p>
<p class="maB10">CurveModifiersを忘れずにinitしておく。 </p>
<p class="maB10">あとは描きたい曲線のカーブのX位置Y位置をいれるための配列を用意して<br />どんどんpushしていく。 </p>
<p class="maB10">以上たまに曲線の動きが必要な時にかなり便利です。 </p>
<p class="sample">【サンプルswf】 </p>
<script type="text/javascript">
	
	var swfURL="/memo/sample/sample20091029.swf?noCash="+new Date().getTime();
	
	var flashvars = {};
	var params = {
		menu: "false",
		scale: "noScale",
		allowFullscreen: "true",
		allowScriptAccess: "always",
		wmode:"window",
		//wmode:"transparent",
		bgcolor: "#f4f4f4"
	};
	
	var attributes = {};
	
	swfobject.embedSWF(swfURL, "fla20091029", "500", "500", "9.0.0", "/common/swf/expressInstall.swf",flashvars,params,attributes);

</script>


<div class="sampleFla">
<div id="fla20091029"></div>
</div><!-- / sampleFla -->]]>
        <![CDATA[<p class="source">【asソース】</p>
<div class="codeWrap">
<div class="codeInner"><pre class="js" name="code">package {

	import flash.display.*;
	import flash.events.*;
	
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormatAlign;
	
	import caurina.transitions.Tweener;
	import caurina.transitions.properties.CurveModifiers;
	
	public class Sample20091029 extends Sprite {
		
		private var _ballNum:uint = 7;
		private var _ballArr:Array;
		private var _curvePath:Array = new Array();
		
		private var _btn:Sprite;
		private var _btnText:TextField;
		
		public function Sample20091029() {
			
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			
			CurveModifiers.init();
			
			_init();
		
		}
		
		private function _init():void {
			
			// ボタンの設定/////////////////////////////////////////////////////////////////////////////////
			_btn = new Sprite();
			addChild(_btn);
			_btn.graphics.beginFill(0x666666);
			_btn.graphics.drawRect(0,0, 140, 30);
			_btn.graphics.endFill();
			_btn.x = stage.stageWidth / 2 - _btn.width / 2;
			_btn.y = stage.stageHeight / 2 - _btn.height / 2;
			_btn.buttonMode = true;
			_btn.mouseChildren = false;
			_btn.addEventListener(MouseEvent.MOUSE_DOWN, _startHandler);
			
			_btnText= new TextField();
			_btnText.width = 140;
			_btnText.autoSize = TextFieldAutoSize.CENTER;	//autoSizeを指定しないと高さが100pxになる
			_btnText.y = 4;
			_btnText.selectable=false;
			_btn.addChild(_btnText);
			
			var format:TextFormat=new TextFormat();
			format.color=0xFFFFFF;
			format.size = 14;
			_btnText.defaultTextFormat = format;
			_btnText.text = "S T A R T";
			///////////////////////////////////////////////////////////////////////////////////////////
			
		}
		
		private function _startHandler(e:MouseEvent):void {
			
			_btn.visible = false;
			_curveMoveFunc();
		
		}
		
		private function _curveMoveFunc():void {
			
			_ballArr = [];
			//上
			var posTX = stage.stageWidth / 2;
			var posTY = 0;
			//右
			var posRX = stage.stageWidth;
			var posRY = stage.stageHeight / 2;
			//下
			var posBX = stage.stageWidth / 2;
			var posBY = stage.stageHeight;
			//左
			var posLX = 0;
			var posLY = stage.stageHeight / 2;
			
			
			for (var i:uint = 0; i &lt; _ballNum; i++) {
				
				var ball:Sprite = new Sprite();
				ball.graphics.beginFill(0x666666);
				ball.graphics.drawCircle(0, 0, 30);
				ball.graphics.endFill();
				
				//ボールの初期位置
				ball.x = -100;
				ball.y = stage.stageHeight/2;
				
				addChild(ball);
				_ballArr.push(ball);
				
				//それぞれのボールに連携させる配列を作成しXYの位置情報をいれる
				_curvePath[i] = [];
				_curvePath[i].push( { x:posTX, y:posTY } );
				_curvePath[i].push( { x:posRX, y:posRY } );
				_curvePath[i].push( { x:posBX, y:posBY } );
				_curvePath[i].push( { x:posLX, y:posLY } );
				_curvePath[i].push( { x:posTX, y:posTY } );
				
				if (i==_ballNum-1) {
					Tweener.addTween(ball, { x:stage.stageWidth/2, y:stage.stageHeight/2, _bezier:_curvePath[i], time:15, delay:i, transition:"linear",onComplete:_reStartHandler} );	
				}else {
					Tweener.addTween(ball, { x:stage.stageWidth/2, y:stage.stageHeight/2, _bezier:_curvePath[i], time:15, delay:i, transition:"linear" } );	
				}
			}
		}
		
		private function _reStartHandler():void {
			
			for (var i:uint = 0; i &lt; _ballNum; i++) {
				var ball:Sprite = _ballArr[i];
				removeChild(ball);
			}
			
			_btnText.text = "R E S T A R T";
			_btn.visible = true;
		}
	}
}

</pre></div></div><!-- / codeWrap -->
<div class="download"><a href="http://www.pandama.net/memo/download/Sample20091029.as"><span>Sample20091029.as</span></a> </div>]]>
    </content>
</entry>

</feed>
