<?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>ActionscriptとかFlashとか&#124; futurefish &#187; Progression</title>
	<atom:link href="http://miraigyo.com/blog/archives/category/progression/feed" rel="self" type="application/rss+xml" />
	<link>http://miraigyo.com/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Tue, 15 Feb 2011 07:00:21 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Progression4で、なめらかプリローダーつくってみたよ。</title>
		<link>http://miraigyo.com/blog/archives/213.html</link>
		<comments>http://miraigyo.com/blog/archives/213.html#comments</comments>
		<pubDate>Thu, 29 Apr 2010 05:12:02 +0000</pubDate>
		<dc:creator>oreore</dc:creator>
				<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[Progression]]></category>

		<guid isPermaLink="false">http://miraigyo.com/blog/?p=213</guid>
		<description><![CDATA[Progression4のなめらかプリローダーつくってみたよ。 Progression4が正式リリースされたので、3で使用していたローダーを4に移植しました。 サンプル01 サンプル02 サンプル03 使い方は下記からソースコードをダウンロードし、 解凍してできた「Preloader.as」と「LoaderCommand.as」を Progression4プロジェクトを作成した際にできる「src」フォルダに上書きし あとは色や線の太さなどを自由に変えていただければと思います。 また、今回フォント「04b25」を使用しています。 異なるフォントや、埋め込みフォントを使用しない場合。 コンパイルしてもフォントが表示されない場合は以下を調整していただければ問題ないかと思います。 //フォント名を変更 format.font = "04b25"; //この部分を削除 _textField.embedFonts = true; サンプル01ソースファイル:src.zip サンプル02ソースファイル:src.zip サンプル03ソースファイル:src.zip ドーナッツ型を描画するクラスは「詳細Actionscript3.0 入門ノート」に掲載されているものを使用しています。]]></description>
			<content:encoded><![CDATA[<p>Progression4のなめらかプリローダーつくってみたよ。</p>
<p>Progression4が正式リリースされたので、3で使用していたローダーを4に移植しました。<br />
<a href="http://miraigyo.com/blog/contents/swf/preloader/01/" target="_blenk">サンプル01</a><br />
<a href="http://miraigyo.com/blog/contents/swf/preloader/02/" target="_blenk">サンプル02</a><br />
<a href="http://miraigyo.com/blog/contents/swf/preloader/03/" target="_blenk">サンプル03</a></p>
<p>使い方は下記からソースコードをダウンロードし、<br />
解凍してできた「Preloader.as」と「LoaderCommand.as」を<br />
Progression4プロジェクトを作成した際にできる「src」フォルダに上書きし<br />
あとは色や線の太さなどを自由に変えていただければと思います。<br />
<span id="more-213"></span><br />
また、今回フォント「04b25」を使用しています。<br />
異なるフォントや、埋め込みフォントを使用しない場合。</p>
<p>コンパイルしてもフォントが表示されない場合は以下を調整していただければ問題ないかと思います。</p>
<pre name="code" class="ActionScript3">
//フォント名を変更
format.font = "04b25";

//この部分を削除
_textField.embedFonts = true;
</pre>
<p><a href="http://miraigyo.com/blog/contents/swf/preloader/01/src.zip">サンプル01ソースファイル:src.zip</a><br />
<a href="http://miraigyo.com/blog/contents/swf/preloader/02/src.zip">サンプル02ソースファイル:src.zip</a><br />
<a href="http://miraigyo.com/blog/contents/swf/preloader/03/src.zip">サンプル03ソースファイル:src.zip</a><br />
ドーナッツ型を描画するクラスは「詳細Actionscript3.0 入門ノート」に掲載されているものを使用しています。</p>
]]></content:encoded>
			<wfw:commentRss>http://miraigyo.com/blog/archives/213.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>progression4 ランタイムエラー</title>
		<link>http://miraigyo.com/blog/archives/171.html</link>
		<comments>http://miraigyo.com/blog/archives/171.html#comments</comments>
		<pubDate>Mon, 15 Feb 2010 15:33:21 +0000</pubDate>
		<dc:creator>oreore</dc:creator>
				<category><![CDATA[Progression]]></category>

		<guid isPermaLink="false">http://miraigyo.com/blog/?p=171</guid>
		<description><![CDATA[progression4を使用しててちょっとわからなかったのでメモ Flasplayer10で container.addChild(castSprite); をおこなって、リロードを何度かしていると # RangeError: Error #2006: 指定したインデックスが境界外です。 と起こられてしまいます。 もちろんaddChildAtなどは使用していません。 Progression3でもおこるようなのですが、3では起こったことがなかったのでなぞです。 応急処置的には new AddChildAt(container, castSprite ,container.numChildren), で起こらなくなりそうです。 ん～～なぞ。。。 参考： http://www.infective.jp/blog/2009/09/progresssion4.html http://forum.progression.jp/index.php?topic=33.0]]></description>
			<content:encoded><![CDATA[<p>progression4を使用しててちょっとわからなかったのでメモ</p>
<p>Flasplayer10で</p>
<pre name="code" class="ActionScript3">
	container.addChild(castSprite);
</pre>
<p>をおこなって、リロードを何度かしていると</p>
<div style="background:#dcdcdc border:solid 1px #696969;">
# RangeError: Error #2006: 指定したインデックスが境界外です。
</div>
<p>と起こられてしまいます。<br />
もちろんaddChildAtなどは使用していません。<br />
Progression3でもおこるようなのですが、3では起こったことがなかったのでなぞです。</p>
<p>応急処置的には</p>
<pre name="code" class="ActionScript3">
	new AddChildAt(container, castSprite ,container.numChildren),
</pre>
<p>で起こらなくなりそうです。<br />
ん～～なぞ。。。</p>
<p>参考：<br />
<a href="http://www.infective.jp/blog/2009/09/progresssion4.html">http://www.infective.jp/blog/2009/09/progresssion4.html</a><br />
<a href="http://forum.progression.jp/index.php?topic=33.0">http://forum.progression.jp/index.php?topic=33.0</a></p>
]]></content:encoded>
			<wfw:commentRss>http://miraigyo.com/blog/archives/171.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HAVANA STRIPE　ホームページ公開しました</title>
		<link>http://miraigyo.com/blog/archives/160.html</link>
		<comments>http://miraigyo.com/blog/archives/160.html#comments</comments>
		<pubDate>Sat, 23 Jan 2010 07:46:48 +0000</pubDate>
		<dc:creator>oreore</dc:creator>
				<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[Progression]]></category>

		<guid isPermaLink="false">http://miraigyo.com/blog/?p=160</guid>
		<description><![CDATA[久しぶりにプライベートでサイト作りましたので、紹介しておきます。※音がでます。 学生の頃からお世話になっている先輩の旦那様がHAVANA STRIPE（ハバナストライプ）という美容室をオープンしたので、ホームページの制作でご協力させていただきました。 大型店舗ではむつかしい、きめ細かいサービスで、ゆっくりと丁寧に接客をしていただけます。何より、話やすいです。人見知り激しい私でもなんだか普通に話せました。。。なんでだろ？シャンプーでカユイとことがあっても言えない方は是非とも足を運んでみてください。めっちゃたのしいですよ。 http://havana-stripe.com/]]></description>
			<content:encoded><![CDATA[<p>久しぶりにプライベートでサイト作りましたので、紹介しておきます。※音がでます。<br />
<img src="http://miraigyo.com/common/img/main/work/img_havana.gif" alt="大阪の港区　美容室・ヘアサロン　havana stripe" width="579" height="282" /><br />
学生の頃からお世話になっている先輩の旦那様がHAVANA STRIPE（ハバナストライプ）という美容室をオープンしたので、ホームページの制作でご協力させていただきました。</p>
<p>大型店舗ではむつかしい、きめ細かいサービスで、ゆっくりと丁寧に接客をしていただけます。何より、話やすいです。人見知り激しい私でもなんだか普通に話せました。。。なんでだろ？シャンプーでカユイとことがあっても言えない方は是非とも足を運んでみてください。めっちゃたのしいですよ。<br />
<a href="http://havana-stripe.com/" target="_blank">http://havana-stripe.com/</a></p>
<p><img title="havana_blog" src="http://miraigyo.com/blog/wp-content/uploads/2010/01/havana_blog.jpg" alt="ハバナストライプ　店舗イメージ" width="579" height="408" /></p>
]]></content:encoded>
			<wfw:commentRss>http://miraigyo.com/blog/archives/160.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>progressionとpapervision3dの連携について考えてみる</title>
		<link>http://miraigyo.com/blog/archives/127.html</link>
		<comments>http://miraigyo.com/blog/archives/127.html#comments</comments>
		<pubDate>Sat, 19 Sep 2009 18:13:15 +0000</pubDate>
		<dc:creator>oreore</dc:creator>
				<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[papervision3d]]></category>
		<category><![CDATA[Progression]]></category>

		<guid isPermaLink="false">http://miraigyo.com/blog/?p=127</guid>
		<description><![CDATA[秋だ！シルバーウィークだ！お勉強だ！ シングルトンを使ってprogressionとpapervision3dを連携させると 結構管理が楽そうなのでSingletonPv3d.asクラスをつくってみた。 3D空間を扱うときはあまり（？）3D空間に急に物体が現れることはないと思ったので 今回はシングルトンクラス内でオブジェクトを生成してみた。 なぜかクリック処理までシングルトン内にあるのでやっぱりオブジェクトの生成は progressionでやるほうがよいのかな。 なにわともあれもう少し小奇麗にしたい。 使い方は progressionのIndexScenシーンなりで SingletonPv3d.getInstance(); _onLoad　や　_onInit内でaddChildしてあげればよいだけ。 あとレンダリングはコンストラクタで行うと マウスカーソルがチカチカする； どうしてかな。。。。？ サンプル ソースコードはこんな感じ。 今きづいたけど、シーン移動中にPlaneをクリックすると クリックしたシーンに移動してないな。 やっぱりprogression側でカメラの移動したほうが綺麗かも。。 うーん、でもねむいのでまたにする。 SingletonPv3d.as public class SingletonPv3d extends Sprite { static private var _instance:SingletonPv3d; private var plane:Plane; private var basicBiew:BasicView; private var world:DisplayObject3D; private var planeCollection:/*DisplayObject3D*/Array; private var progression:Progression; public function SingletonPv3d(singletonEnforcer:SingletonEnforcer) { if (singletonEnforcer == null) [...]]]></description>
			<content:encoded><![CDATA[<p>秋だ！シルバーウィークだ！お勉強だ！<br />
シングルトンを使ってprogressionとpapervision3dを連携させると<br />
結構管理が楽そうなのでSingletonPv3d.asクラスをつくってみた。</p>
<p>3D空間を扱うときはあまり（？）3D空間に急に物体が現れることはないと思ったので<br />
今回はシングルトンクラス内でオブジェクトを生成してみた。<br />
なぜかクリック処理までシングルトン内にあるのでやっぱりオブジェクトの生成は<br />
progressionでやるほうがよいのかな。<br />
なにわともあれもう少し小奇麗にしたい。</p>
<p>使い方は<br />
progressionのIndexScenシーンなりで<br />
SingletonPv3d.getInstance();<br />
_onLoad　や　_onInit内でaddChildしてあげればよいだけ。</p>
<p>あとレンダリングはコンストラクタで行うと<br />
マウスカーソルがチカチカする；<br />
どうしてかな。。。。？</p>
<p><a href="http://miraigyo.com/blog/contents/swf/singletonpv3d/" target="_blank" >サンプル</a></p>
<p>ソースコードはこんな感じ。<br />
<span id="more-127"></span></p>
<p>今きづいたけど、シーン移動中にPlaneをクリックすると<br />
クリックしたシーンに移動してないな。<br />
やっぱりprogression側でカメラの移動したほうが綺麗かも。。<br />
うーん、でもねむいのでまたにする。</p>
<p>SingletonPv3d.as</p>
<pre name="code" class="ActionScript3">
	public class SingletonPv3d extends Sprite
	{
		static private var _instance:SingletonPv3d;
		private var plane:Plane;
		private var basicBiew:BasicView;
		private var world:DisplayObject3D;
		private var planeCollection:/*DisplayObject3D*/Array;
		private var progression:Progression;

		public function SingletonPv3d(singletonEnforcer:SingletonEnforcer)
		{
			if (singletonEnforcer == null) {
				throw Error("++++SingletonPv3d ERROR!!++++");
			}
		}

		public static function getInstance():SingletonPv3d
		{
			if (!SingletonPv3d._instance)
			{
				SingletonPv3d._instance = new SingletonPv3d(new SingletonEnforcer());
				_instance.drawWorld();

			}
			return SingletonPv3d._instance;
		}

		public function aaaa():void {
			drawWorld();
		}

		private function drawWorld():void
		{
			～～～省略～～～
			//--------------------------------------------------------------------------
			//  basic biewの作成
			//--------------------------------------------------------------------------
			basicBiew = new BasicView(500,500,true,true,"Target");
			addChild(basicBiew);

			//  カメラの設定
			//  オブジェクトの作成などを行う
			～～～省略～～～

			/// イベント処理
			basicBiew.addEventListener(Event.ADDED_TO_STAGE, onStage);

		}

		/// 配置待ち
		private function onStage(e:Event):void
		{
			progression = getProgressionById("index");
			basicBiew.removeEventListener(Event.ADDED_TO_STAGE, onStage);
		}

		/// basicBiew
		public function getBasicBiew():BasicView{return basicBiew;}

		/// world
		public function getWorld():DisplayObject3D{return world;}

		/// camera
		public function getCamera():CameraObject3D{return basicBiew.camera;}

		/// objectの取得
		public function getCollection():Array{return planeCollection;}

		public function startRendering():void{basicBiew.startRendering();}

	}
}

class SingletonEnforcer { }
</pre>
<p>IndexScene.as</p>
<pre name="code" class="ActionScript3">
/**
 * コンストラクタ
 */
public function IndexScene() {
	// ブラウザ同期時に出力したいタイトルを設定します。
	//title = "MyProject_2";

	/// シーンを作成
	var n:int = 40;
	for (var i:int = 1; i < n; i++)
	{
		var scene:MyScene = new MyScene(String(i));
		addScene(scene);
	}

	/// シングルトンクラスでPV3Dの3Dシーンを作成
	singletonPv3d = SingletonPv3d.getInstance();

}

/**
 * シーン移動時に目的地がシーンオブジェクト自身もしくは子階層だった場合に、階層が変更された瞬間に送出されます。
 * このイベント処理の実行中には、addCommand() メソッド、及び insertCommand() メソッドによるコマンドの同期処理が行えます。
 */
protected override function _onLoad():void {
	// 実行したいコマンドを登録します。

	/// PV3DをprogressionにAddChildする
	progression.container.addChild(singletonPv3d);

	/// PV3Dのレンダリングを開始
	singletonPv3d.startRendering();

	addCommand(

	);
}
</pre>
<p>最後になりますが、ソースコード一式あげておきます。<br />
MySceneクラスにBallとか変なクラスあるので削除してお使いください。<br />
<a href="http://miraigyo.com/blog/contents/swf/singletonpv3d/myproject.zip" target="_blank" >サンプル　sauce一式</a></p>
]]></content:encoded>
			<wfw:commentRss>http://miraigyo.com/blog/archives/127.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Progressionで丸いローダーを作ってみたよ。</title>
		<link>http://miraigyo.com/blog/archives/62.html</link>
		<comments>http://miraigyo.com/blog/archives/62.html#comments</comments>
		<pubDate>Mon, 29 Jun 2009 15:33:07 +0000</pubDate>
		<dc:creator>oreore</dc:creator>
				<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[Progression]]></category>

		<guid isPermaLink="false">http://miraigyo.com/blog/?p=62</guid>
		<description><![CDATA[なんだかhttp://www.greenparks.jp/のローダーが丸くて気持ちよいのでProgression用につくってみた。 import ore.graphic.Ball;て円を書くだけのクラスをつかって手抜きで作成。 できたのは　こんな感じ。まんまですね。。 swfそのまま開きます。 http://miraigyo.com/blog/contents/swf/loader1/preloader.swf そーすは以前とほぼ同じです。 Preloader.as package myproject { import flash.display.StageAlign; import flash.display.StageQuality; import flash.display.StageScaleMode; import flash.events.Event; import flash.text.TextField; import flash.text.TextFormat; import flash.trace.Trace; import jp.progression.casts.*; import jp.progression.commands.*; import jp.progression.core.debug.Verbose; import jp.progression.events.*; import jp.progression.loader.*; import jp.progression.*; import jp.progression.scenes.*; import ore.graphic.Ball; import flash.text.TextFieldAutoSize; /** * Preloader クラス */ public class Preloader extends CastPreloader { private [...]]]></description>
			<content:encoded><![CDATA[<p>なんだか<a href="http://www.greenparks.jp/">http://www.greenparks.jp/</a>のローダーが丸くて気持ちよいのでProgression用につくってみた。<br />
import ore.graphic.Ball;て円を書くだけのクラスをつかって手抜きで作成。</p>
<p>できたのは　こんな感じ。まんまですね。。<br />
swfそのまま開きます。<br />
<a title="loader" href="http://miraigyo.com/blog/contents/swf/loader1/preloader.swf" target="_blank">http://miraigyo.com/blog/contents/swf/loader1/preloader.swf</a><br />
そーすは以前とほぼ同じです。</p>
<p><span id="more-62"></span><br />
<strong>Preloader.as</strong></p>
<pre name="code" class="ActionScript3">package myproject {
	import flash.display.StageAlign;
	import flash.display.StageQuality;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.trace.Trace;
	import jp.progression.casts.*;
	import jp.progression.commands.*;
	import jp.progression.core.debug.Verbose;
	import jp.progression.events.*;
	import jp.progression.loader.*;
	import jp.progression.*;
	import jp.progression.scenes.*;
	import ore.graphic.Ball;
	import flash.text.TextFieldAutoSize;

	/**
	 * Preloader クラス
	 */
	public class Preloader extends CastPreloader {
		private var stageW:Number;
		private var stageH:Number;
		private var innnerBall:Ball;
		private var ball:Ball;
		private var txt:TextField;
		private var num:Number = 0;
		public static var flag:int = 0;
		private var parsetage:Number = 0;
		private var loadNum:Number = 0;

		/**
		 * コンストラクタ
		 */
		public function Preloader() {
			// 読み込みたい SWF ファイルの URL を設定します。
			url = "index.swf";

			// SWF ファイルの URL の起点を、自身の SWF ファイルが存在するフォルダにするかどうかを指定します。
			useSWFBasePath = false;
		}

		/**
		 * SWF ファイルの読み込みが完了し、stage 及び loaderInfo にアクセス可能になった場合に送出されます。
		 */
		protected override function _onInit():void {
			// stage の初期設定を行います。
			align = StageAlign.TOP_LEFT;
			quality = StageQuality.HIGH;
			scaleMode = StageScaleMode.NO_SCALE;

			// 開発者用の出力を有効化します。
			//Verbose.enabled = true;
			//Verbose.filteringCommand();

			stageW = stage.stageWidth;
			stageH = stage.stageHeight;

			ball = new Ball(40, 0x36362C);
			ball.scaleX = 0;
			ball.scaleY = 0;
			ball.alpha = 0;
			ball.x = stageW/2;
			ball.y = stageH/2;
			addChild(ball);

			innnerBall = new Ball(40,0xA8AD80);
			innnerBall.x = stageW/2;
			innnerBall.y = stageH / 2;
			innnerBall.scaleX = 0;
			innnerBall.scaleY = 0;
			addChild(innnerBall);

			var format:TextFormat = new TextFormat();
			format.font = "Arial";

			txt = new TextField();
			txt.autoSize = TextFieldAutoSize.CENTER;
			txt.appendText("0%");
			txt.x = stageW / 2-txt.width/2;
			txt.y = stageH / 2 - txt.height / 2;
			txt.embedFonts = true;
			txt.defaultTextFormat = format;
			txt.textColor = 0xffffff;
			addChild(txt)
		}

		/**
		 * オブジェクトが読み込みを開始した瞬間に送出されます。
		 * このイベント処理の実行中には、addCommand() メソッド、及び insertCommand() メソッドによるコマンドの同期処理が行えます。
		 */
		protected override function _onCastLoadStart():void {
			// 実行したいコマンドを登録します。
			addCommand(
				new DoTweener(ball, {
					alpha:1,
					scaleX:1,
					scaleY:1,
					time:0.6
				})
			);
			stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);

		}

		/**
		 * ダウンロード処理を実行中にデータを受信したときに送出されます。
		 */
		protected override function _onProgress():void {
			loadNum = bytesLoaded / bytesTotal;
		}

		/**
		 * オブジェクトが読み込みを完了した瞬間に送出されます。
		 * このイベント処理の実行中には、addCommand() メソッド、及び insertCommand() メソッドによるコマンドの同期処理が行えます。
		 */
		protected override function _onCastLoadComplete():void {
			// 実行したいコマンドを登録します。
			var comnd:LoaderCommand = new LoaderCommand();

			addCommand(
				comnd,
				[
				new DoTweener(ball, {
					alpha:0,
					scaleX:1.5,
					scaleY:1.5,
					time:1
				}),

				new DoTweener(innnerBall, {
					scaleX:0,
					scaleY:0,
					time:1
				}),

				new DoTweener(txt, {
					alpha:0,
					time:1
				})

				]
			);
		}

		//////////////////////////////////////////////////////////////////////////////////////////////////////////////
		///  ローダーのあにめーしょん
		//////////////////////////////////////////////////////////////////////////////////////////////////////////////
		private function onEnterFrame(e:Event):void
		{

			parsetage += (loadNum - parsetage) * 0.2;
			innnerBall.scaleX = parsetage;
			innnerBall.scaleY = parsetage;
			txt.text = String(Math.floor(parsetage*100))+"%";
			if (parsetage &gt; 0.98) {
				txt.text = "100%";
				stage.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
				flag = 1;
			}
		}

		//////////////////////////////////////////////////////////////////////////////////////////////////////////////
		/// flag getter
		//////////////////////////////////////////////////////////////////////////////////////////////////////////////
		public static function get getFlag():int {
			return flag;
		}
	}
}</pre>
<p><strong>LoaderCommand.as</strong></p>
<pre name="code" class="ActionScript3">package myproject{
	import jp.progression.casts.*;
	import jp.progression.commands.*;
	import jp.progression.core.commands.Command;
	import jp.progression.events.*;
	import jp.progression.loader.*;
	import jp.progression.*;
	import jp.progression.scenes.*;

	import flash.utils.Timer;
	import flash.events.TimerEvent;
	import flash.events.Event;

	/**
	 * MyCommand クラス
	 */
	public class LoaderCommand extends Command {

		private var _returnValue:String;
		private var timer:Timer;
		private var flag:int;

		/**
		 * コンストラクタ
		 */
		public function LoaderCommand( initObject:Object = null ) {
			super( _execute, _interrupt, initObject );
		}

		/**
		 * 実行されるコマンドの実装です。
		 */
		private function _execute():void {
			// 通常処理を終了します。
			timer = new Timer(100);
			timer.addEventListener(TimerEvent.TIMER, onTime);
			timer.start();

		}

		private function onTime(e:TimerEvent):void
		{
			flag = Preloader.getFlag;

			if(flag == 1){
				executeComplete();
				timer.removeEventListener(TimerEvent.TIMER, onTime);
			}
		}

		/**
		 * 中断実行されるコマンドの実装です。
		 */
		private function _interrupt():void {
			// 中断処理を終了します。
			interruptComplete();
		}

		/**
		 * MyCommand インスタンスのコピーを作成して、各プロパティの値を元のプロパティの値と一致するように設定します。
		 */
		public override function clone():Command {
			return new LoaderCommand( this );
		}

		public function get returnValue():String {
			return _returnValue;
		}
	}
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://miraigyo.com/blog/archives/62.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Progression でなめらかなローダーを作成する。</title>
		<link>http://miraigyo.com/blog/archives/57.html</link>
		<comments>http://miraigyo.com/blog/archives/57.html#comments</comments>
		<pubDate>Thu, 04 Jun 2009 08:02:53 +0000</pubDate>
		<dc:creator>oreore</dc:creator>
				<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[Progression]]></category>

		<guid isPermaLink="false">http://miraigyo.com/blog/?p=57</guid>
		<description><![CDATA[Progressionを使ってサイトを作成する際にローダーを使うことはよくあり、既存のPreloader.asてのを使って作るのがあたりまえ？だと思うのですが、公式サイトに掲載されているやり方ではすぐに100％になってしまい、滑らかなローダーができない。 要領が大きくなると読み込みがカクカクするのです。。。 きっと簡単になめらかにできると思うとなんだか右往左往しながら制作してしまったのでメモ。しかも、このやり方がとても周りくどいと思うので、どなたか簡単に実装できる方法などございましたら、ご連絡いただければ幸いです。 まずはローディングバーを作成 protected override function _onCastLoadStart():void { // 実行したいコマンドを登録します。 /************************************************************************ *　テキストフォーマット＆テキストエリア ************************************************************************/ txt = new TextField(); txt.autoSize = TextFieldAutoSize.RIGHT; txt.x = stage.stageWidth-10; txt.y = stage.stageHeight / 2-150; txt.appendText("0%"); addChild(txt); /************************************************************************ *　ローディングバーの作成 ************************************************************************/ barbar = new Sprite(); with (barbar) { graphics.beginFill(0x000000); graphics.drawRect(0, -1, 1, 2); graphics.endFill(); } barbar.y = stage.stageHeight / 2; addChild(barbar); //カクカクなるのでエンターフレームで処理をする [...]]]></description>
			<content:encoded><![CDATA[<p>Progressionを使ってサイトを作成する際にローダーを使うことはよくあり、既存のPreloader.asてのを使って作るのがあたりまえ？だと思うのですが、<a title="progression ローダー" href="http://progression.jp/ja/doc/tutorial/class/#item-preloader" target="_blank">公式サイトに掲載されているやり方では</a>すぐに100％になってしまい、滑らかなローダーができない。<br />
要領が大きくなると読み込みがカクカクするのです。。。</p>
<p>きっと簡単になめらかにできると思うとなんだか右往左往しながら制作してしまったのでメモ。しかも、このやり方がとても周りくどいと思うので、どなたか簡単に実装できる方法などございましたら、ご連絡いただければ幸いです。<br />
<span id="more-57"></span></p>
<p>まずはローディングバーを作成</p>
<pre name="code" class="ActionScript3">
protected override function _onCastLoadStart():void {
    // 実行したいコマンドを登録します。

    /************************************************************************
    *　テキストフォーマット＆テキストエリア
    ************************************************************************/

    txt = new TextField();
    txt.autoSize = TextFieldAutoSize.RIGHT;
    txt.x = stage.stageWidth-10;
    txt.y = stage.stageHeight / 2-150;
    txt.appendText("0%");
    addChild(txt);

    /************************************************************************
    *　ローディングバーの作成
    ************************************************************************/
    barbar = new Sprite();
    with (barbar) {
        graphics.beginFill(0x000000);
        graphics.drawRect(0, -1, 1, 2);
        graphics.endFill();
    }
    barbar.y = stage.stageHeight / 2;
    addChild(barbar);

    //カクカクなるのでエンターフレームで処理をする
    stage.addEventListener(Event.ENTER_FRAME, onEnterFram);

}</pre>
<p>ローディングバーのアニメーション</p>
<pre name="code" class="ActionScript3">private function onEnterFram(e:Event):void
{

	//読み込んだバイト数の0.1を加算していく
	persentage += (loadbyte - persentage) * 0.1;

	//バーの長さをステージの長さにする
	barbar.width = stage.stageWidth * persentage * 0.01;

	txt.text =  Math.floor(persentage) + "%";

	//100%に近くなったら100にして終了
	if (persentage &gt; 99.5) {
		persentage = 100;
		txt.text =  Math.floor(persentage) + "%";
		barbar.width = stage.stageWidth * persentage * 0.01;

		stage.removeEventListener(Event.ENTER_FRAME, onEnterFram);

		//フラグを0にしてカスタムコマンドを終了
		flag = 0;
	}
}</pre>
<p>最後に_onCastLoadComplete()内に終了処理を書けば終わりなのですが、<br />
アニメーションが終わるまで待ってくれない。。。</p>
<p>どうしたものかと検索しているとカスタムコマンドでなんとかなりそうなのが判明。下記サイトを参考に待機処理のコマンドをつくってみる。</p>
<ul>
<li><a href="http://web.r-studio.jp/flash/articles/progression_extension_study_in_mtl.html" target="_blank">http://web.r-studio.jp/flash/articles/progression_extension_study_in_mtl.html</a></li>
</ul>
<p>MyCommand.asを作成し_execute()内を書き換える。<br />
Preloader.asにあるflagを監視することで待機させる方法をとりました。</p>
<pre name="code" class="ActionScript3">private function _execute():void
{
	// 通常処理を終了します。
	//_returnValue = "カスタムコマンドだよ！！！！！！"
	timer = new Timer(100);
	timer.addEventListener(TimerEvent.TIMER, onTime);
	timer.start();
	//こいつが終了を通知してくれる。
	//executeComplete();

}

private function onTime(e:TimerEvent):void
{
	//trace("タイマー作動中");　flagの確認
	if(Preloader.flag == 0){
		executeComplete();
		//trace("timerSTOP!!");
		timer.removeEventListener(TimerEvent.TIMER, onTime);
	}
}</pre>
<p>最後にPreloader.asの_onCastLoadComplete()内で先ほどのコマンドを呼び出して待機させてばOKでした<br />
呼び出しはこんな感じです。</p>
<pre name="code" class="ActionScript3">/**
 * オブジェクトが読み込みを完了した瞬間に送出されます。
 * このイベント処理の実行中には、addCommand() メソッド、及び insertCommand() メソッドによるコマンドの同期処理が行えます。
 */
protected override function _onCastLoadComplete():void {
	// 実行したいコマンドを登録します。

	//コマンドを作成
	var _myCommand:MyCommand = new MyCommand();

	addCommand(
		//new Trace("スタート++++++++++++++++++++"),
		//ここに登録
		_myCommand,

		new DoTweener(txt, {
			alpha:0,
			y:-150,
			time:1.2,
			onComplete:ore
		}),

		new Trace("完了++++++++++++++++++++")
	);
}</pre>
<p>こんな感じでなんとかできたのでした。<br />
<a title="ローダー" href="http://miraigyo.com/labs/" target="_blank">できたローダーがこんなのです。</a><br />
もっと簡単にできるような気がする。。。。<br />
説明が分かりにくいので<br />
まとめたソースコードは<a href="http://miraigyo.com/download/progression_20090604.zip">コチラからダウンロード</a>できます。<br />
ご指摘等いただければ、幸いです。</p>
]]></content:encoded>
			<wfw:commentRss>http://miraigyo.com/blog/archives/57.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

