<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>DUBFLASH</title>
        <link>http://www.dubfrog.net/blog/</link>
        <description>study up ActionScript</description>
        <language>ja</language>
        <copyright>Copyright 2011</copyright>
        <lastBuildDate>Fri, 25 Feb 2011 14:52:09 +0900</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title>AS3 | DigiMask Effect from Pentagon</title>
            <description><![CDATA[<p><font style="font-size: 0.8em;" color="#666666">●要 flashplayer10以上</font></p>
<a href="http://www.dubfrog.net/blog/swf/digimask/digiMask.swf?width=800&amp;height=600" class="thickbox">
<img alt="away3d_cube36.jpg" src="http://www.dubfrog.net/blog/images/digimask.jpg" class="mt-image-left" style="margin: 0pt 20px 20px 0pt; float: left;" width="550" height="200" /></a><br clear="left" />
<br /><br />

<p>
4,5年前くらいに僕がFlashを触りだしたころに<a href="http://www.pentagonstudios.com/" window="_blank">Pentagon Studios</a>のサイトを見て（とゆうかまだ公開されてるとは）<br />
このエフェクトどうやったら出来るものかと羨望の目でこのサイトを眺めていました。<br /><br />

<a href="http://www.pentagonstudios.com/" window="_blank"><img src="http://www.dubfrog.net/blog/images/pentagon.jpg" width="371" height="299" /></a><br /><br />

<font style="font-size: 0.8em;">●Pentagon Studios</font><br /><br /><br />


このフィックスする瞬間ののビルのエフェクトをどうやってやっているのか知りたくて、<br />
デコンパイルしてみて解析を試みたんですがその当時のスキルでは理解できず断念したものです。<br />
4年の時を経てようやく再現（ちょっと我流で）出来たのでAS3で組んでみました。<br />
（昔はコレをタイムラインアニメーション＋AS2で組んでいたのがすごい）
</p><br /><br />

<p><strong>+ロジックのポイントはこんな感じ</strong><br /><br />

・エフェクトターゲットのy座標値にある色値を取得しビットマップに縦に反復（引き延し）させる<br />
・エフェクトターゲットのライン内で処理を見せる為にマスク処理を入れる<br />



</p>
<br /><br />


<br />

<p><font style="font-size: 0.8em;">●DigiMask.as [ setup　method ]</font></p>
<textarea name="code" class="as3" cols="60" rows="5">/* 変数説明 */

target = エフェクトターゲット
tw       = target.width;
th       = target.height;

private function setup():void
{
	/*
	 * メイン表示用のコピーオブジェクト（※１）
	 */
	tempbmp = new BitmapData(tw, th, true, 0x808080);
	tempbmp.lock();
	tempbmp.draw(target);
	tempbmp.unlock();
	copy = tempbmp.clone();
        
	tempbm = new Bitmap(tempbmp);
	temp = new MovieClip();
	temp.addChild(tempbm);
	addChild(temp);
			
	tMask = new Sprite();
	tMask.graphics.beginFill(0, 1);
	tMask.graphics.drawRect(0, 0, tw, th);
	tMask.graphics.endFill();
	addChild(tMask);
	temp.mask = tMask;
	tMask.y = -th;

	/*
	 * エフェクトオブジェクト格納コンテナ（※２）
	 */
	efContainer = new Sprite();
	addChild(efContainer);
            
	eMask1 = new Sprite();
	eMask1.graphics.beginFill(0, 1);
	eMask1.graphics.drawRect(0, 0, tw, th);
	eMask1.graphics.endFill();
	addChildAt(eMask1, 1);
	eMask1.y = 0;
	eMask1.scaleY = 0;
	efContainer.mask = eMask1; 
			
	/*
	 * ピクセルエフェクト用オブジェクト（※３）
	 */
	var eMc:Sprite = new Sprite();
	efContainer.addChild(eMc);
	source = new BitmapData(tw, 1, false, 0);
	bm = new Bitmap(source);
	bm.height = th;
	eMc.addChild(bm);
        
	eMask2 = new Sprite();
	ebmp = tempbmp.clone();
	ebm = new Bitmap(ebmp);
	eMask2.addChild(ebm);
	efContainer.addChild(eMask2);
         
	eMc.cacheAsBitmap = true;
	eMask2.cacheAsBitmap = true;
	eMc.mask = eMask2;
        
	/*
	 * 境界線ライン（※４）
	 */
	line = new Sprite();
	line.graphics.beginFill(0xffffff, 1);
	line.graphics.drawRect(0, 0, tw, 1);
	line.graphics.endFill();
	eMc.addChild(line);
         
	/*
	 * 表示オブジェクトのセットアップ（※５）
	 */
	with(this)
	{
		x 		= target.x;
		y 		= target.y;
		visible = visibleMode;
	}
	
	target.visible = false;
}

</textarea><br /><br /><br />


<p>
<strong>+ソース内（※１）</strong><br />
ここではエフェクトターゲットのデフォルト表示用のビットマップコピーインスタンスを生成します。<br />
エフェクトが走る際、ピクセルエフェクトがかかりながらマスクスライドによってイメージが表示されていくので<br />
その表示用のビットマップです。<br /><br />

<strong>+ソース内（※２）</strong><br />
ピクセルエフェクト表示用コンテナを生成します。<br />
このコンテナ内に解析用ラインオブジェクトとエフェクト用オブジェクトを格納しています。<br /><br />

<strong>+ソース内（※３）</strong><br />
ピクセルエフェクト用のビットマップオブジェクトを生成します。<br />
縦幅1pxのビットマップを生成し、それをターゲットオブジェクトの縦幅分にheightを引き延ばします。<br />
引き延ばしたビットマップに取得したカラー情報を反映させます。<br />
それとターゲットオブジェクトと同じエリアで表示させる為のマスクを適用させます。<br /><br />

<strong>+ソース内（※４）</strong><br />
ラインオブジェクトを生成します。<br />
エフェクトエリアとイメージエリアの境目をわかりやすくするためのものであまり意味はないです。<br />
ただこのラインのy座標を目安にコピービットマップのカラー情報を取得します。<br /><br />

<strong>+ソース内（※５）</strong><br />
表示設定です<br />
エフェクトターゲットに座標を合わせます。<br />
visibleModeはエフェクトターゲットを最初に表示しておくかどうかの真偽値です。<br /><br /><br />

次にエフェクトを適用させる為の色情報を取得する為のメソッドを定義します。<br />
縦幅1pxで生成したビットマップにターゲットの横幅分カラー情報を適用します。<br />
このメソッドは引数に座標値をセットするとcopyビットマップ（解析用）の色情報を配列に格納し<br />
sourceビットマップに適用させます。<br />
addBubbleメソッドはおまけで取得座標値からランダムのx座標に四角いパーティクルを表示させるメソッドです。
</p>

<br /><br />

<p><font style="font-size: 0.8em;">●DigiMask.as [ setSourcePixel　method ]</font></p>
<textarea name="code" class="as3" cols="60" rows="5">private function setSourcePixel(_y:Number):void
{
	var area:Array = [];
	for(var i:Number = 0; i &lt;= tw; i++)
	{
		var color:String = copy.getPixel(i, _y).toString(16);
		spoit[i] = String("0x" + color);
		source.setPixel(i, 0, spoit[i]);
		if (color != "0") area.push(i);
	}
	
	addBubble(area);
}
</textarea><br /><br />

<p>あとはENTER_FRAMEを定義してエフェクトを実行します<br />
先にエフェクトをマスクスライドさせ、追うようにして表示オブジェクトとラインをスライドさせます。<br />
動作が終わったら表示を切り替えます。<br />
あと、いまだにTweenerですいません。ラクなんです。
</p><br /><br />

<p><font style="font-size: 0.8em;">●DigiMask.as [ motionIn　method ]</font></p>
<textarea name="code" class="as3" cols="60" rows="5">public function motionIn(_delay:Number = 0):void
{	
	Tweener.removeTweens(eMask1);
	Tweener.addTween(eMask1, { scaleY:1, delay:_delay, time:2, transition:"easeOutExpo" });
	
	Tweener.removeTweens(tMask);
	Tweener.addTween(tMask, { y:0, delay:_delay, time:4, transition:"easeInOutQuard" });
         
	Tweener.removeTweens(line);
	Tweener.addTween(line, { y:th, delay:_delay, time:4, transition:"easeInOutQuard" });
		
	Tweener.removeTweens(this);
	Tweener.addCaller(this, {time:4 + _delay, count:1, onComplete:function():void
	{
		removeEventListener(Event.ENTER_FRAME, update);
	    
		target.visible = true;
		visible = false;
	}});
	
	addEventListener(Event.ENTER_FRAME, update);
}

private function update(e:Event):void
{
	eMask1.y = line.y;
	
	setSourcePixel(line.y);
	
	if(line.alpha == 1) line.alpha = 0;
	else line.alpha = 1;
}
</textarea><br /><br /><br /><br />

<p>で、完成がこちら<br />
ちなみに使用してる画像は自分の原付です。<br />
</p>

<p><font style="font-size: 0.8em;">●digimask.swf</font></p>
<p><a href="http://www.dubfrog.net/blog/swf/digimask/digiMask.swf?width=800&amp;height=600" class="thickbox"><img src="http://www.dubfrog.net/blog/images/digimask_thumb.jpg" width="480" height="360" /></a></p>
<br />

<p>
<a href="http://www.dubfrog.net/blog/swf/digimask/digimask.zip"><strong>+ソースコード</strong></a><br /><br />

<small>[ 開発環境：fp10 , FDT3 ]</small><br />
</p>

<br />
<br />




]]></description>
            <link>http://www.dubfrog.net/blog/2011/02/as3-digimask-effect.html</link>
            <guid>http://www.dubfrog.net/blog/2011/02/as3-digimask-effect.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">ActionScript3.0</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">AS3.0</category>
            
            <pubDate>Fri, 25 Feb 2011 14:52:09 +0900</pubDate>
        </item>
        
        <item>
            <title>Alternativa3D 7.6 | Pv3dライクな初期設定＋PlaneTester</title>
            <description><![CDATA[ <p><a href="http://www.dubfrog.net/blog/swf/alternativa3d_planetester/planetester.swf?width=800&amp;height=600" class="thickbox"><img src="http://www.dubfrog.net/blog/images/alternativa3d_planetester.jpg" width="550" height="200" /></a></p>
<br />

<p>
すっかり3Dライブラリを使用したコンテンツも当たり前になってきたこのご時世。<br />
今後のFlashPlayerのリリースを期待せずにはいられませんね。<br /><br />

そんなワケで本格的に<a href="http://alternativaplatform.com/en/" target="_blank">Alternativa3D</a>を弄くりだしていこうかなと思います。<br /><br />

ここ最近はAway3Dに頼りきりだったのでAlternativa3Dの知識は薄いですが昨年末に最新バージョンの7.6がリリースされていたみたいなのでこちらを使用します。<br /><br />

大体新しいクラスを触るときはExamplesをたよりに手を動かすんですが<br />
今回ソースのみしか用意されてなかったのでまずは各Tipsをパブリッシュしました。<br />
自分でパブリッシュするのめんどくせーよって方はこちらでご確認を。<br />
</p>

<br /><br />

<div style="float: left; padding-right: 10px;">
<p><a href="http://www.dubfrog.net/blog/swf/alternativa3d_tips/AnimSpriteExample/example01.swf?width=550&amp;height=400" class="thickbox"><img src="http://www.dubfrog.net/blog/images/AnimSpriteExample_s.jpg" width="165" height="120" /></a></p>
<p style="text-align: center; font-size: 10px;">■ AnimSpriteExample</p>
</div>

<div style="float: left; padding-right: 10px;">
<p><a href="http://www.dubfrog.net/blog/swf/alternativa3d_tips/ClippingExample/example02.swf?width=550&amp;height=400" class="thickbox"><img src="http://www.dubfrog.net/blog/images/ClippingExample_s.jpg" width="165" height="120" /></a></p>
<p style="text-align: center; font-size: 10px;">■ ClippingExample</p>
</div>

<div style="float: left; padding-right: 10px;">
<p><a href="http://www.dubfrog.net/blog/swf/alternativa3d_tips/ContainersExample/example03.swf?width=550&amp;height=400" class="thickbox"><img src="http://www.dubfrog.net/blog/images/ContainersExample_s.jpg" width="165" height="120" /></a></p>
<p style="text-align: center; font-size: 10px;">■ ContainersExample</p>
</div>

<div style="float: left; padding-right: 10px;">
<p><a href="http://www.dubfrog.net/blog/swf/alternativa3d_tips/DebugExample/example04.swf?width=550&amp;height=400" class="thickbox"><img src="http://www.dubfrog.net/blog/images/DebugExample_s.jpg" width="165" height="120" /></a></p>
<p style="text-align: center; font-size: 10px;">■ DebugExample</p>
</div>

<div style="float: left; padding-right: 10px;">
<p><a href="http://www.dubfrog.net/blog/swf/alternativa3d_tips/DemoExample/example05.swf?width=550&amp;height=400" class="thickbox"><img src="http://www.dubfrog.net/blog/images/DemoExample_s.jpg" width="165" height="120" /></a></p>
<p style="text-align: center; font-size: 10px;">■ DemoExample</p>
</div>

<div style="float: left; padding-right: 10px;">
<p><a href="http://www.dubfrog.net/blog/swf/alternativa3d_tips/GeometryExample/example06.swf?width=550&amp;height=400" class="thickbox"><img src="http://www.dubfrog.net/blog/images/GeometryExample_s.jpg" width="165" height="120" /></a></p>
<p style="text-align: center; font-size: 10px;">■ GeometryExample</p>
</div>

<div style="float: left; padding-right: 10px;">
<p><a href="http://www.dubfrog.net/blog/swf/alternativa3d_tips/HelloAlternativa3D/example07.swf?width=550&amp;height=400" class="thickbox"><img src="http://www.dubfrog.net/blog/images/HelloAlternativa3D_s.jpg" width="165" height="120" /></a></p>
<p style="text-align: center; font-size: 10px;">■ HelloAlternativa3D</p>
</div>


<div style="float: left; padding-right: 10px;">
<p><a href="http://www.dubfrog.net/blog/swf/alternativa3d_tips/IntersectRayExample/example08.swf?width=550&amp;height=400" class="thickbox"><img src="http://www.dubfrog.net/blog/images/IntersectRayExample_s.jpg" width="165" height="120" /></a></p>
<p style="text-align: center; font-size: 10px;">■ IntersectRayExample</p>
</div>

<div style="float: left; padding-right: 10px;">
<p><a href="http://www.dubfrog.net/blog/swf/alternativa3d_tips/LODExample/example09.swf?width=550&amp;height=400" class="thickbox"><img src="http://www.dubfrog.net/blog/images/LODExample_s.jpg" width="165" height="120" /></a></p>
<p style="text-align: center; font-size: 10px;">■ LODExample</p>
</div>

<div style="float: left; padding-right: 10px;">
<p><a href="http://www.dubfrog.net/blog/swf/alternativa3d_tips/MouseEventsExample/example10.swf?width=550&amp;height=400" class="thickbox"><img src="http://www.dubfrog.net/blog/images/MouseEventsExample_s.jpg" width="165" height="120" /></a></p>
<p style="text-align: center; font-size: 10px;">■ MouseEventsExample</p>
</div>

<div style="float: left; padding-right: 10px;">
<p><a href="http://www.dubfrog.net/blog/swf/alternativa3d_tips/SortingExample/example12.swf?width=550&amp;height=400" class="thickbox"><img src="http://www.dubfrog.net/blog/images/SortingExample_s.jpg" width="165" height="120" /></a></p>
<p style="text-align: center; font-size: 10px;">■ SortingExample</p>
</div>

<div style="float: left; padding-right: 10px;">
<p><a href="http://www.dubfrog.net/blog/swf/alternativa3d_tips/TextureMaterialExample/example13.swf?width=550&amp;height=400" class="thickbox"><img src="http://www.dubfrog.net/blog/images/TextureMaterialExample_s.jpg" width="165" height="120" /></a></p>
<p style="text-align: center; font-size: 10px;">■ TextureMaterialExample</p>
</div>

<br />


<p style="clear: left; padding-top: 35px;">各ソースを見ているとpv3dやaway3dとは中身が異なっている部分が多く、<br />
レンダリングアルゴリズムも「<a href="http://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E7%A9%BA%E9%96%93%E5%88%86%E5%89%B2" target="_blank">バイナリ空間分割</a>」という手法を使用してるみたいです。<br /><br />

Alternativa3DのVer7についてのHowtoは<a href="http://twitter.com/#%21/narutohyper" target="_blank">narutohyper</a>さんが一番よく説明されていると思いますので気になる方は下記からどうぞ。<br /><br /><br />

「<a href="http://marubayashi.net/tips/alternativa3d/index.html" target="_blank"><b>Wonderfulで始めるAlternativa3D</b></a>」　-<a href="http://marubayashi.net/tips/alternativa3d/index.html" target="_blank"><b>丸林商店</b></a>-
<br /><br /><br />

<!--
さて、実際に練習でなにかしら作ろうかなと思ったんですが、<br / / />
カメラやプリミティブオブジェクト要素のデフォルトの表示設定や座標系がやりづらく、<br / / />
pv3dやaway3dと同じ感覚で使用したい自分としてはなにか簡単な設定がないものかと考えてみたんですがやりづらいポイントとしては、<br / / /><br / / /><br / / />

<strong><strike>・カメラが上向いてる</strike></strong><br / / /><br / / /><br / / />

これがやりづらく感じる一番のネックではないでしょうか。<br / / />
各Exampleのソース内ではカメラオブジェクトを生成した後にラジアン度数の代入にてカメラ角度を操作していますが、いちいちカメラを正面向かせる、もしくはlookAtしたり、プリミティブオブジェクトの角度を調整すると座標系に影響が出たり、無駄に悩みます。<br / / />
それらを回避するにはObject3DContainer自体を-180することで楽に設計出来ました。</p>
-->
<br />

</p><p><font style="font-size: 0.8em;">●Alternativa3D 7.6 [ 3Dシーンの基本設定 ]</font></p>
<textarea name="code" class="as3" cols="60" rows="5">private function init3d():void
{
	/* rootContainer */
	
	var rootNode:Object3DContainer = new Object3DContainer();
	rootNode.rotationX = -180;
	
	/* camera */
	
	var camera:Camera3D = new Camera3D();
	//camera.rotationX = -90 * Math.PI / 180; //ラジアン変換 (※1
	camera.z = -1000;
	camera.view = new View(bw - GUI_AREA, bh);
	camera.view.x = GUI_AREA;
	addChild(camera.view);
	rootNode.addChild(camera);
	
	/* primitive */
	
	const _size:int = 300;
	const _seg:int = 8;
	
	var mat:FillMaterial = new FillMaterial(0xFFCCCC, 1, 1, 0x000000);
	var plane:Plane = new Plane(_size,_size,_seg,_seg,true,false,false);
	plane.setMaterialToAllFaces(mat);
	rootNode.addChild(plane);
	
	addEventListener(Event.ENTER_FRAME, update);
}

/*
 * event : ENTER_FRAME
 * 
 */
private function update(e:Event):void
{
	camera.render();
}

</textarea><br /><br />


<p>7.6からなのか最初からなのかはよくわかりませんが、<br />
角度の代入がラジアン度数じゃないと設定出来ません。（ソース内 ※1）<br /><br />

それと、一人で数時間悶々と基礎を学んだついでに作ったテスターがあるので、<br />
これもアップしておきます。<br />
スライダーとかは<a href="http://code.google.com/p/minimalcomps/" target="_blank">Minimalcomps</a>を使用しましたがこれ便利ですね。</p>

<br /><br />

<p><font style="font-size: 0.8em;">●Alternativa3D 7.6 [ PlaneTester ]</font></p>
<p><a href="http://www.dubfrog.net/blog/swf/alternativa3d_planetester/planetester.swf?width=800&amp;height=600" class="thickbox"><img src="http://www.dubfrog.net/blog/images/alternativa3d_planetester_s.jpg" width="350" height="264" /></a></p>
<br />

<p>とりあえずPlaneを簡単に正しく正面を向かせるには、ということのみに注力したデモですので<br />
たいした機能はないですが簡単な初期値がわかると思います。<br /><br />

次はもう少し楽しいデモでも作ってみます。</p>

<br />
<br />




]]></description>
            <link>http://www.dubfrog.net/blog/2011/02/alternativa3d-76-planetester.html</link>
            <guid>http://www.dubfrog.net/blog/2011/02/alternativa3d-76-planetester.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Alternativa3D</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">Alternativa3D</category>
            
            <pubDate>Mon, 14 Feb 2011 22:33:54 +0900</pubDate>
        </item>
        
        <item>
            <title>STROX 【ストロークス】 始めました</title>
            <description><![CDATA[ <p><a href="http://www.strox.jp/2011/"><img src="http://www.dubfrog.net/blog/images/strox2011.jpg" height="200" width="550" /></a></p>
<br />

<p>本年度よりデザインユニット STROX 【ストロークス】 としての活動を開始しました。<br /><br />

WEBコンテンツの企画、制作（design, flash）でご相談がございましたら<a href="mailto:info@strox.jp">info@strox.jp</a>までお気軽にお問い合わせ下さい。<br /><br /><br />
</p>


<p>[ strox -ご挨拶- ]</p>

<p><a href="http://www.strox.jp/2011/"><img src="http://www.dubfrog.net/blog/images/strox_rabbit.jpg" height="287" width="550" /></a></p>

<p>「突っ走って一休み」をスローガンに掲げたご挨拶用のコンテンツです。<br />
たいしたインタラクションはないですが個人的にはうさぎが切り替わるときのパーツが3つに分離する瞬間が好きです。<br />
ちなみにAway3Dにて実装しました。</p>
<br /><br />




]]></description>
            <link>http://www.dubfrog.net/blog/2011/02/strox-strox.html</link>
            <guid>http://www.dubfrog.net/blog/2011/02/strox-strox.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">strox</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">strox</category>
            
            <pubDate>Sun, 13 Feb 2011 16:02:28 +0900</pubDate>
        </item>
        
        <item>
            <title>Like | 放置プレイなのかもね</title>
            <description><![CDATA[<p>どうやら半年ぶりの更新。放置しすぎでゴメンナサイ<br />
久しぶりにアクセスみたら意外とセッション数あって更新を試みてます<br /><br />
ってことでビールのお供におかず動画を探してたら<a href="http://www.vimeo.com/">vimeo</a>でいい作品があったので紹介。</p>
<br /><br />

<p>■<b><a href="http://www.opertura.org/">Overture</a></b><br /><br />

独特の世界感で不思議な生き物を質のいいアニメーションでイラストを動かしつつ<br />
モーションと音がシンクロしてる。　台詞はなくとも気持ちがツタわってくる感じ<br />
とてもモーションセンスがよくて引き込まれる作品。ステキです。<br />
</p>

<b><font color="#5f9ea0"><br /></font></b> 
<p><font color="#ff6347"><b>01: A Memory</b></font></p>
<iframe src="http://player.vimeo.com/video/3933683" frameborder="0" height="480" width="640"></iframe><p><a href="http://vimeo.com/3933683">Bryum &amp; Kapok 01: A Memory</a> from <a href="http://vimeo.com/opertura">Overture</a> on <a href="http://vimeo.com/">Vimeo</a>.</p>
<br /> 

<p><font color="#ff6347"><b>02: An Idea</b></font></p>
<font color="#ff6347"><b><iframe src="http://player.vimeo.com/video/4188115" frameborder="0" height="480" width="640"></iframe></b></font><p><font color="#ff6347"><b><a href="http://vimeo.com/4188115">Bryum &amp; Kapok 02: An Idea</a> from <a href="http://vimeo.com/opertura">Overture</a> on <a href="http://vimeo.com/">Vimeo</a>.</b></font></p>
<br /> 
<br /> 
<br />

<p>■<b><a href="http://www.etsukoichikawa.com/gallery12.htm">Etsuko Ichikawa</a></b><br /><br />

日本人の女性アーティスト。紙に熱したガラスを足らしその焦げた跡でアートを表現している<br />
波紋のように焦げ跡が広がっていき練りアメのようなガラスで紋様が描かれていく<br />
素晴らしい発想<br />
</p><br />

<p><font color="#ff6347"><b>Traces of the Molten State</b></font></p>
<iframe src="http://player.vimeo.com/video/1713273" frameborder="0" height="480" width="640"></iframe><p><a href="http://vimeo.com/1713273">Traces of the Molten State</a> from <a href="http://vimeo.com/user737796">Etsuko Ichikawa</a> on <a href="http://vimeo.com/">Vimeo</a>.</p>
<br /> 
<br /> 
<br />

<p>■<b><a href="http://www.vimeo.com/9500433">SUPERNATURAL CREATOR 2</a></b><br /><br />

もはやなんか好きな感じ　ファミコン世代じゃなきゃわからない<br />
カミサマの苦悩？をファミコンドットでストーリー展開していく。ラストあーやっぱり、ってなる<br />
</p><br />

<p><font color="#ff6347"><b>Traces of the Molten State</b></font></p>
<iframe src="http://player.vimeo.com/video/9500433" frameborder="0" height="480" width="640"></iframe><p><a href="http://vimeo.com/9500433">SUPERNATURAL CREATOR 2</a> from <a href="http://vimeo.com/matroshka">Mareike</a> on <a href="http://vimeo.com/">Vimeo</a>.</p>

<br />
<br />
<br />]]></description>
            <link>http://www.dubfrog.net/blog/2010/11/like.html</link>
            <guid>http://www.dubfrog.net/blog/2010/11/like.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">like</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">vimeo</category>
            
            <pubDate>Wed, 10 Nov 2010 00:01:24 +0900</pubDate>
        </item>
        
        <item>
            <title>Away3D-Lite | CubeDivision</title>
            <description><![CDATA[ <p><font style="font-size: 0.8em;" color="#666666">●要 flashplayer10以上</font></p>
<a href="http://dubfrog.net/blog/swf/cubedivision/cubedivision.swf?width=800&height=600" class="thickbox"><img alt="cubedivision.jpg" src="http://www.dubfrog.net/blog/images/cubedivision.jpg" class="mt-image-left" style="margin: 0pt 20px 20px 0pt; float: left;" height="200" width="550" /></a><br clear="left" />

<br /><br />
<p>
前エントリCube6を使ったデモを載せましたが懲りずにまたCube6でデモを作成しました。<br />
ロジックとしては細胞分裂的なイメージで各キューブをクリックすると各キューブのサイズを保ったまま8分割され最終的にスケール値が1/8または1/16のサイズになった時点で各個体が消滅します。<br />
全ての個体がリムーブされたらリセットされますが最大1/16まで分裂していくのでさすがに全て消すのは結構めんどいです。<br />
前回と今回のパフォーマンステストをした感じ低セグメントでオブジェクトを生成する分には結構なポリゴン数まで耐えられますね。<br />
今までpv3dや本家Away3d(本家はあんま触ってませんが)での控え目なパフォーマンスで負荷軽減と戦っていた分、思い切り遊べて楽しいです。<br /><br /><br />
</p>

<div style="text-align: center; width: 465px;"><iframe title="【Away3d-Lite】 CubeDivision - wonderfl build flash online" src="http://wonderfl.net/blogparts/gL0G" style="border: 1px solid black;" height="490" width="465" scrolling="no"></iframe><a href="http://wonderfl.net/c/gL0G" title="【Away3d-Lite】 CubeDivision - wonderfl build flash online">【Away3d-Lite】 CubeDivision - wonderfl build flash online</a></div>
<br />
<p><a href="http://wonderfl.net/">wonderfl</a>にアップしたのでソース見たい方ははこちらからどうぞ</p>
<br /><br />

]]></description>
            <link>http://www.dubfrog.net/blog/2010/04/away3dlite-cubedivision.html</link>
            <guid>http://www.dubfrog.net/blog/2010/04/away3dlite-cubedivision.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Away3D</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">Away3D-Lite</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">Away3D</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Away3D-Lite</category>
            
            <pubDate>Tue, 13 Apr 2010 21:11:10 +0900</pubDate>
        </item>
        
        <item>
            <title>Away3D-Lite | Cube6で6面イメージ張り付け</title>
            <description><![CDATA[<p><font style="font-size: 0.8em;" color="#666666">●要 flashplayer10以上</font></p>
<a href="http://www.dubfrog.net/blog/swf/cube36/cube36.swf?width=800&amp;height=600" class="thickbox">
<img alt="away3d_cube36.jpg" src="http://www.dubfrog.net/blog/images/cube36.jpg" class="mt-image-left" style="margin: 0pt 20px 20px 0pt; float: left;" height="200" width="550" /></a><br clear="left" />

<br /><br />
<p>
前から気になっていた<a href="http://away3d.com/index.php?s=lite&amp;x=0&amp;y=0">Away3D-Lite</a>をよーやくいじりだせました。<br />
とりあえずCube6を使ってどれくらい耐えられるのか実験した際に6面別々のイメージの張り付け方法で迷ったので紹介してみます。<br />
</p>
<br /><br />

<h2 class="entry_title">1枚の画像で6面分を2段に並べる</h2>
<p>
どうもpv3dのMaterialsListを使って各側面のイメージが指定するみたいなことが出来ないっぽいので、<br />
思考錯誤してみたら下記図1の方法で出来ました。<br />
</p><br />


<p><font style="font-size: 0.8em;">▼図1 : 一枚の画像で6面分を並べる</font></p>
<img alt="away3d_cube36_texture.jpg" src="http://www.dubfrog.net/blog/images/cube36_texture.jpg" class="mt-image-left" style="margin: 0pt 20px 20px 0pt; float: left;" height="200" width="300" /><br clear="left" />

<p>
とりあえずはスッキリしたんでまた次回なにかしらのデモをアップしたいと思います。<br />
</p>



]]></description>
            <link>http://www.dubfrog.net/blog/2010/04/away3dlite-cube6de.html</link>
            <guid>http://www.dubfrog.net/blog/2010/04/away3dlite-cube6de.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Away3D</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">Away3D-Lite</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">Away3D</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Away3D-Lite</category>
            
            <pubDate>Fri, 09 Apr 2010 21:28:46 +0900</pubDate>
        </item>
        
        <item>
            <title>AS3.0 | 失敗しないリサイズ処理</title>
            <description><![CDATA[ <p>だいぶご無沙汰してしまいました。。<br />
前回のエントリ見たら1/14だったから、3か月ぶりってことか。<br />
よーやく日々の生活の余裕を取り戻しつつあるので、ついでにこのテンションだだ下がりの状態から脱却すべく、ちまちま更新していきます。<br /><br />

んで、表題の通りリサイズネタです。<br /><br />

リサイズ処理は初めてフルフラをオーサリングした時から最近に至るまでかなり思考錯誤して色んな方法を試したんですが、その中で最近定着してきた方法を晒してみたいと思います。<br />
今更リサイズのロジック的な部分ってのもアレなんで仕組みのみです。<br />
とはいえこの方法がベストなのか晒すまでもないあたりまえの方法なのかいまいちよくわかりませんので
つまらなかったら読み飛ばしてください。</p>
<br /><br />

<h2 class="entry_title">親子関係のルール決め</h2>
<p>
フルフラッシュでの実装の場合スクリプトを書く前にある程度設計をしておかないと<br />
後で絶対めんどくさい処理に追われるはめになるので、<br />
rootに配置されるパーツの親子関係などに簡単にルールを決めてMovieClip化します。</p><br />


<p><font style="font-size: 0.8em;">▼図1 : 親子関係</font></p>
<img alt="movieclip1.jpg" src="http://www.dubfrog.net/blog/images/movieclip1.jpg" class="mt-image-left" style="margin: 0pt 20px 20px 0pt; float: left;" width="550" height="200" /><br clear="left" />

<p>上記図1の通り親にあたるMovieClip(name : mc)に子Mc(name : base)、更にその内部にパーツMc(name : parts1,2,3)を配置します。<br />
ヘッダー、フッター、イメージエリア等、各ブロックを上記方法で親子関係にします。<br />
リサイズの細かい説明は置いといて、何故この階層を作ったかと言うとリサイズをかける際（リサイズじゃなくても）オブジェクトに対する数値代入処理がバッティングする可能性を防ぐ為で、リサイズ処理はすべて親Mc(mc)にして、モーションは子Mc以下にしましょうってことです。<br />
</p>

<p><font style="font-size: 0.8em;">▼図2 : 各Mcの役割</font></p>
<img alt="movieclip2.jpg" src="http://www.dubfrog.net/blog/images/movieclip2.jpg" class="mt-image-left" style="margin: 0pt 20px 20px 0pt; float: left;" width="550" height="350" /><br clear="left" /><br />

<p>
かなり初心者向け？っぽい内容な気もするけど間に一個MovieClip(base)を挟むだけで<br />
まあラクです。なにかと。</p><br /><br /><br />


<h2 class="entry_title">稼働率でリサイズ動作幅を指定する</h2>
<p>
あと、稼働率のパーセンテージを取得してリサイズも結構使えます。<br />
稼働率って多分よく使うのがテキストスライダーとか動画再生ハンドル。<br />
それ以外にもモーション、リサイズにと幅広く応用できます。<br />
パーセンテージから動作を組み立てていくだけなので扱いやすいです。</p>
<br />

<p><font style="font-size: 0.8em;">▼稼働率の算出</font></p>
<textarea name="code" class="as3" cols="60" rows="5">//目的地までの距離 / 距離 (0.00～1.00%の算出 : ※100%で取得する場合は*100するだけ)
var percent:Number = (px - gx) / distance;
</textarea><br /><br />

<p>
たとえば指定範囲内だけで動作させたい場合(mcのx座標をx:100～x:200間のみでとか)、<br />
距離/動作幅で%を取得すれば100px分の稼働率が出ます。</p>

<p><font style="font-size: 0.8em;">▼稼働率の算出</font></p>
<textarea name="code" class="as3" cols="60" rows="5">
private function setResize(e:Event = null):void 
{
	var stw:Number = stage.stageWidth;
	var sth:Number = stage.stageHeight;
	const bw:Number = 1024;
	const bh:Number = 768;
	const dxMax:Number = 100;
	const dyMax:Number = 200;
	var distX:Number = stw - bw;
	var distY:Number = sth - bh;
	var xper:Number = distX / dxMax;
	var yper:Number = distY / dyMax;
	var moveX:Number, moveY:Number;
	
	moveX = 80 * xper; (80px稼働)
	mc.x = mc.extra.px(最初の座標) + moveX;
		
	moveX = 230 * xper; (230px稼働)
	image.x = image.extra.px(最初の座標) + moveX;
	//0%～100%以外で動作させたくない場合、0%以下100%以上は固定する。
	if(image.x &gt;= image.extra.px + 230) image.x = image.extra.px + 230;
	else if(image.x &lt;= image.extra.px) image.x = image.extra.px;
};
</textarea>


]]></description>
            <link>http://www.dubfrog.net/blog/2010/04/as30-12.html</link>
            <guid>http://www.dubfrog.net/blog/2010/04/as30-12.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">ActionScript3.0</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">AS3.0</category>
            
            <pubDate>Thu, 08 Apr 2010 15:50:33 +0900</pubDate>
        </item>
        
        <item>
            <title>AS3.0 | 立ち上る煙の表現手法</title>
            <description><![CDATA[ <p>前々記事で「ターゲット領域に合わせた炎を作成する」に引き続き<br />
今回は煙（ケムリ）の表現に焦点を当ててみました。</p>
<br />

 <p><font style="font-size: 0.8em;">●要FlashPlayer9以上</font></p>

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="dubfrog" width="200" height="400">
<param name="allowScriptAccess" value="sameDomain" />
<param name="wmode" value="opaque" />
<param name="movie" value="http://dubfrog.net/blog/swf/DFGUpStreamSmoke/DFGUpStreamSmoke.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><embed src="http://dubfrog.net/blog/swf/DFGUpStreamSmoke/DFGUpStreamSmoke.swf" quality="high" bgcolor="#000000" name="dubfrog" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" wmode="opaque" width="200" height="400">
</object><br /><br />


 <p>煙をas3.0で表現するにあたって自分的には2択だったんですがperlinNoiseを使用してのギミックか、<br />
BlurFilterを使用して重ね合わせての表現。<br />
今回は立ち上る煙を表現したかったので後者にしました。<br />
perlineNoiseを使用する場合のメリットとしては広範囲エリアでのスモーキーな表現が可能で流動的な煙の流れを比較的簡単に表現できるかな、と。<br />
デメリットとしては第一に広範囲でのperlinNoiseの使用は負荷が強いので負荷拡散がポイントになるところ。<br />
あと、今回のテーマの「立ち上る煙」には不向きな気がします。（俺的にやりずらいだけ）<br />
なので円形状のスプライトオブジェクトを複数生成して、ブラーフィルターを適用し、<br />
それらを三角関数をうまく取り入れながらy座標を操作することで表現しました。<br /><br />

ソースは以下。<br />
いつもながら我流スクリプトなんで細かいとこはお気になさらず。</p>
<br /><br />


<p><font style="font-size: 0.8em;">●まずは表示コンテナのセットアップ</font></p>
<p>▼個々の円形オブジェクトにフィルターを適用すると負荷が強いのでコンテナ自体にブラーを適用します。</p>
<textarea name="code" class="as3" cols="60" rows="5">function setup():void
{
	var blur:BlurFilter = new BlurFilter(15, 18, 2);
	container = new Sprite();
	container.filters = [blur];
	addChild(container);
}
</textarea>

<p><font style="font-size: 0.8em;">●煙の元となる円形状のスプライトオブジェクトを生成し、ENTER_FRAMEにてモーションを定義します</font></p>
<textarea name="code" class="as3" cols="60" rows="5">function smokeSprite():Sprite
{
	/*スプライトオブジェクトの生成*/	
	var mc:Sprite = new Sprite();
	mc.graphics.beginFill(0xffffff, 1);
	mc.graphics.drawCircle(0, 0, Math.random() * 任意のサイズ(size) + 1);
	mc.graphics.endFill();
	mc.scaleX = mc.scaleY = .1;
	
	var directAry:Array = [ -1, 1];
	var r:Number = Math.floor(Math.random() * 2); //流煙方向を決定
	var spd:Number = Math.random() * .1 + .05;
	var plus:Number = Math.random() * 任意のスピード(upSpd) + 2;
	
	var radian:Number = Math.PI / 180;
	var angle:Number = Math.random() * 360;
	var radius:Number = 0;
	var radiusMax:Number = Math.random() * 円動作幅(radiusSize) + 5;
	var rplus:Number = (Math.random() * 5 + 2) * directAry[r];
	
	/*モーション定義*/
	mc.addEventListener(Event.ENTER_FRAME, function(e:Event):void
	{
		radius += (radiusMax - radius ) *.02;//徐々に半径拡大
		angle += rplus;
		mc.x = Math.sin(radian * angle) * radius;
		mc.y -= plus;
		mc.scaleX += .03;
		mc.scaleY += .06;
		mc.alpha -= .01;
		if (mc.alpha &lt;= 0)
		{
			mc.removeEventListener(Event.ENTER_FRAME, arguments.callee);
			mc.parent.removeChild(mc);
		}
	});
	return mc;
}

</textarea>


<p><font style="font-size: 0.8em;">●あとは各トリガーを用意するだけ</font></p>
<p>▼汎用クラスにするのであればstartメソッド内変数を引数で持てるようにすると煙の詳細を個別に設定可能になります</p>
<textarea name="code" class="as3" cols="60" rows="5">/*public Start*/
function start():void
{
	size = 5;
	upSpd = 6;
	bubbles = 2;
	radiusSize = 30; //半径最大幅
	
	startRendering();
}
/*スタート*/
function startRendering():void
{
	/*---startRendering--*/ addEventListener(Event.ENTER_FRAME, rendering);
}
/*ストップ*/
function stopRendering():void
{
	/*---stopRendering--*/ removeEventListener(Event.ENTER_FRAME, rendering);
}
function rendering(e:Event):void
{
	for (var i = 0; i &lt;= 毎フレームごとの円生成数(bubbles); i++)
	{
		var mc:Sprite = smokeSprite();
		container.addChild(mc);
	}
}
</textarea>



]]></description>
            <link>http://www.dubfrog.net/blog/2010/01/as30-11.html</link>
            <guid>http://www.dubfrog.net/blog/2010/01/as30-11.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">ActionScript3.0</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">AS3.0</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">BitmapEffects</category>
            
            <pubDate>Thu, 14 Jan 2010 15:44:58 +0900</pubDate>
        </item>
        
        <item>
            <title>wonderfl | 音 particlesSoundVisualizer</title>
            <description><![CDATA[<p>
<font style="font-size: 0.8em;"><font color="#666666">●要 FlashPlayer9</font>
</font></p>
<a href="http://dubfrog.net/blog/swf/particlesSoundvisualizer/particlesSoundvisualizer.swf?width=800&amp;height=600" class="thickbox"><img alt="particlesSoundVisualizer.jpg" src="http://www.dubfrog.net/blog/images/particlesSoundVisualizer.jpg" class="mt-image-left" style="margin: 0pt 20px 20px 0pt; float: left;" height="200" width="550" /></a><br clear="left" />

<br /><br /><br />

<div style="text-align: center; width: 465px;"><iframe title="音 SoundVisualizer - wonderfl build flash online" src="http://wonderfl.net/blogparts/81dc8adceaca37197a399371eceaa93a37e965c2" style="border: 1px solid black;" height="490" width="465" scrolling="no"></iframe><a href="http://wonderfl.net/code/81dc8adceaca37197a399371eceaa93a37e965c2" title="音 SoundVisualizer - wonderfl build flash online">音 SoundVisualizer - wonderfl build flash online</a></div><br /><br />

<p>久しぶりにwonderflってみました。<br />
ずっとSoundMixer.computeSpectrum 使ってサウンドビジュアライザー作ってみたかったので満足。<br />
</p><br /><br /> ]]></description>
            <link>http://www.dubfrog.net/blog/2010/01/wonderfl-particlessoundvisuali.html</link>
            <guid>http://www.dubfrog.net/blog/2010/01/wonderfl-particlessoundvisuali.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">ActionScript3.0</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">PaperVision3D</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">wonderfl</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">BitmapEffects</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">wonderfl</category>
            
            <pubDate>Tue, 12 Jan 2010 17:16:02 +0900</pubDate>
        </item>
        
        <item>
            <title>AS3.0 | ターゲット領域に合わせた炎を作成する</title>
            <description><![CDATA[ <p>flasherやってると、ちょいちょいエフェクティブな表現を求められます。<br />
特に自然現象系のビットマップエフェクトはflasherとして必須で押さえておきたいところです。<br />
ってことで炎の表現がすでにいっぱいある中なんとなく作ってみたんで簡単にですが紹介してみます。
あくまで我流表現なんで細かい部分は気になさらずにどうぞ。<br />
</p>
<br />
<p><font style="font-size: 0.8em;" color="#666666">●要 flashplayer9以上</font></p>
<a href="http://dubfrog.net/lavo/DFGFire/index.html""><img alt="DFGFire.jpg" src="http://www.dubfrog.net/blog/images/DFGFire.jpg" class="mt-image-left" style="margin: 0pt 20px 20px 0pt; float: left;" height="200" width="550" /></a><br clear="left" />

<br /><br /><br />



<p>■まずimage1のような赤枠で囲まれたBitmapDataを作成したとします。<br />
（BitmapDataを作成するまでの手順は割愛します）</p>
<p><font style="font-size: 0.8em;" color="#666666">●image1</font></p>
<img alt="DFGFire_que1.jpg" src="http://www.dubfrog.net/blog/images/DFGFire_que1.jpg" class="mt-image-left" style="margin: 0pt 20px 20px 0pt; float: left;" height="400" width="550" /><br clear="left" />
<br /><br />

<p>■ターゲットとなるビットマップを作成したとこで更にビットマップデータをいくつか作成し各ビットマップ要素にDisplacementMapFilterとperlinNoiseを使用して炎の揺らめきを出していきます。</p>

<p><font style="font-size: 0.8em;" color="#666666">●DisplacementMapFilterとperlinNoiseを適用後</font></p>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="dubfrog" height="400" width="550">
<param name="allowScriptAccess" value="sameDomain" />
<param name="wmode" value="opaque" />
<param name="movie" value="http://dubfrog.net/blog/swf/DFGFire/DFGFire_cue1.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><embed src="http://dubfrog.net/blog/swf/DFGFire/DFGFire_cue1.swf" quality="high" bgcolor="#000000" name="dubfrog" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" wmode="opaque" height="400" width="550">
</object>
<br /><br />


<textarea name="code" class="as3" cols="60" rows="5">//captureTarget : ターゲットオブジェクト
//w, h : ターゲットの縦幅、横幅を代入した変数
var offset = [new Point(), new Point()];
var bmpd = new BitmapData(w, h);
var sourse = new BitmapData(w, h, true, 0x808080);
sourse.unlock();
sourse.draw(captureTarget, new Matrix(1, 0, 0, 1, 0, 0), new ColorTransform(0, 0, 0, 1, 255, 255, 255), null);
sourse.lock();
var sourseObj = new Bitmap(sourse);
sourseObj.blendMode = BlendMode.ADD;
container.addChild(sourseObj);

var dmf = new DisplacementMapFilter(bmpd,new Point(0, 0), BitmapDataChannel.BLUE,BitmapDataChannel.BLUE, 0, 100, DisplacementMapFilterMode.CLAMP);

addEventListener(Event.ENTER_FRAME, function(e:Event):void
{
	bmpd.perlinNoise(17, 20, 3, 999999, false, false, 1, true, offset);
	offset[0].y += 5;
	offset[1].y += 5;
	sourseObj.filters = [dmf];
});
</textarea>


<br /><br /><br />
<p>■炎となるベースを作成したら、次は質感をプラスする為に先ほど作成したベースビットマップをクローンし、重ね合わせ、ブラーとグロウの両フィルターを適用します</p>


<textarea name="code" class="as3" cols="60" rows="5">var buffer:BitmapData = sourse.clone();
var bufferObj:Bitmap = new Bitmap(buffer);
bufferObj.blendMode = BlendMode.ADD;
addChild(bufferObj);

var blur:BlurFilter = new BlurFilter(10, 20, 2);
var glow:GlowFilter = new GlowFilter(0x------（任意のカラー値）, 1, 10, 20, 50, 2, true, false);

addEventListener(Event.ENTER_FRAME, function(e:Event):void
{
	bmpd.perlinNoise(17, 20, 3, 999999, false, false, 1, true, offset);
	offset[0].y += 5;
	offset[1].y += 5;
	sourseObj.filters = [dmf, glow, blur];
	bufferObj.filters = [dmf, glow, blur];
});
</textarea>

<br /><br /><br />
<p><font style="font-size: 0.8em;" color="#666666">●各BitmapDataを適用後</font></p>
<a href="http://dubfrog.net/lavo/DFGFire/DFGFire_cue2.html"><img alt="DFGFire_cue2.jpg" src="http://www.dubfrog.net/blog/images/DFGFire_cue2.jpg" class="mt-image-left" style="margin: 0pt 20px 20px 0pt; float: left;" height="400" width="550" /></a><br clear="left" />
<br /><br />
<p>■ここまでで、とりあえずは表現的にはクリアです。<br /><br />
▼ただこの状態だと範囲の小さいターゲットには十分スムーズに動作しますが、<br />
大きすぎるビットマップターゲットにはperlinNoiseの負荷が大きすぎてあまり実用的ではありません。<br />
ので実際に適用する炎を予め品質(width,height)を下げて放出し、原寸大に戻してやると負荷軽減が出来ます。<br />
記事内上段のデモはBitmapDataの生成サイズを100%がdefaultだとしたら50%まで品質を落とした状態になります。この処理を追加することで各変数値を調整すればステージいっぱいに炎を生成しても大分負荷が軽減されるので、負荷の強いエフェクトにはかなり有効になります。<br /><br />

</p>







]]></description>
            <link>http://www.dubfrog.net/blog/2009/12/as30-2.html</link>
            <guid>http://www.dubfrog.net/blog/2009/12/as30-2.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">ActionScript3.0</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">AS3.0</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">BitmapEffects</category>
            
            <pubDate>Sat, 19 Dec 2009 19:12:51 +0900</pubDate>
        </item>
        
        <item>
            <title>Blogparts | Twitter連動ブログパーツ twitime!!</title>
            <description><![CDATA[ <p>どうも。会社絡めての配布ですが今が旬のTwitterでブログパーツ作りました。<br />
是非使ってやってください。<br />
製作会社のいいところはひょんなアイディアをポンと形に出来ちゃうとこ。<br />
それを出来る人間が集まってるからね。<br /><br />
今回はそんな感じでいいスピード感でした。<br /><br />
</p>
<a href="http://www.metaphase.co.jp/bp/twitime/"><img alt="twitime.jpg" src="http://www.dubfrog.net/blog/images/twitime.jpg" class="mt-image-left" style="margin: 0pt 20px 20px 0pt; float: left;" width="200" height="400" /></a><br clear="left" />

<p></p>]]></description>
            <link>http://www.dubfrog.net/blog/2009/12/blogparts-twitter-twitime.html</link>
            <guid>http://www.dubfrog.net/blog/2009/12/blogparts-twitter-twitime.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Blogparts</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">BlogParts</category>
            
            <pubDate>Thu, 10 Dec 2009 21:34:31 +0900</pubDate>
        </item>
        
        <item>
            <title>AS3.0 | よくあるローディング</title>
            <description><![CDATA[<p>なんか毎度毎度ローディング考えるのも面倒になってきた今日この頃なので<br />
macやらいろんなとこで使われる無難なローディングパーツを作ったので晒してみます。<br />
まあものすごい普通で必要最低限な内容です。<br /><br />
</p>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="dubfrog" width="550" height="200">
<param name="allowScriptAccess" value="sameDomain" />
<param name="wmode" value="opaque" />
<param name="movie" value="http://dubfrog.net/blog/swf/loadparrts01/loading01.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><embed src="http://dubfrog.net/blog/swf/loadparrts01/loading01.swf" quality="high" bgcolor="#000000" name="dubfrog" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" wmode="opaque" width="550" height="200">
</object><br /><br />

<img alt="box2d_1.jpg" src="http://www.dubfrog.net/blog/images/as_file.jpg" class="mt-image-left" style="margin: 0pt 5px 20px 0pt; float: left;" width="16" height="16" />
<p><a href="http://dubfrog.net/blog/swf/loadparrts01/loading.zip">Loadparts01.as (2kb)</a></p>
<br clear="left" />

<br />
<p>[使い方]<br /><br />
インスタンスの生成後、任意の場所にaddChild。<br /><br />
　　　　　↓<br /><br />
●Loadparts01.start()メソッド　&gt;動作開始<br />
●Loadparts01.stop()メソッド　&gt;動作停止<br />

※フェードイン・アウト、スケールイン・アウト等は各自ご自由に。

</p><br /><br />


<p><font style="font-size: 0.8em;">●Loadparts01.as</font></p>
<textarea name="code" class="as3" cols="60" rows="5">package net.load{
	
	import flash.display.*;
	import flash.events.*;
	import flash.utils.*;
	
	/* @author zawa aka dubfrog /* 
	
	/* project [ Loadparts01 ] */ 
	
	public class Loadparts01 extends Sprite{
		
		public function Loadparts01(_color:Number = 0x000000, _size:Number = 5):void{
			color = _color;
			size = _size;
			createLoader();
		}
		private function createLoader():void
		{
			var radian:Number = Math.PI / 180;
			var cutmax:Number = 12;
			var radius:Number = size;
			parts = [];
			for (var i = 0; i &lt;= cutmax-1; i++)
			{
				var angle:Number = (360 / cutmax) * i;
				var mc:Sprite = partsRect();
				mc.x = Math.sin(radian * angle) * radius;
				mc.y = Math.cos(radian * angle) * radius;
				mc.rotation = -angle;
				mc.alpha = .3;
				addChild(mc);
				parts[i] = mc;
			}
		}
		private function partsRect():Sprite 
		{
			var mc:Sprite = new Sprite();
			mc.graphics.beginFill(color);
			mc.graphics.drawRoundRect(-(size / 4)/2, -(size / 1.5)/2, size / 4, size, size / 3);
			mc.graphics.endFill();
			return mc;
		}
		public function start():void
		{
			cnt = 0;
			bool = true;
			timer = new Timer(40, 0);
			timer.addEventListener(TimerEvent.TIMER, loading);
			timer.start();
		}
		private function reset():void
		{
			timer.stop();
			timer.removeEventListener(TimerEvent.TIMER, loading);
			timer = null;
			
			for (var i = 0; i &lt;= parts.length - 1; i++) {
				parts[i].removeEventListener(Event.ENTER_FRAME, alphaup);
			}
		}
		private function loading(e:TimerEvent):void
		{
			if (bool)
			{
				parts[cnt].alpha = 1;
				parts[cnt].removeEventListener(Event.ENTER_FRAME, alphaup);
				parts[cnt].addEventListener(Event.ENTER_FRAME, alphaup);
				cnt--;
				if (cnt &lt; 0) cnt = parts.length - 1;
			}
		}
		private function alphaup(e:Event):void
		{
			var target = e.target;
			target.alpha += (.3 - target.alpha) * .1;
		}
		public function stop():void
		{
			reset();
		}
		
		/*_Vars______________________________________________________________________________________*/
		
		private var color:Number;
		private var size:Number;
		private var bool:Boolean;
		private var parts:Array;
		private var timer:Timer;
		private var cnt:Number;
	}
}
</textarea>
<br /><br />


]]></description>
            <link>http://www.dubfrog.net/blog/2009/12/as30-10.html</link>
            <guid>http://www.dubfrog.net/blog/2009/12/as30-10.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">ActionScript3.0</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">AS3.0</category>
            
            <pubDate>Wed, 02 Dec 2009 17:59:23 +0900</pubDate>
        </item>
        
        <item>
            <title>Website | 全日本バーべイタム選手権</title>
            <description><![CDATA[ <p>久しぶりにウェブサイトでハマった！秀逸だな～。<br />
しかもすんげー楽しい。<br /><br /></p>


<p><b>●全日本バーべ</b><b>イ</b><b>タム選手権</b>　<a href="http://www.verbatim.jp/"><small>Verbatim（バーベイタム）</small></a></p>
<a href="http://www.verbatim.jp/senshuken/"><span class="mt-enclosure mt-enclosure-image"><img alt="monster.jpg" src="http://www.dubfrog.net/blog/images/monster.jpg" class="mt-image-left" style="margin: 0pt 20px 20px 0pt; float: left;" width="300" height="230" /></span></a><br clear="left" />

<p>
漢字をクイズ形式に読み解いていくだけでオリジナルのメディアモンスターが作成され、<br />
バトルを楽しめるサイト。<br />
ただバトルを眺めているだけでなく3つのコマンドを使用してバトルすることが出来て、しかも<br />
バトルするごとに記録され強くなっていく仕組み。<br />
<br />
こちら俺の作成したメディアモンスター。<br />
<a href="http://www.verbatim.jp/senshuken/?id=3251">http://www.verbatim.jp/senshuken/?id=3251</a><br />
<br />

</p>]]></description>
            <link>http://www.dubfrog.net/blog/2009/11/website.html</link>
            <guid>http://www.dubfrog.net/blog/2009/11/website.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">website</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">website</category>
            
            <pubDate>Mon, 16 Nov 2009 15:52:37 +0900</pubDate>
        </item>
        
        <item>
            <title>diary | スタディアップアクションスクピプト</title>
            <description><![CDATA[ <p>ほんとどーでもいー話ですが<br />
当ブログのサブタイトルとして使用している"Studyup ActionScript"ですが、<br />
先ほど職場のディレクターに「スペル間違ってるよ。」と指摘されスペルミスが発覚しましたorz<br /><br />
<br />
●修正前<br /><br />
<img alt="logo_error.png" src="http://www.dubfrog.net/blog/images/logo_error.png" class="mt-image-left" style="margin: 0pt 0px 0px 0pt;" float="left" /><br clear="left" /><br />
●修正後<br /><br />
<img alt="logo.png" src="http://www.dubfrog.net/blog/images/logo.png" class="mt-image-left" style="margin: 0pt 0px 0px 0pt;" float="left" /><br clear="left" /><br /><br />

このブログやりだして一年弱ですがまるで気付かなかった・・・。<br />
最初はちゃんとscriptって書いてたような・・イメージをブロックとしてしか見てなかったからなのか。<br />
スクピプトってなんだ！？<br />
俺は一年弱もアクションスクピプトブログを更新してたのか・・・<br />
なにがどーなってスペルミスに気付かなかったのかさっぱりです。<br />
自分を疑い出せばキリないですが、久々にはずかすぃー気持になりました。<br />
</p>]]></description>
            <link>http://www.dubfrog.net/blog/2009/10/diary.html</link>
            <guid>http://www.dubfrog.net/blog/2009/10/diary.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">diary</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">diary</category>
            
            <pubDate>Fri, 16 Oct 2009 13:37:49 +0900</pubDate>
        </item>
        
        <item>
            <title>AS3.0 | gotoAndStop直後の&quot;null&quot;回避手段</title>
            <description><![CDATA[ <p>flashコンテンツを一つのswfのみで制作する際、自分はよく1フレーム目でローディング、2フレーム目でコアオブジェクトの表示をするんですが、<br /><br />
<img alt="box2d_1.jpg" src="http://www.dubfrog.net/blog/images/render_timeline.jpg" class="mt-image-left" style="margin: 0pt 20px 20px 0pt;" float="left" /><br clear="left" />
gotoAndStop(2)でフレーム移動した直後は"表示オブジェクト"がnullになってしまうので、表示オブジェクトを毎フレーム処理継続で監視して認識後に次のメソッドをコールするんですが、もっとスマートに認識監視が行えるRENDERイベントってのを最近はよく使ってます。<br /><br />

<font style="font-size: 0.8em;">●ローディングイベント内</font></p>
<textarea name="code" class="as3" cols="60" rows="5">private function contentLoading(e:Event) {
	var loaded:Number = info.bytesLoaded;
	var total:Number = info.bytesTotal;
	var per:Number = Math.floor(loaded / total * 100);
	if (per &gt;= 100) {
		removeEventListener(Event.ENTER_FRAME, contentLoading);
		stage.addEventListener(Event.RENDER, init);
		stage.invalidate();
		gotoAndStop(2);
	}
}
private function init(e:Event):void {
	trace(表示オブジェクト); //認識します
}
</textarea><br />

<p>ローディング終了後、RENDERイベントにリスナー登録してinvalidateをコールすることでレンダリング後の参照をスマートに行えます。<br />
invalidateを呼び出すと表示リストがレンダリングされる際、Flash Playerから登録されている各表示オブジェクトに,RENDERイベントを受け取るように対して送出されるみたいです。<br />
しかし、大概アレ？って思ったら解決策って用意されてるもんですね・・・。<br /><br />

詳しくは下記で説明されていました。<br /><br />
参考元：● <a href="http://level0.kayac.com/2008/02/as3gotoandstopeventrender.php">AS3のgotoAndStop()問題とEvent.RENDERの使い道  -level0.KAYAC</a>

</p>
]]></description>
            <link>http://www.dubfrog.net/blog/2009/10/as30-gotoandstopnull.html</link>
            <guid>http://www.dubfrog.net/blog/2009/10/as30-gotoandstopnull.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">ActionScript3.0</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">AS3.0</category>
            
            <pubDate>Fri, 09 Oct 2009 10:24:09 +0900</pubDate>
        </item>
        
    </channel>
</rss>

