<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ADD CHILD = AS3 &#187; AS3</title>
	<atom:link href="http://www.addchild.net/tag/as3/feed" rel="self" type="application/rss+xml" />
	<link>http://www.addchild.net</link>
	<description>初心者がFlsah ActionScript 3.0を勉強して行く軌跡です。</description>
	<lastBuildDate>Tue, 09 Feb 2010 04:10:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Box2DFlashAS3を使ってマウス操作する[Box2D-2]</title>
		<link>http://www.addchild.net/as3-middle/box2d-as3-middle/411.html</link>
		<comments>http://www.addchild.net/as3-middle/box2d-as3-middle/411.html#comments</comments>
		<pubDate>Tue, 09 Feb 2010 04:10:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Box2D]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[FlashDevelop]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=411</guid>
		<description><![CDATA[Box2DFlashAS3（ver2.0.2）で物体をマウス操作する

Box2DFlashAS3 を使ってみる[Box2D-1]ではBox2Dの物理エンジンを体験しましたが、今回は落下物を掴む動きを追加したいと思います [...]]]></description>
			<content:encoded><![CDATA[<h3>Box2DFlashAS3（ver2.0.2）で物体をマウス操作する</h3>
<p>
Box2DFlashAS3 を使ってみる[Box2D-1]ではBox2Dの物理エンジンを体験しましたが、今回は落下物を掴む動きを追加したいと思います。<br />
ちょっと訳がわからくなって気がちですが、自分の作業メモ的に説明していきます。
</p>
<p>
Box2Dにはマウス処理をするにあたりマウスジョイントと言うプログラムが初めから使えるようになっています。<br />
マウスジョイントとは物体とマウスをジョイント（付ける）処理と考えると分かりやすいかもしれません･･･<br />
Box2DFlashAS3 を使ってみる[Box2D-1]をベースにまずはマウスジョントを宣言します。
</p>
<pre class="brush: jscript; auto-links: false;">
private var mouseJointDef:b2MouseJointDef; // マウスジョイントの定義
private var mouseJoint:b2MouseJoint; // マウスジョイント
</pre>
<p>
あとインポートにマウスイベントを指定も忘れずにお願いします。
</p>
<p><span id="more-411"></span></p>
<p>
次にマウス操作のイベントリスナーとそのメソッドを追加します。
</p>
<pre class="brush: jscript; auto-links: false;">
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
</pre>
<p>
マウスが押された時
</p>
<pre class="brush: jscript; auto-links: false;">
private function mouseDownHandler(event:MouseEvent):void {
	var body : b2Body = GetBodyAtMouse(event.stageX, event.stageY);
	if (body) {
		var md : b2MouseJointDef = new b2MouseJointDef();
		md.body1 = world.m_groundBody;
		md.body2 = body;
		md.target.Set(event.stageX / SCALE, event.stageY / SCALE);
		md.maxForce = 500.0 * body.m_mass;
		md.timeStep = 1 / 24;
		mouseJoint = world.CreateJoint(md) as b2MouseJoint;
		body.WakeUp();
	}
}
</pre>
<p>
ここで重要になるのが、GetBodyAtMouseです。<br />
マウスダウンした時に該当する物体があるかを判定していますが詳しく説明ができないので、もっと理解してからと言うことでお願いします。
</p>
<pre class="brush: jscript; auto-links: false;">
//該当オブジェクトがあるかの判定
private function GetBodyAtMouse(stageX : Number, stageY : Number) : b2Body {
	// Make a small box.
	var mousePVec : b2Vec2 = new b2Vec2();
	var mouseXWorldPhys : Number = stageX / SCALE;
	var mouseYWorldPhys : Number = stageY / SCALE;

	mousePVec.Set(mouseXWorldPhys, mouseYWorldPhys);
	var aabb : b2AABB = new b2AABB();
	aabb.lowerBound.Set(mouseXWorldPhys - 0.001, mouseYWorldPhys - 0.001);
	aabb.upperBound.Set(mouseXWorldPhys + 0.001, mouseYWorldPhys + 0.001);

	// Query the world for overlapping shapes.
	var k_maxCount : int = 10;
	var shapes : Array = new Array();
	var count : int = world.Query(aabb, shapes, k_maxCount);
	var body : b2Body = null;
	for (var i : int = 0;i &lt; count; ++i) {
		if (shapes[i].m_body.IsStatic() == false) {
			var tShape : b2Shape = shapes[i] as b2Shape;
			var inside : Boolean = tShape.TestPoint(tShape.m_body.GetXForm(), mousePVec);
			if (inside) {
				body = tShape.m_body;
				break;
			}
		}
	}
}
</pre>
<p>
あとはマウスを動かした時とマウスを離した時の処理を追加するだけです。
</p>
<pre class="brush: jscript; auto-links: false;">
//mouseUphandler
private function mouseUpHandler(event:MouseEvent):void {
	if(mouseJoint){
		world.DestroyJoint(mouseJoint);
		mouseJoint = null;
	}
}
//mouseMoveHandler
private function mouseMoveHandler(event:MouseEvent):void {
	if (mouseJoint) {
		var p2 : b2Vec2 = new b2Vec2(event.stageX / SCALE, event.stageY / SCALE);
		mouseJoint.SetTarget(p2);
	}
}
</pre>
<p>
マウス操作を追加しただけですが、何か色々とイメージが膨らみ遊び心を感じると思います。<br />
こうやって物理エンジンBox2Dを体験して、ちょこっとプログラムを追加しすだけで遊び心がわきますね！<br />
どんどんプログラムを追加して自分なりに色々と遊びたいと思います。
</p>
<pre class="brush: jscript; auto-links: false;">
package {
	//インポート
	import Box2D.Collision.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;
	import Box2D.Dynamics.*;
	import Box2D.Dynamics.Joints.*;
	import General.*;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;

	/**************************
	 * ADD CHILD = AS3
	 * http://www.addchild.net/
	 * Tatsuya Nishino
	***************************/
	//コンスラクタ
	public class Box2D2 extends Sprite {
		//インスタンスプロパティー
		private const SCALE:Number = 100; // 物理エンジン内の1mを表すためのピクセル数
		private var world:b2World; // 物理エンジンの管理クラス
		private var body:b2Body; // 本体
		private var mouseJointDef:b2MouseJointDef; // マウスジョイントの定義
		private var mouseJoint:b2MouseJoint; // マウスジョイント

		// メソッド
		public function Box2D2() {
			// 初期化
			init();
			createObject();

			// 毎フレームの処理
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
			stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
            stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
            stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
		}
		// init
		private function init():void {
			/*************************
			 *物理エンジンのセットアップ
			**************************/
			//外枠の定義
			var worldAABB:b2AABB = new b2AABB();
			worldAABB.lowerBound.Set(-100, -100);
			worldAABB.upperBound.Set(100, 100);

			//重力の定義
			var gravity:b2Vec2 = new b2Vec2(0, 10);

			//エンジンのセットアップ
			world = new b2World(worldAABB, gravity, true);

			/*************************
			 *床を作る
			**************************/
			//物体の定義
			var floorBodyDef:b2BodyDef = new b2BodyDef();
			floorBodyDef.position.Set(2.5, 3); // 床の位置
			floorBodyDef.angle = Math.PI / 24; //角度を指定

			//物体の形の定義
			var floorShapeDef:b2PolygonDef = new b2PolygonDef();
			floorShapeDef.SetAsBox(3, 0.1); //物体のサイズ
			floorShapeDef.friction = 0.3;
			floorShapeDef.density = 0;

			//物体を作る
			var floor:b2Body = world.CreateBody(floorBodyDef);
			floor.CreateShape(floorShapeDef);
			/*************************
			 *DebugDraw を有効にする
			**************************/
			var m_sprite:Sprite = new Sprite();
			var debugDraw:b2DebugDraw = new b2DebugDraw();
			debugDraw.m_sprite = m_sprite;
			debugDraw.m_drawScale = SCALE;
			debugDraw.m_fillAlpha = 0.5;
			debugDraw.m_lineThickness = 1;
			debugDraw.m_drawFlags = b2DebugDraw.e_shapeBit;
			world.SetDebugDraw(debugDraw);
			addChild(m_sprite);
		}
		private function createObject():void {
			/*************************
			 *落下物のセットアップ
			**************************/
			for (var i:uint = 0; i &lt; 20; i++) {
				// 物体の定義を作る (x 座標と角度はランダム)
				var bodyDef:b2BodyDef = new b2BodyDef();
				bodyDef.position.Set((300 * Math.random()) / SCALE, 0);
				bodyDef.angle = Math.PI / 2 * Math.random();

				// 物体を作る
				body = world.CreateBody(bodyDef);

				// 形の定義を作る
				var bodyShape:b2CircleDef = new b2CircleDef();
				bodyShape.radius = Math.random()*0.3+0.05;
				bodyShape.density = 0.5;
				bodyShape.friction = 1;
				bodyShape.restitution = 0.3;

				// 形を物体に追加する
				body.CreateShape(bodyShape);

				// 重さ・重心を計算する
				body.SetMassFromShapes();
			}
		}
		//mouseDownHandler
		private function mouseDownHandler(event:MouseEvent):void {
			var body : b2Body = GetBodyAtMouse(event.stageX, event.stageY);
			if (body) {
				var md : b2MouseJointDef = new b2MouseJointDef();
				md.body1 = world.m_groundBody;
				md.body2 = body;
				md.target.Set(event.stageX / SCALE, event.stageY / SCALE);
				md.maxForce = 500.0 * body.m_mass;
				md.timeStep = 1 / 24;
				mouseJoint = world.CreateJoint(md) as b2MouseJoint;
				body.WakeUp();
			}
		}
		//該当オブジェクトがあるかの判定
		private function GetBodyAtMouse(stageX : Number, stageY : Number) : b2Body {
			// Make a small box.
			var mousePVec : b2Vec2 = new b2Vec2();
			var mouseXWorldPhys : Number = stageX / SCALE;
			var mouseYWorldPhys : Number = stageY / SCALE;

			mousePVec.Set(mouseXWorldPhys, mouseYWorldPhys);
			var aabb : b2AABB = new b2AABB();
			aabb.lowerBound.Set(mouseXWorldPhys - 0.001, mouseYWorldPhys - 0.001);
			aabb.upperBound.Set(mouseXWorldPhys + 0.001, mouseYWorldPhys + 0.001);

			// Query the world for overlapping shapes.
			var k_maxCount : int = 10;
			var shapes : Array = new Array();
			var count : int = world.Query(aabb, shapes, k_maxCount);
			var body : b2Body = null;
			for (var i : int = 0;i &lt; count; ++i) {
				if (shapes[i].m_body.IsStatic() == false) {
					var tShape : b2Shape = shapes[i] as b2Shape;
					var inside : Boolean = tShape.TestPoint(tShape.m_body.GetXForm(), mousePVec);
					if (inside) {
						body = tShape.m_body;
						break;
					}
				}
			}
			return body;
		}
		//mouseUphandler
		private function mouseUpHandler(event:MouseEvent):void {
			if(mouseJoint){
				world.DestroyJoint(mouseJoint);
				mouseJoint = null;
			}
		}
		//mouseMoveHandler
		private function mouseMoveHandler(event:MouseEvent):void {
			if (mouseJoint) {
				var p2 : b2Vec2 = new b2Vec2(event.stageX / SCALE, event.stageY / SCALE);
				mouseJoint.SetTarget(p2);
			}
		}
		//enterFrameHandler
		private function enterFrameHandler(event:Event):void {
			world.Step(1 / 24, 10);
		}
	}
}
</pre>
<div id="flash">
Box2DFlashAS3（ver2.0.2）で物体をマウス操作する
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/middle/Box2D-2.swf", "flash", "550", "400", "9.0.0");
</script></p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-middle/box2d-as3-middle/407.html" title="Box2DFlashAS3を使ってみる[Box2D-1] (2010年1月19日)">Box2DFlashAS3を使ってみる[Box2D-1]</a> (0)</li>
	<li><a href="http://www.addchild.net/pf/380.html" title="物理エンジン[Box2D]を使ったの作品紹介 (2010年1月8日)">物理エンジン[Box2D]を使ったの作品紹介</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-memo/358.html" title="FlashDevelopの便利ショートカット (2009年12月24日)">FlashDevelopの便利ショートカット</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-memo/331.html" title="FlashDevelopのインストールと初期設定 (2009年11月10日)">FlashDevelopのインストールと初期設定</a> (2)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-middle/box2d-as3-middle/411.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Box2DFlashAS3を使ってみる[Box2D-1]</title>
		<link>http://www.addchild.net/as3-middle/box2d-as3-middle/407.html</link>
		<comments>http://www.addchild.net/as3-middle/box2d-as3-middle/407.html#comments</comments>
		<pubDate>Tue, 19 Jan 2010 04:08:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Box2D]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[FlashDevelop]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=407</guid>
		<description><![CDATA[Box2DFlashAS3（ver2.0.2）を使って物理エンジンを体験する

複雑な物理計算を処理してくれるライブラリーとして注目を浴びているのが、Box2DFlashAS3です。
とても便利なライブラリーでFlash [...]]]></description>
			<content:encoded><![CDATA[<h3>Box2DFlashAS3（ver2.0.2）を使って物理エンジンを体験する</h3>
<p>
複雑な物理計算を処理してくれるライブラリーとして注目を浴びているのが、Box2DFlashAS3です。<br />
とても便利なライブラリーでFlash、ActionScriptの世界を楽しくさせてくれますが、その反面Box2Dを使いこなすまでには、一筋縄ではいかなく中々難しいのが現状です。<br />
しかし覚えて損はしないライブラリーなのは間違いないので、理解するよりまずは使っていくことにしました。
</p>
<p>
まずはBox2Dのライブラリーをダウンロードしてきて、解凍したフォルダ内のBox2Dフォルダ、Generalフォルダ、TestBedフォルダ（要らないかも）をflaファイルまたはasファイルと同じ階層に置き、アクションスクリプトにインポートさせます。<br />
その前にBox2Dを体験したい場合は解凍したフォルダ内のHelloWorld.swf、PhysTest.swfなどを開くと体験することができます。
</p>
<pre class="brush: jscript; auto-links: false;">
//インポート
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Dynamics.Joints.*;
import General.*;
</pre>
<p>
ここからはザクっとBox2Dを使うための簡単な説明を。。。<br />
Flashの中にBox2Dと言う世界を作ります。<br />
地面、左右の壁、天井などを設定することにより、世界を大きさ、サイズを決めることができます。<br />
またその中に物体を作ることにより、重力、反発、摩擦などが発生します。
</p>
<p><span id="more-407"></span></p>
<p>
Box2Dの世界をつくる
</p>
<pre class="brush: jscript; auto-links: false;">
//外枠の定義
var worldAABB:b2AABB = new b2AABB();
worldAABB.lowerBound.Set(-100, -100);
worldAABB.upperBound.Set(100, 100);
//重力の定義
var gravity:b2Vec2 = new b2Vec2(0, 10);
//エンジンのセットアップ
world = new b2World(worldAABB, gravity, true);
</pre>
<p>
地面をつくる
</p>
<pre class="brush: jscript; auto-links: false;">
//物体の定義
var floorBodyDef:b2BodyDef = new b2BodyDef();
floorBodyDef.position.Set(2.5, 3); // 床の位置
floorBodyDef.angle = Math.PI / 24; //角度を指定
//物体の形の定義
var floorShapeDef:b2PolygonDef = new b2PolygonDef();
floorShapeDef.SetAsBox(3, 0.1); //物体のサイズ
floorShapeDef.friction = 0.3;
floorShapeDef.density = 0;
//物体を作る
var floor:b2Body = world.CreateBody(floorBodyDef);
floor.CreateShape(floorShapeDef);
</pre>
<p>
落下物をつくる
</p>
<pre class="brush: jscript; auto-links: false;">
for (var i:uint = 0; i &lt; 20; i++) {
    // 物体の定義を作る (x 座標と角度はランダム)
    var bodyDef:b2BodyDef = new b2BodyDef();
    bodyDef.position.Set((300 * Math.random()) / SCALE, 0);
    bodyDef.angle = Math.PI / 2 * Math.random();
    // 物体を作る
    body = world.CreateBody(bodyDef);
    // 形の定義を作る
    var bodyShape:b2CircleDef = new b2CircleDef();
    bodyShape.radius = Math.random()*0.3+0.05;
    bodyShape.density = 0.5;
    bodyShape.friction = 1;
    bodyShape.restitution = 0.3;
    // 形を物体に追加する
    body.CreateShape(bodyShape);
    // 重さ・重心を計算する
    body.SetMassFromShapes();
}
</pre>
<p>
基本は上記の世界の設定、床など（固定物）の設定、落下物の設定が必要で、さらにエンターフレームやデバックドローの設定をするとBox2Dの世界が開けます。<br />
以下はカスタムクラスでのコードになりますので、Flashを使う場合はflaファイルのドキュメントプロパティーにカスタムクラス名を指定して下さい。
</p>
<pre class="brush: jscript; auto-links: false;">
package {
	//インポート
	import Box2D.Collision.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;
	import Box2D.Dynamics.*;
	import Box2D.Dynamics.Joints.*;
	import General.*;
	import flash.display.Sprite;
	import flash.events.Event;

	/**************************
	 * ADD CHILD = AS3
	 * http://www.addchild.net/
	 * Tatsuya Nishino
	***************************/
	//コンスラクタ
	public class Box2D1 extends Sprite {
		//インスタンスプロパティー
		private const SCALE:Number = 100; // 物理エンジン内の1mを表すためのピクセル数
		private var world:b2World; // 物理エンジンの管理クラス
		private var body:b2Body; // 本体

		// メソッド
		public function Box2D1() {
			// 初期化
			init();
			createObject();

			// 毎フレームの処理
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}
		// init
		private function init():void {
			/*************************
			 *物理エンジンのセットアップ
			**************************/
			//外枠の定義
			var worldAABB:b2AABB = new b2AABB();
			worldAABB.lowerBound.Set(-100, -100);
			worldAABB.upperBound.Set(100, 100);

			//重力の定義
			var gravity:b2Vec2 = new b2Vec2(0, 10);

			//エンジンのセットアップ
			world = new b2World(worldAABB, gravity, true);

			/*************************
			 *床を作る
			**************************/
			//物体の定義
			var floorBodyDef:b2BodyDef = new b2BodyDef();
			floorBodyDef.position.Set(2.5, 3); // 床の位置
			floorBodyDef.angle = Math.PI / 24; //角度を指定

			//物体の形の定義
			var floorShapeDef:b2PolygonDef = new b2PolygonDef();
			floorShapeDef.SetAsBox(3, 0.1); //物体のサイズ
			floorShapeDef.friction = 0.3;
			floorShapeDef.density = 0;

			//物体を作る
			var floor:b2Body = world.CreateBody(floorBodyDef);
			floor.CreateShape(floorShapeDef);
			/*************************
			 *DebugDraw を有効にする
			**************************/
			var m_sprite:Sprite = new Sprite();
			var debugDraw:b2DebugDraw = new b2DebugDraw();
			debugDraw.m_sprite = m_sprite;
			debugDraw.m_drawScale = SCALE;
			debugDraw.m_fillAlpha = 0.5;
			debugDraw.m_lineThickness = 1;
			debugDraw.m_drawFlags = b2DebugDraw.e_shapeBit;
			world.SetDebugDraw(debugDraw);
			addChild(m_sprite);
		}
		private function createObject():void {
			/*************************
			 *落下物のセットアップ
			**************************/
			for (var i:uint = 0; i &lt; 20; i++) {
				// 物体の定義を作る (x 座標と角度はランダム)
				var bodyDef:b2BodyDef = new b2BodyDef();
				bodyDef.position.Set((300 * Math.random()) / SCALE, 0);
				bodyDef.angle = Math.PI / 2 * Math.random();

				// 物体を作る
				body = world.CreateBody(bodyDef);

				// 形の定義を作る
				var bodyShape:b2CircleDef = new b2CircleDef();
				bodyShape.radius = Math.random()*0.3+0.05;
				bodyShape.density = 0.5;
				bodyShape.friction = 1;
				bodyShape.restitution = 0.3;

				// 形を物体に追加する
				body.CreateShape(bodyShape);

				// 重さ・重心を計算する
				body.SetMassFromShapes();
			}
		}
		//enterFrameHandler
		private function enterFrameHandler(event:Event):void {
			world.Step(1 / 24, 10);
		}
	}
}
</pre>
<div id="flash">
Box2DFlashAS3（ver2.0.2）を使って物理エンジンを体験する
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/middle/Box2D-1.swf", "flash", "550", "400", "9.0.0");
</script></p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-middle/box2d-as3-middle/411.html" title="Box2DFlashAS3を使ってマウス操作する[Box2D-2] (2010年2月9日)">Box2DFlashAS3を使ってマウス操作する[Box2D-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/pf/380.html" title="物理エンジン[Box2D]を使ったの作品紹介 (2010年1月8日)">物理エンジン[Box2D]を使ったの作品紹介</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-memo/358.html" title="FlashDevelopの便利ショートカット (2009年12月24日)">FlashDevelopの便利ショートカット</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-memo/331.html" title="FlashDevelopのインストールと初期設定 (2009年11月10日)">FlashDevelopのインストールと初期設定</a> (2)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-middle/box2d-as3-middle/407.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>物理エンジン[Box2D]を使ったの作品紹介</title>
		<link>http://www.addchild.net/pf/380.html</link>
		<comments>http://www.addchild.net/pf/380.html#comments</comments>
		<pubDate>Fri, 08 Jan 2010 08:37:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ポートフォリオ]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Portfolio]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=380</guid>
		<description><![CDATA[外部から読み込んだ画像（制作実績）に物理エンジンを設定してみる

よく見かけてやってみたいと思っていましたが、実際やってみるとすごい苦労しました。
激しく上に掘り投げるとどっか行ってしまいます…


物理エンジンBox2 [...]]]></description>
			<content:encoded><![CDATA[<h3>外部から読み込んだ画像（制作実績）に物理エンジンを設定してみる</h3>
<p>
よく見かけてやってみたいと思っていましたが、実際やってみるとすごい苦労しました。<br />
激しく上に掘り投げるとどっか行ってしまいます…
</p>
<div id="flash">
物理エンジンBox2Dを利用した制作実績
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/pf/1-A.swf", "flash", "700", "500", "9.0.0");
</script></p>
<dl>
<dt>制作日</dt>
<dd>2010年１月8日</dd>
<dt>使用ツール</dt>
<dd>ActionScript 3.0｜FlashDevelop｜Box2DFlashAS3 ver2.0.1</dd>
</dl>
<p>
まだまだ勉強不足で色んなサイトを巡回し、実験してはダメの繰り返しで取り合えずではありますが、こんな感じに仕上げました。<br />
コードはとても見せれたもんではないので、もう少し勉強してからと言うことでお願いします。</p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-middle/box2d-as3-middle/411.html" title="Box2DFlashAS3を使ってマウス操作する[Box2D-2] (2010年2月9日)">Box2DFlashAS3を使ってマウス操作する[Box2D-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-middle/box2d-as3-middle/407.html" title="Box2DFlashAS3を使ってみる[Box2D-1] (2010年1月19日)">Box2DFlashAS3を使ってみる[Box2D-1]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/260.html" title="ムービークリップをボタンとして使う[2-4] (2009年9月13日)">ムービークリップをボタンとして使う[2-4]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/202.html" title="ムービークリップをボタンとして使う[2-3] (2009年9月9日)">ムービークリップをボタンとして使う[2-3]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/pf/380.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ムービークリップを徐々に加速させる[3-7]</title>
		<link>http://www.addchild.net/as3-beginner/ls3/370.html</link>
		<comments>http://www.addchild.net/as3-beginner/ls3/370.html#comments</comments>
		<pubDate>Tue, 05 Jan 2010 08:57:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[lesson3]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[MovieClip]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=370</guid>
		<description><![CDATA[カスタムクラスで読み込んだムービークリップに加速度をつけて移動させる

『Math.random() を使ってランダムに色を変える方法』で利用したBall.asを今回も使ってステージにボールを配置します。
X軸はステージ [...]]]></description>
			<content:encoded><![CDATA[<h3>カスタムクラスで読み込んだムービークリップに加速度をつけて移動させる</h3>
<p>
『Math.random() を使ってランダムに色を変える方法』で利用したBall.asを今回も使ってステージにボールを配置します。<br />
X軸はステージの1/5の位置に配置し、Y軸をステージの真ん中に配置させます。（サイズ50と青色を指定）
</p>
<pre class="brush: jscript; auto-links: false;">
//Ball.asを読み込み
var ball:Ball = new Ball(50, 0x0000ff);
addChild(ball);
ball.x = stage.stageWidth / 5;
ball.y = stage.stageHeight / 2;
</pre>
<p>
これでステージにボールが表示されるようになったと思いますので、次にボールを動かすスクリプトを書きます。<br />
今までやってきたムービークリップの動かし方にさらに加速度のプログラムを足します。
</p>
<p><span id="more-370"></span></p>
<pre class="brush: jscript; auto-links: false;">
//イベントリスナー
ball.addEventListener(Event.ENTER_FRAME, loop);

function loop(event:Event):void{
	ball.x += 1;
}
</pre>
<p>
上記が従来ムービークリップのX軸に1を足して動かす方法ですが、下記は1の変わりに変数（vx)を用いてX軸の数値に置き換え、さらに加速変数（ax)をフレームが読み込まれる度に足して変数vxの数値を増やしていく感じになります。
</p>
<pre class="brush: jscript; auto-links: false;">
//イベントリスナー
ball.addEventListener(Event.ENTER_FRAME, loop);

function loop(event:Event):void{
	vx += ax;
	ball.x += vx;
}
</pre>
<p>
こうすることにより、ボールがどんどん加速しているように見えます。<br />
今回は加速度を1に設定しましたが、数値を変えれば加速度を調整できます。<br />
この加速度は色々な場面でも使うことができるので、徐々に何かをしたい時になどに使うと便利です。
</p>
<pre class="brush: jscript; auto-links: false;">
//Ball.asを読み込み
var ball:Ball = new Ball(50, 0x0000ff);
//インスタンスプロパティー
var vx:Number = 0; //初期値
var ax:Number = 1; //加速度

addChild(ball);
ball.x = stage.stageWidth / 5;
ball.y = stage.stageHeight / 2;
//イベントリスナー
ball.addEventListener(Event.ENTER_FRAME, loop);

function loop(event:Event):void{
	vx += ax;
	ball.x += vx;
}
</pre>
<div id="flash">
カスタムクラスで読み込んだムービークリップに加速度をつけて移動させる
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/3/7-A.swf", "flash", "800", "200", "9.0.0");
</script></p>
<p>
ボールがなくなってたらもう一度更新して下さい。</p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-beginner/ls3/297.html" title="クラス参照でステージにムービークリップを配置[3-1] (2009年10月7日)">クラス参照でステージにムービークリップを配置[3-1]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/309.html" title="カスタムクラスでステージにムービークリップを配置[3-3] (2009年10月20日)">カスタムクラスでステージにムービークリップを配置[3-3]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/286.html" title="クラス参照でステージにムービークリップを配置[3-2] (2009年10月13日)">クラス参照でステージにムービークリップを配置[3-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/316.html" title="Tweenクラスでムービークリップをトゥイーンさせる[3-4] (2009年10月29日)">Tweenクラスでムービークリップをトゥイーンさせる[3-4]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/260.html" title="ムービークリップをボタンとして使う[2-4] (2009年9月13日)">ムービークリップをボタンとして使う[2-4]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-beginner/ls3/370.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FlashDevelopの便利ショートカット</title>
		<link>http://www.addchild.net/as3-memo/358.html</link>
		<comments>http://www.addchild.net/as3-memo/358.html#comments</comments>
		<pubDate>Thu, 24 Dec 2009 03:17:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript 3.0 作業メモ]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[FlashDevelop]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=358</guid>
		<description><![CDATA[Flash Developで良く使うショートカット一覧

FlashDevelopでの作業効率を上げる為に、覚えておくと便利なショートカットを忘れない為にメモします。
あくまで個人の判断ですので、その他にも便利と思うショ [...]]]></description>
			<content:encoded><![CDATA[<h3>Flash Developで良く使うショートカット一覧</h3>
<p>
FlashDevelopでの作業効率を上げる為に、覚えておくと便利なショートカットを忘れない為にメモします。<br />
あくまで個人の判断ですので、その他にも便利と思うショートカットが一杯あると思います。
</p>
<h4>基本ショートカット</h4>
<table>
<tr>
<th>キーコード</th>
<th>説明</th>
<th>使い方</th>
</tr>
<tr>
<td>Ctrl+A</td>
<td>全コード選択</td>
<td>コード上どこからでもCtrl+Aで全選択</td>
</tr>
<tr>
<td>Ctrl+Z</td>
<td>戻る</td>
<td>一つ前の状態に戻る</td>
</tr>
<tr>
<td>Ctrl+C</td>
<td>コピー</td>
<td>コピーしたい箇所を選択してCtrl+C</td>
</tr>
<tr>
<td>Ctrl+V</td>
<td>貼り付け</td>
<td>コピーした内容を貼り付ける</td>
</tr>
<tr>
<td>Ctrl+S</td>
<td>保存</td>
<td>開いてるファイルを保存する</td>
</tr>
<tr>
<td>Ctrl+N</td>
<td>新規ファイル開く</td>
<td>新規ファイルをデフォルトで開く</td>
</tr>
</table>
<p><span id="more-358"></span></p>
<h4>作業補助</h4>
<table>
<tr>
<th>キーコード</th>
<th>説明</th>
<th>使い方</th>
</tr>
<tr>
<td>Ctrl+Q</td>
<td>一行コメントアウト（もっかい押すと解除になる）</td>
<td>コメントアウトしたい行でCtrl+Q</td>
</tr>
<tr>
<td>Ctrl+Shift+Q</td>
<td>複数行行コメントアウト（もっかい押すと解除になる）</td>
<td>コメントアウトしたいエリアを選択してCtrl+Shift+Q</td>
</tr>
<tr>
<td>Ctrl+D</td>
<td>行の複製</td>
<td>コピーしたい行でCtrl+Dを使うと下の行に複製</td>
</tr>
<tr>
<td>Ctrl+B</td>
<td>スニペッド呼び出し</td>
<td>入力したタグのあとにCtrl+Bで入力補助のスニペッド呼び出し</td>
</tr>
</table>
<p>
便利と思うショートカットが見つかったら追記していきます。</p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-memo/331.html" title="FlashDevelopのインストールと初期設定 (2009年11月10日)">FlashDevelopのインストールと初期設定</a> (2)</li>
	<li><a href="http://www.addchild.net/as3-middle/box2d-as3-middle/411.html" title="Box2DFlashAS3を使ってマウス操作する[Box2D-2] (2010年2月9日)">Box2DFlashAS3を使ってマウス操作する[Box2D-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-middle/box2d-as3-middle/407.html" title="Box2DFlashAS3を使ってみる[Box2D-1] (2010年1月19日)">Box2DFlashAS3を使ってみる[Box2D-1]</a> (0)</li>
	<li><a href="http://www.addchild.net/pf/380.html" title="物理エンジン[Box2D]を使ったの作品紹介 (2010年1月8日)">物理エンジン[Box2D]を使ったの作品紹介</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-memo/358.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Math.random() を使ってランダムに色を変える方法</title>
		<link>http://www.addchild.net/as3-memo/352.html</link>
		<comments>http://www.addchild.net/as3-memo/352.html#comments</comments>
		<pubDate>Fri, 11 Dec 2009 02:10:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript 3.0 作業メモ]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=352</guid>
		<description><![CDATA[ランダムにボールの色を変えてみる『Math.random() * 0xffffff』

ランダムにボールの色を変える前に、準備としてBallクラス（Ball.as）を作成しといて外部ファイルから読み込んでボールを作ります [...]]]></description>
			<content:encoded><![CDATA[<h3>ランダムにボールの色を変えてみる『Math.random() * 0xffffff』</h3>
<p>
ランダムにボールの色を変える前に、準備としてBallクラス（Ball.as）を作成しといて外部ファイルから読み込んでボールを作ります。<br />
※Ball.asを使いたいファイルと同階層に配置してください。
</p>
<pre class="brush: jscript; auto-links: false;">
package {
	//インポート
	import flash.display.Sprite;

	//コンスラクタ
	public class  Ball extends Sprite{
		//インスタンスプロパティー
		public var radius:Number;
		public var color:uint;

		//メソッドメニュー
		public function Ball(radius:Number, color:uint) {
			this.radius = radius;
			this.color = color;
			init();
		}

		//メソッド
		public function init():void{
			graphics.beginFill(color);
			graphics.drawCircle(0, 0, radius);
			graphics.endFill();
		}
	}
}
</pre>
<p>
radius（ボールのサイズ）とcolor（ボールの色）をあらかじめ変数に置き換えて、Ball.asを読み込んでボールを作る時に指定します。
</p>
<p><span id="more-352"></span></p>
<p>
表示させていファイルにNew演算子を使ってボールを作ります。この時にサイズと色を指定します。<br />
今回はサイズ50と色を取り合えず青にします。
</p>
<pre class="brush: jscript; auto-links: false;">
//Ball.asを読み込み
var ball:Ball = new Ball(50, 0x0000ff);
addChild(ball);
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
</pre>
<p>
これでパブリッシュするとステージの真ん中に青のボールが表示されると思います。<br />
では、次に色をランダムにします。<br />
ランダムにするには、Math.random()を使うので、これを利用して、『Math.random() * 0xffffff』とします。<br />
これで色がランダムに変わります。
</p>
<pre class="brush: jscript; auto-links: false;">
//Ball.asを読み込み
var ball:Ball = new Ball(50, Math.random() * 0xffffff);
addChild(ball);
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
</pre>
<p>
上記はランダムを取り入れた、完成版です。
</p>
<div id="flash">
ランダムにボールの色を変えてみる
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/memo/randomBall.swf", "flash", "300", "200", "9.0.0");
</script></p>
<p>
再読み込みすればボールの色が変わります。<br />
日本の国旗になった人はすごいラッキーな人です。</p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-beginner/ls3/286.html" title="クラス参照でステージにムービークリップを配置[3-2] (2009年10月13日)">クラス参照でステージにムービークリップを配置[3-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/297.html" title="クラス参照でステージにムービークリップを配置[3-1] (2009年10月7日)">クラス参照でステージにムービークリップを配置[3-1]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/309.html" title="カスタムクラスでステージにムービークリップを配置[3-3] (2009年10月20日)">カスタムクラスでステージにムービークリップを配置[3-3]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/316.html" title="Tweenクラスでムービークリップをトゥイーンさせる[3-4] (2009年10月29日)">Tweenクラスでムービークリップをトゥイーンさせる[3-4]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-memo/352.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TransitionManagerクラスを使ってトランジションさせる[3-6]</title>
		<link>http://www.addchild.net/as3-beginner/ls3/343.html</link>
		<comments>http://www.addchild.net/as3-beginner/ls3/343.html#comments</comments>
		<pubDate>Wed, 02 Dec 2009 02:18:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[lesson3]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[TransitionManager]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=343</guid>
		<description><![CDATA[ステージに配置したムービークリップにTransitionManagerクラスを使ってトランジション効果をつける

[1-8]でフェードインさせるアクションスクリプトとよく似た感じになりますが、TransitionMana [...]]]></description>
			<content:encoded><![CDATA[<h3>ステージに配置したムービークリップにTransitionManagerクラスを使ってトランジション効果をつける</h3>
<p>
[1-8]でフェードインさせるアクションスクリプトとよく似た感じになりますが、TransitionManagerクラスを使用すればもっと違う表現の効果をあたえることができます。
</p>
<p>
タイムライン上にあるアクションスクリプトに、まずTweenクラスとeasingクラスをインポートさせ、使えるようにします。<br />
（[3-4]同様）
</p>
<pre class="brush: jscript; auto-links: false;">
//クラスのインポート
import fl.transitions.*;
import fl.transitions.easing.*;
</pre>
<p>
[3-3]でカクスタムクラスを使ってステージ上にムービークリップを配置しているアクションスクリプトのBallをimgに変更してステージに表示させます。<br />
（[1-8]同様にステージにimg_mcのムービークリップを用意している前提です）
</p>
<p><span id="more-343"></span></p>
<pre class="brush: jscript; auto-links: false;">
// imgクラスからインスタンスを作る
var img:img_mc = new img_mc();
addChild(img);
img.x = stage.stageWidth / 2;
img.y = stage.stageHeight / 2;
</pre>
<p>
表示させるムービークリップにトランジション効果を指定します。
</p>
<pre class="brush: jscript; auto-links: false;">
//トランジション効果
TransitionManager.start(img,{
						type:Blinds, //トランジションタイプ
						direction:Transition.IN,  //transition効果の方向
						duration:1,  //動作時間
						easing:None.easeNone, //イージング設定
						numStrips:10,
						dimension:0
						});
</pre>
<p>
addChildで画像が読み込まれると同時に、トランジション効果が始動する感じになります。
</p>
<pre class="brush: jscript; auto-links: false;">
//クラスのインポート
import fl.transitions.*;
import fl.transitions.easing.*;

// imgクラスからインスタンスを作る
var img:img_mc = new img_mc();
addChild(img);
img.x = stage.stageWidth / 2;
img.y = stage.stageHeight / 2;

//トランジション効果
TransitionManager.start(img,{
						type:Blinds,
						direction:Transition.IN,
						duration:1,
						easing:None.easeNone,
						numStrips:10,
						dimension:0
						});
</pre>
<p>
asファイルに関しては[3-3]と同じになりますので、省略します。<br />
動作が終わっている場合は再読み込みして下さい。
</p>
<div id="flash">
ステージに配置したムービークリップにTransitionManagerクラスを使ってトランジション効果をつける
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/3/6-A.swf", "flash", "550", "200", "9.0.0");
</script></p>
<h4>トランジションの種類</h4>
<table>
<tr>
<th>トランジションタイプ</th>
<th>説明</th>
</tr>
<tr>
<td>Blinds</td>
<td>ブラインドカーテンみたいに回転します。</td>
</tr>
<tr>
<td>Fade</td>
<td>フェードインまたはフェードアウトします。</td>
</tr>
<tr>
<td>Fly</td>
<td>定した方向からムービークリップをスライドインします。</td>
</tr>
<tr>
<td>Iris</td>
<td>マスクを利用して表示させる</td>
</tr>
<tr>
<td>Photo</td>
<td>カメラのフラッシュに用に一瞬光ります。</td>
</tr>
<tr>
<td>PixelDissolve</td>
<td>チェッカーボードのようなモザイク処理をします。</td>
</tr>
<tr>
<td>Rotate </td>
<td>回転します。</td>
</tr>
<tr>
<td>Squeeze</td>
<td>水平または垂直に拡大/縮小します。</td>
</tr>
<tr>
<td>Wipe</td>
<td>マスクを利用して表示させる。</td>
</tr>
<tr>
<td>Zoom</td>
<td>拡大/縮小しながら表示します。</td>
</tr>
</table>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/260.html" title="ムービークリップをボタンとして使う[2-4] (2009年9月13日)">ムービークリップをボタンとして使う[2-4]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/202.html" title="ムービークリップをボタンとして使う[2-3] (2009年9月9日)">ムービークリップをボタンとして使う[2-3]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/192.html" title="ムービークリップをボタンとして使う[2-2] (2009年9月8日)">ムービークリップをボタンとして使う[2-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/184.html" title="ムービークリップをボタンとして使う[2-1] (2009年9月7日)">ムービークリップをボタンとして使う[2-1]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-beginner/ls3/343.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Loaderクラスで外部ファイルから画像を複数読み込む[3-5]</title>
		<link>http://www.addchild.net/as3-beginner/ls3/337.html</link>
		<comments>http://www.addchild.net/as3-beginner/ls3/337.html#comments</comments>
		<pubDate>Thu, 19 Nov 2009 08:11:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[lesson3]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Loader]]></category>
		<category><![CDATA[URLRequest]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=337</guid>
		<description><![CDATA[外部にあるイメージ画像をLoaderクラスを使って読み込む

Flashのライブラリーに画像を置かずに、外部から画像がある場所を指定して画像を読み込みます。
こうすることにより、画像のみ変更する時に、イチイチFlashを [...]]]></description>
			<content:encoded><![CDATA[<h3>外部にあるイメージ画像をLoaderクラスを使って読み込む</h3>
<p>
Flashのライブラリーに画像を置かずに、外部から画像がある場所を指定して画像を読み込みます。<br />
こうすることにより、画像のみ変更する時に、イチイチFlashを編集しなくて済むので、非常に有効的な方法だと思います。
</p>
<p>
まず表示させたい画像をフォルダにまとめて、swfファイルと同じ階層に配置します。（今回は3枚の外部画像を読み込んでみたいと思います。）
</p>
<p>
画像の用意ができたら、アクションスクリプトを書いていきます。<br />
Actionscript3.0からなんですが、外部から画像を読み込むときにLoaderクラスと言う便利な機能が追加されました。<br />
そこでnew演算子を使って、変数myLoaderに新しくLoaderクラスを読み込ませます。しかしこれだけでは、画像がどこにあるのか分からないので画像がある場所をURLRquestクラスを使って指定し、変数ImgUrlに置き換えてからmyLoaderにImgUrlをロードさせるカラクリになります。<br />
あとはaddChilで表示させます。
</p>
<pre class="brush: jscript; auto-links: false;">
//Loaderオブジェクト生成
var myLoader:Loader = new Loader();
//ファイルパス読み込み
var ImgUrl:URLRequest = new URLRequest(&quot;images/img1.jpg&quot;);
//画像読み込み
myLoader.load(ImgUrl);
addChild(myLoader);
</pre>
<p><span id="more-337"></span></p>
<p>
しかし今回は複数画像を読み込むようにする為、画像の場所を指定したパスを配列に格納してから使うことにします。<br />
さらに読み込んだ画像ごとにy軸の位置をずらします。
</p>
<pre class="brush: jscript; auto-links: false;">
//配列
var url:Array = new Array();
url[0] = &quot;images/img1.jpg&quot;;
url[1] = &quot;images/img2.jpg&quot;;
url[2] = &quot;images/img3.jpg&quot;;

for (var i:int = 0; i &lt; 3; i++) {
	//Loaderオブジェクト生成
	var myLoader:Loader = new Loader();
	//ファイルパス読み込み
	var ImgUrl:URLRequest = new URLRequest(url[i]);

	//画像読み込み
	myLoader.load(ImgUrl);
	myLoader.y = 60 * i;
	addChild(myLoader);

}
</pre>
<div id="flash">
外部にあるイメージ画像をLoaderクラスを使って読み込む
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/3/5-A.swf", "flash", "400", "180", "9.0.0");
</script></p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-beginner/ls3/286.html" title="クラス参照でステージにムービークリップを配置[3-2] (2009年10月13日)">クラス参照でステージにムービークリップを配置[3-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/260.html" title="ムービークリップをボタンとして使う[2-4] (2009年9月13日)">ムービークリップをボタンとして使う[2-4]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/202.html" title="ムービークリップをボタンとして使う[2-3] (2009年9月9日)">ムービークリップをボタンとして使う[2-3]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/284.html" title="ボタンに連動してムービークリップの表示を変える[2-7] (2009年10月1日)">ボタンに連動してムービークリップの表示を変える[2-7]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-beginner/ls3/337.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>FlashDevelopのインストールと初期設定</title>
		<link>http://www.addchild.net/as3-memo/331.html</link>
		<comments>http://www.addchild.net/as3-memo/331.html#comments</comments>
		<pubDate>Tue, 10 Nov 2009 09:29:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript 3.0 作業メモ]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[FlashDevelop]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=331</guid>
		<description><![CDATA[FlashDevlopを導入する為の作業メモ

ActionScript3.0を勉強するにあたり、当たり前のようにAdobe社のFlashを使っていましたが、実はFlash CS3以降でないとActionScript3. [...]]]></description>
			<content:encoded><![CDATA[<h3>FlashDevlopを導入する為の作業メモ</h3>
<p>
ActionScript3.0を勉強するにあたり、当たり前のようにAdobe社のFlashを使っていましたが、実はFlash CS3以降でないとActionScript3.0を使うことができません。<br />
そこでFlash CS3以降の環境がなくてもActionScript3.0が使える環境を導入することにしました。
</p>
<p>
他にも色々やりかたがあるかとは思いますが、ここではFlashDevlopを使ってActionScript3.0を書き、Flex SDKでパブリッシュする方法の設定をしたいと思います。間違ってたらすいません。<br />
上記の書き方では何かややこしい設定っぽく感じますが、FlashDevlopにFlex SDKがここにありますよって教えてあげるだけでいいんです。
</p>
<p>
簡単に作業手順を紹介します。（現バージョンはFlashDevelop 3.0.6 RTMとFlex 3.4 SDKです）<br />
まず<a href="http://www.flashdevelop.org/community/viewtopic.php?f=11&#038;t=5669">FlashDevelop 3.0.6 RTM</a>（下のDownloadコーナーからできます）と<a href="http://www.adobe.com/products/flex/flexdownloads/">Adobe &#8211; Flex 3 SDK</a>（Flex 3.4 SDKのテキストリンクからできます）をダウンロードします。
</p>
<p>
ダウンロードが完了したら、ダウンロードした場所にFlashDevelop-3.0.6-RTM.exeとfd3rc1.zipがあると思いますので、まずはFlashDevelop-3.0.6-RTM.exeクリックしてインストールをします。<br />
セットアップが完了したら、fd3rc1.zipを解凍してマイコンピュータのCドライブに移動します。（Program Filesの中に置くとなぜか動かない）<br />
移動したら、flex_sdk_3.4フォルダの中にあるbinフォルダの中にjvm.configがあるので、一部書き換えます。
</p>
<pre class="brush: jscript; auto-links: false;">
//現状
# Arguments to VM

java.args=-Xmx384m -Dsun.io.useCanonCaches=false
</pre>
<pre class="brush: jscript; auto-links: false;">
//書き換え後
# Arguments to VM

java.args=-Xmx384m -Dsun.io.useCanonCaches=false -Duser.language=en -Duser.region=JP
</pre>
<p>
これでFlexSDKの設定が完了ですので、次にFlashDevelopの設定をします。
</p>
<p><span id="more-331"></span></p>
<p>
デスクトップにあるFlashDevlopのアイコンをクリックして立ち上げます。<br />
立ち上がったら、メニューバーのTools→Program Settingsを選択し、さらに左側のプラグイン一覧にAS3Contextを選択します。<br />
するとメインエリアにLanguageの中にFlex SDK Locationがあるので、ここに先程移動したflex_sdk_3.4のパスを指定します。（C:\flex_sdk_3.4な感じ）
</p>
<p>
ついでにFlashDevlopの一部を日本語対応にします。<br />
<a href="http://www.logicalyze.net/blog/?p=1928">FlashDevelop 3.0.0 RC2 のメニューを日本語化してみる | logicalyze::blog</a>で公開しているファイルをダウンロードし解凍したフォルダの中にある.xmlファイルをすべてを、インストールしたFlashDevlopフォルダの中にあるSettingフォルダの中に上書きします。<br />
これで一部ですが、日本語になってると思います。
</p>
<p><P><br />
次にtrace()を使っても表示されるようにデバック版Flash Playerにします。<br />
flex_sdk_3.4フォルダの中にruntimesフォルダがあり、その中にplayerフォルダがるので自分の環境にあったPlayerを選択して、すべてのアイコンをクリックして下さい。<br />
これでOutPutパネルにtrace()した文字が表示されるはずです。<br />
</P></p>
<p>
以上で簡単ですが、説明終わります。<br />
基本、自分用の作業メモですので、あしからず。。。</p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-memo/358.html" title="FlashDevelopの便利ショートカット (2009年12月24日)">FlashDevelopの便利ショートカット</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-middle/box2d-as3-middle/411.html" title="Box2DFlashAS3を使ってマウス操作する[Box2D-2] (2010年2月9日)">Box2DFlashAS3を使ってマウス操作する[Box2D-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-middle/box2d-as3-middle/407.html" title="Box2DFlashAS3を使ってみる[Box2D-1] (2010年1月19日)">Box2DFlashAS3を使ってみる[Box2D-1]</a> (0)</li>
	<li><a href="http://www.addchild.net/pf/380.html" title="物理エンジン[Box2D]を使ったの作品紹介 (2010年1月8日)">物理エンジン[Box2D]を使ったの作品紹介</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-memo/331.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tweenクラスでムービークリップをトゥイーンさせる[3-4]</title>
		<link>http://www.addchild.net/as3-beginner/ls3/316.html</link>
		<comments>http://www.addchild.net/as3-beginner/ls3/316.html#comments</comments>
		<pubDate>Thu, 29 Oct 2009 01:20:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[lesson3]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[Tween]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=316</guid>
		<description><![CDATA[ステージに配置したムービークリップにTweenクラスを使ってトゥイーンさせる

[3-3]でステージに配置したムービークリップにトゥイーンモーションを指定してます。


タイムライン上にあるアクションスクリプトに、まずT [...]]]></description>
			<content:encoded><![CDATA[<h3>ステージに配置したムービークリップにTweenクラスを使ってトゥイーンさせる</h3>
<p>
[3-3]でステージに配置したムービークリップにトゥイーンモーションを指定してます。
</p>
<p>
タイムライン上にあるアクションスクリプトに、まずTweenクラスとeasingクラスをインポートさせ、使えるようにします。
</p>
<pre class="brush: jscript; auto-links: false;">
//クラスのインポート
import fl.transitions.Tween;
import fl.transitions.easing.*;
</pre>
<p>
Tweenクラスに関しては、もっと奥が深いので今回は取り合えず簡単に使えるやり方にします。<br />
詳しくはもっと勉強してからと言うことで…
</p>
<p>
[3-3]でカクスタムクラスを使ってステージ上にムービークリップを配置してますので、さらにTweenクラス用のアクションスクリプトを追記します。
</p>
<pre class="brush: jscript; auto-links: false;">
// モーション設定
var mcTween:Tween;
mcTween = new Tween(my_mc, &quot;y&quot;, Bounce.easeOut, 0, (stage.stageHeight - my_mc.height/2), 5, true);
</pre>
<p><P><br />
変数mcTweenをTweenクラスを指定して宣言し、new演算子でTweenクラスでトゥイーンさせる処理を書きます。<br />
順番としては<br />
①トゥイーンさせるインスタンス名<br />
②変化させたいプロパティ<br />
③アニメーションの種類<br />
④開始値<br />
⑤終了値<br />
⑥継続時間<br />
⑦継続時間の単位<br />
になります。<br />
アニメーションの種類に関しては、あとでまとめます。<br />
</P><br />
<span id="more-316"></span></p>
<p>
今回はムービークリップのY軸にイージング終了時にバンドさせる処理としてます。<br />
カスタムクラスでステージ配置されたムービークリップは初期表示位置x軸はステージ幅の1/10で表示されるが、Y軸に関してはトゥイーンで0からステージの高さ（ステージいっぱい）に移動して、終了時にバウンドするせる感じになります。
</p>
<pre class="brush: jscript; auto-links: false;">
//クラスのインポート
import fl.transitions.Tween;
import fl.transitions.easing.*;

// Ballクラスからインスタンスを作る
var my_mc:Ball = new Ball();
addChild(my_mc);
my_mc.x = stage.stageWidth / 10;

// モーション設定
var mcTween:Tween;
mcTween = new Tween(my_mc, &quot;y&quot;, Bounce.easeOut, 0, (stage.stageHeight - my_mc.height/2), 5, true);
</pre>
<p>
asファイルに関しては[3-3]と同じになりますので、省略します。
</p>
<div id="flash">
Tweenクラスでムービークリップをトゥイーンさせる
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/3/4-A.swf", "flash", "550", "200", "9.0.0");
</script></p>
<h4>アニメーションの種類</h4>
<table>
<tr>
<th>イージングクラス</th>
<th>説明</th>
</tr>
<tr>
<td>Back</td>
<td>開始値や終了値をいったん超えて戻るアニメーション</td>
</tr>
<tr>
<td>Bounce</td>
<td>バウンドするアニメーション</td>
</tr>
<tr>
<td>Elastic</td>
<td>開始時や終了時に慣性の働くようなアニメーション</td>
</tr>
<tr>
<td>Regular</td>
<td>加速・減速をするアニメーション</td>
</tr>
<tr>
<td>Strong</td>
<td>加速・減速をするアニメーション。Regularよりも動きが極端</td>
</tr>
<tr>
<td>None</td>
<td>等速のトゥイーンアニメーション</td>
</tr>
</table>
<h4>イージンの種類</h4>
<table>
<tr>
<th>イージングメソッド</th>
<th>説明</th>
</tr>
<tr>
<td>easeIn</td>
<td>最初にイージング効果</td>
</tr>
<tr>
<td>easeOut</td>
<td>最後にイージング効果</td>
</tr>
<tr>
<td>easeInOut</td>
<td>両方にイージング効果</td>
</tr>
</table>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/286.html" title="クラス参照でステージにムービークリップを配置[3-2] (2009年10月13日)">クラス参照でステージにムービークリップを配置[3-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/297.html" title="クラス参照でステージにムービークリップを配置[3-1] (2009年10月7日)">クラス参照でステージにムービークリップを配置[3-1]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/309.html" title="カスタムクラスでステージにムービークリップを配置[3-3] (2009年10月20日)">カスタムクラスでステージにムービークリップを配置[3-3]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/260.html" title="ムービークリップをボタンとして使う[2-4] (2009年9月13日)">ムービークリップをボタンとして使う[2-4]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-beginner/ls3/316.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
