<?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>jp.ferv.blog &#187; SWFProfiler</title>
	<atom:link href="http://ferv.jp/blog/tag/swfprofiler/feed/" rel="self" type="application/rss+xml" />
	<link>http://ferv.jp/blog</link>
	<description>「ActionScriptは素晴らしい。コンパイルする価値がある。」って偉い人が言ってた。</description>
	<lastBuildDate>Sun, 15 Aug 2010 00:42:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ProgressionでSWFProfilerを使う</title>
		<link>http://ferv.jp/blog/2009/06/25/progression_swfprofiler/</link>
		<comments>http://ferv.jp/blog/2009/06/25/progression_swfprofiler/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 07:54:35 +0000</pubDate>
		<dc:creator>dsk</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Progression]]></category>
		<category><![CDATA[SWFProfiler]]></category>

		<guid isPermaLink="false">http://flabo.org/?p=875</guid>
		<description><![CDATA[Progressionを使いつつSWFProfilerを使いたいんだけど、Progressionが作ってるコンテキストメニューもそのまま使いたい。
SWFProfilerは、initの第一引数で渡すInteractive [...]]]></description>
			<content:encoded><![CDATA[<p>Progressionを使いつつSWFProfilerを使いたいんだけど、Progressionが作ってるコンテキストメニューもそのまま使いたい。<br />
SWFProfilerは、initの第一引数で渡すInteractiveObjectのコンテキストメニューにアイテムを追加（実際には上書き）するんだけど、ついでに任意のContextMenuの参照を渡してそこにもアイテムを追加するようにすればいいかと。</p>
<p>Progressionが作ってくれるIndex.asのコンストラクタで、<code>SWFProfiler.init(this, false, Progression.uiContextMenu);</code>したサンプル。（第二引数については<a href="http://ferv.jp/blog/2009/05/22/display_swfprofilter/">SWFProfilerをデフォルトで表示する</a>を参照）<br />
<a rel="shadowbox;width=600;height=400;" href="http://ferv.jp/blog/wp-content/uploads/2009/06/progression_swfprofiler.swf">progression_swfprofiler.swf</a><br />
<a href="http://asdoc.progression.jp/jp/progression/Progression.html#uiContextMenu">Progression 3.1 - API Reference</a>によるとProgression.uiContextMenuで取得できるコンテキストメニューは「背景に関連付けられている CastObjectContextMenu インスタンス」てことなんで、背景のところでしか"Show Profiler"出せないけどとりあえずいっか。ちなみに、ShowProfilerする用のインスタンス一個作ってもいいかもって人には<a href="http://blog.yaimo.net/2009/04/22/263/">Progression SWF Profiler デバック やってみた</a>っていう方法もあるみたい。</p>
	<ul class="syntax_hilite_header">		<li class="language">ActionScript</li>		<li class="filename">SWFProfiler.as</li>	<li class="source"><a href="#actionscript-2_plane" rel="shadowbox;">Source</a></li></ul><div class="syntax_hilite_planecode" id="actionscript-2_plane"><pre>/**
 * Initiates the SWFProfiler to the ContextMenu of the reference passed.
 */
public static function init(context : InteractiveObject, showProfiler:Boolean = false, ...contextMenus) : void {
	if(inited) return;

	inited = true;
	stage = context.stage;

	content = new ProfilerContent();
	frame = new Sprite();

	minFps = Number.MAX_VALUE;
	maxFps = Number.MIN_VALUE;
	minMem = Number.MAX_VALUE;
	maxMem = Number.MIN_VALUE;

	ci = new ContextMenuItem("Show Profiler", true);
	addEvent(ci, ContextMenuEvent.MENU_ITEM_SELECT, onSelect);
	var cm : ContextMenu = new ContextMenu();
	cm.hideBuiltInItems();
	cm.customItems.push(ci);
	context.contextMenu = cm;

	var contextMenu:*;
	for each (contextMenu in contextMenus) contextMenu.customItems.push(ci);

	start();

	if (showProfiler) show();
}</pre></div><div class="syntax_hilite">
<div id="actionscript-2">
<div class="actionscript actionscript" style="font-family:monospace;"><ol start="38"><li class="li1"><div class="de1"><span class="coMULTI">/**</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp;* Initiates the SWFProfiler to the ContextMenu of the reference passed.</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp;*/</span></div></li>
<li class="li2"><div class="de2"><span class="kw3">public</span> <span class="kw3">static</span> <span class="kw2">function</span> init<span class="br0">&#40;</span>context : InteractiveObject, showProfiler:<span class="kw3">Boolean</span> = <span class="kw2">false</span>, ...<span class="me1">contextMenus</span><span class="br0">&#41;</span> : <span class="kw3">void</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>inited<span class="br0">&#41;</span> <span class="kw1">return</span>;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; inited = <span class="kw2">true</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw3">stage</span> = context.<span class="kw3">stage</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; content = <span class="kw2">new</span> ProfilerContent<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; frame = <span class="kw2">new</span> Sprite<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; minFps = <span class="kw3">Number</span>.<span class="kw3">MAX_VALUE</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; maxFps = <span class="kw3">Number</span>.<span class="kw3">MIN_VALUE</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; minMem = <span class="kw3">Number</span>.<span class="kw3">MAX_VALUE</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; maxMem = <span class="kw3">Number</span>.<span class="kw3">MIN_VALUE</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; ci = <span class="kw2">new</span> <span class="kw3">ContextMenuItem</span><span class="br0">&#40;</span><span class="st0">&quot;Show Profiler&quot;</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; addEvent<span class="br0">&#40;</span>ci, ContextMenuEvent.<span class="me1">MENU_ITEM_SELECT</span>, <span class="kw3">onSelect</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">var</span> cm : <span class="kw3">ContextMenu</span> = <span class="kw2">new</span> <span class="kw3">ContextMenu</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; cm.<span class="kw3">hideBuiltInItems</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; cm.<span class="kw3">customItems</span>.<span class="kw3">push</span><span class="br0">&#40;</span>ci<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; context.<span class="kw3">contextMenu</span> = cm;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> <span class="kw3">contextMenu</span>:<span class="sy0">*</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw1">for</span> each <span class="br0">&#40;</span><span class="kw3">contextMenu</span> <span class="kw1">in</span> contextMenus<span class="br0">&#41;</span> <span class="kw3">contextMenu</span>.<span class="kw3">customItems</span>.<span class="kw3">push</span><span class="br0">&#40;</span>ci<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw3">start</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>showProfiler<span class="br0">&#41;</span> <span class="kw3">show</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
</ol></div>
</div></div><br />
<p>一応ソース置いとく。<br />
<a href="http://ferv.jp/blog/wp-content/uploads/2009/06/SWFProfiler.as.zip">SWFProfiler.as.zip</a></p>]]></content:encoded>
			<wfw:commentRss>http://ferv.jp/blog/2009/06/25/progression_swfprofiler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SWFProfilerをデフォルトで表示する</title>
		<link>http://ferv.jp/blog/2009/05/22/display_swfprofilter/</link>
		<comments>http://ferv.jp/blog/2009/05/22/display_swfprofilter/#comments</comments>
		<pubDate>Thu, 21 May 2009 17:03:48 +0000</pubDate>
		<dc:creator>dsk</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[SWFProfiler]]></category>

		<guid isPermaLink="false">http://flabo.org/?p=713</guid>
		<description><![CDATA[
デバッグのお供に com.flashdynamix.utils.SWFProfiler を重宝してます。Tweensyパッケージに同梱されてるユーティリティで、FPSやメモリ使用量をグラフ表示してくれて超便利。
使い方は、SWF上で右クリックで出てくるコンテキストメニューに追加される"Show Profiler"から表示を切り]]></description>
			<content:encoded><![CDATA[<p><a rel="shadowbox;width=600;height=400;" href="http://ferv.jp/blog/wp-content/uploads/2009/05/testclass_swfprofiler.swf"><img src="http://ferv.jp/blog/wp-content/uploads/2009/05/testclass_swfprofiler.png" alt="testclass_swfprofiler" title="testclass_swfprofiler" width="600" height="150" class="alignnone size-full wp-image-727" /></a><p>
<p>デバッグのお供に com.flashdynamix.utils.SWFProfiler を重宝してます。<a href="http://code.google.com/p/tweensy/">Tweensy</a>パッケージに同梱されてるユーティリティで、FPSやメモリ使用量をグラフ表示してくれて超便利。<br />
使い方は、SWF上で右クリックで出てくるコンテキストメニューに追加される"Show Profiler"から表示を切り替えるんだけど、デフォルトで表示しないことになってる。<br />
ちょろっと手を加えてデフォルトでも表示できるように <code>SWFProfiler.init()</code> 関数を変更してみた。</p>
	<ul class="syntax_hilite_header">		<li class="language">ActionScript</li>		<li class="filename">SWFProfiler.as</li>	<li class="source"><a href="#actionscript-5_plane" rel="shadowbox;">Source</a></li></ul><div class="syntax_hilite_planecode" id="actionscript-5_plane"><pre>public static function init(context : InteractiveObject, display:Boolean = false/* ←ココ */) : void {
	if(inited) return;

	inited = true;
	stage = context.stage;

	content = new ProfilerContent();
	frame = new Sprite();

	minFps = Number.MAX_VALUE;
	maxFps = Number.MIN_VALUE;
	minMem = Number.MAX_VALUE;
	maxMem = Number.MIN_VALUE;

	var cm : ContextMenu = new ContextMenu();
	cm.hideBuiltInItems();
	ci = new ContextMenuItem("Show Profiler", true);
	cm.customItems = [ci];
	context.contextMenu = cm;
	addEvent(ci, ContextMenuEvent.MENU_ITEM_SELECT, onSelect);

	start();
	if (display) show();	/* ←ココ */
}</pre></div><div class="syntax_hilite">
<div id="actionscript-5">
<div class="actionscript actionscript" style="font-family:monospace;"><ol start="41"><li class="li1"><div class="de1"><span class="kw3">public</span> <span class="kw3">static</span> <span class="kw2">function</span> init<span class="br0">&#40;</span>context : InteractiveObject, display:<span class="kw3">Boolean</span> = <span class="kw2">false</span><span class="coMULTI">/* ←ココ */</span><span class="br0">&#41;</span> : <span class="kw3">void</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>inited<span class="br0">&#41;</span> <span class="kw1">return</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; inited = <span class="kw2">true</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw3">stage</span> = context.<span class="kw3">stage</span>;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; content = <span class="kw2">new</span> ProfilerContent<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; frame = <span class="kw2">new</span> Sprite<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; minFps = <span class="kw3">Number</span>.<span class="kw3">MAX_VALUE</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; maxFps = <span class="kw3">Number</span>.<span class="kw3">MIN_VALUE</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; minMem = <span class="kw3">Number</span>.<span class="kw3">MAX_VALUE</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; maxMem = <span class="kw3">Number</span>.<span class="kw3">MIN_VALUE</span>;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> cm : <span class="kw3">ContextMenu</span> = <span class="kw2">new</span> <span class="kw3">ContextMenu</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; cm.<span class="kw3">hideBuiltInItems</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; ci = <span class="kw2">new</span> <span class="kw3">ContextMenuItem</span><span class="br0">&#40;</span><span class="st0">&quot;Show Profiler&quot;</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; cm.<span class="kw3">customItems</span> = <span class="br0">&#91;</span>ci<span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; context.<span class="kw3">contextMenu</span> = cm;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; addEvent<span class="br0">&#40;</span>ci, ContextMenuEvent.<span class="me1">MENU_ITEM_SELECT</span>, <span class="kw3">onSelect</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw3">start</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>display<span class="br0">&#41;</span> <span class="kw3">show</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;&nbsp; &nbsp; <span class="coMULTI">/* ←ココ */</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#125;</span></div></li>
</ol></div>
</div></div><br />
<p>この二箇所の変更で、右クリックから表示を切り替えなくても <code>SWFProfiler.init()</code> の第二引数に <code>true</code> を渡してあげればデフォルトで表示されるようになる。もちろんその後、右クリックから"Hide Profiler"で消すこともできる。<br />
制作の課程でロジック実装とか検証とかデバッグ中は <code>true</code> にしとけば一々右クリックしなくていいから楽。で、制作が進むにつれ <code>false</code> にして、リリース時には SWFProfiler を消すと。</p>
	<ul class="syntax_hilite_header">		<li class="language">ActionScript</li>		<li class="filename">TestClass_SWFProfiler.as</li>	<li class="source"><a href="#actionscript-6_plane" rel="shadowbox;">Source</a></li></ul><div class="syntax_hilite_planecode" id="actionscript-6_plane"><pre>package {
	import com.flashdynamix.motion.Tweensy;
	import com.flashdynamix.motion.TweensyTimeline;
	import com.flashdynamix.utils.SWFProfiler;
	import flash.display.Graphics;
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.Point;

	[SWF(backgroundColor = 0x000000, width = 600, height = 400, frameRate = 30)]
	public class TestClass_SWFProfiler extends Sprite {

		public function TestClass_SWFProfiler() {
			SWFProfiler.init(this, true);

			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}

		private function onEnterFrame(e:Event):void {
			var star:Shape = createStar();
			var stageWidth:Number = stage.stageWidth;
			var stageHeight:Number = stage.stageHeight;

			star.x = stageWidth / 2;
			star.y = stageHeight / 2;

			var targetScale:Number = Math.random() * 5 + 5;
			var tweensyTimeline:TweensyTimeline = Tweensy.to(
				star, {
					x: Math.random() * stageWidth,
					y: Math.random() * stageHeight,
					scaleX: targetScale,
					scaleY: targetScale,
					rotation: -360 + Math.random() * 720,
					alpha: 0
				}, Math.random() * 2 + 1
			);
			tweensyTimeline.onComplete = onTweensyComplete;
			tweensyTimeline.onCompleteParams = [tweensyTimeline, star];

			addChildAt(star, 0);
		}

		private function onTweensyComplete(tweensyTimeline:TweensyTimeline, star:Shape):void {
			tweensyTimeline.dispose();
			removeChild(star);
		}

		private function createStar():Shape {
			var star:Shape = new Shape();
			var g:Graphics = star.graphics;
			var commands:Vector.<int> = new Vector.<int>(10, true);
			var data:Vector.<number> = new Vector.<number>(20, true);

			var i:int, radius:Number, angle:Number, coord:Point;
			var innerRadius:Number = Math.random() * 30;
			var outerRadius:Number = innerRadius + 10 + Math.random() * 10;
			var unit:Number = Math.PI / 5;
			for (i = 0; i < 10; i ++) {
				commands[i] = (i == 0)? 1: 2;

				radius = (i % 2 == 0)? outerRadius: innerRadius;
				angle = -Math.PI / 2 + unit * i;
				coord = Point.polar(radius, angle);
				data[i * 2] = coord.x;
				data[i * 2 + 1] = coord.y;
			}

			var color:uint = Math.random() * 0xffffff;

			g.beginFill(color);
			g.drawPath(commands, data);
			g.endFill();

			return star;
		}


	}

}</pre></div><div class="syntax_hilite">
<div id="actionscript-6">
<div class="actionscript actionscript" style="font-family:monospace;"><ol><li class="li1"><div class="de1">package <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw3">import</span> com.<span class="me1">flashdynamix</span>.<span class="me1">motion</span>.<span class="me1">Tweensy</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw3">import</span> com.<span class="me1">flashdynamix</span>.<span class="me1">motion</span>.<span class="me1">TweensyTimeline</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw3">import</span> com.<span class="me1">flashdynamix</span>.<span class="me1">utils</span>.<span class="me1">SWFProfiler</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw3">import</span> flash.<span class="me1">display</span>.<span class="me1">Graphics</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw3">import</span> flash.<span class="me1">display</span>.<span class="me1">Shape</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw3">import</span> flash.<span class="me1">display</span>.<span class="me1">Sprite</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw3">import</span> flash.<span class="me1">events</span>.<span class="me1">Event</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw3">import</span> flash.<span class="me1">geom</span>.<span class="me1">Point</span>;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#91;</span>SWF<span class="br0">&#40;</span><span class="kw3">backgroundColor</span> = 0x000000, <span class="kw3">width</span> = <span class="nu0">600</span>, <span class="kw3">height</span> = <span class="nu0">400</span>, frameRate = <span class="nu0">30</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw3">public</span> <span class="kw2">class</span> TestClass_SWFProfiler <span class="kw3">extends</span> Sprite <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">public</span> <span class="kw2">function</span> TestClass_SWFProfiler<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SWFProfiler.<span class="me1">init</span><span class="br0">&#40;</span><span class="kw3">this</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addEventListener<span class="br0">&#40;</span>Event.<span class="me1">ENTER_FRAME</span>, <span class="kw3">onEnterFrame</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw2">function</span> <span class="kw3">onEnterFrame</span><span class="br0">&#40;</span><span class="kw3">e</span>:Event<span class="br0">&#41;</span>:<span class="kw3">void</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> star:Shape = createStar<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> stageWidth:<span class="kw3">Number</span> = <span class="kw3">stage</span>.<span class="me1">stageWidth</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> stageHeight:<span class="kw3">Number</span> = <span class="kw3">stage</span>.<span class="me1">stageHeight</span>;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; star.<span class="me1">x</span> = stageWidth <span class="sy0">/</span> <span class="nu0">2</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; star.<span class="me1">y</span> = stageHeight <span class="sy0">/</span> <span class="nu0">2</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> targetScale:<span class="kw3">Number</span> = <span class="kw3">Math</span>.<span class="kw3">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">*</span> <span class="nu0">5</span> + <span class="nu0">5</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> tweensyTimeline:TweensyTimeline = Tweensy.<span class="me1">to</span><span class="br0">&#40;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; star, <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; x: <span class="kw3">Math</span>.<span class="kw3">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">*</span> stageWidth,</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; y: <span class="kw3">Math</span>.<span class="kw3">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">*</span> stageHeight,</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scaleX: targetScale,</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scaleY: targetScale,</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rotation: -<span class="nu0">360</span> + <span class="kw3">Math</span>.<span class="kw3">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">*</span> <span class="nu0">720</span>,</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alpha: 0</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>, <span class="kw3">Math</span>.<span class="kw3">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">*</span> <span class="nu0">2</span> + <span class="nu0">1</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tweensyTimeline.<span class="me1">onComplete</span> = onTweensyComplete;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tweensyTimeline.<span class="me1">onCompleteParams</span> = <span class="br0">&#91;</span>tweensyTimeline, star<span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; addChildAt<span class="br0">&#40;</span>star, 0<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw2">function</span> onTweensyComplete<span class="br0">&#40;</span>tweensyTimeline:TweensyTimeline, star:Shape<span class="br0">&#41;</span>:<span class="kw3">void</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tweensyTimeline.<span class="me1">dispose</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; removeChild<span class="br0">&#40;</span>star<span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">private</span> <span class="kw2">function</span> createStar<span class="br0">&#40;</span><span class="br0">&#41;</span>:Shape <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> star:Shape = <span class="kw2">new</span> Shape<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> g:Graphics = star.<span class="me1">graphics</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> commands:Vector.<span class="sy0">&lt;</span>int<span class="sy0">&gt;</span> = <span class="kw2">new</span> Vector.<span class="sy0">&lt;</span>int<span class="sy0">&gt;</span><span class="br0">&#40;</span><span class="nu0">10</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> <span class="kw3">data</span>:Vector.<span class="sy0">&lt;</span>number<span class="sy0">&gt;</span> = <span class="kw2">new</span> Vector.<span class="sy0">&lt;</span>number<span class="sy0">&gt;</span><span class="br0">&#40;</span><span class="nu0">20</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> i:<span class="kw3">int</span>, radius:<span class="kw3">Number</span>, angle:<span class="kw3">Number</span>, coord:Point;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> innerRadius:<span class="kw3">Number</span> = <span class="kw3">Math</span>.<span class="kw3">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">*</span> <span class="nu0">30</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> outerRadius:<span class="kw3">Number</span> = innerRadius + <span class="nu0">10</span> + <span class="kw3">Math</span>.<span class="kw3">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">*</span> <span class="nu0">10</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> unit:<span class="kw3">Number</span> = <span class="kw3">Math</span>.<span class="kw3">PI</span> <span class="sy0">/</span> <span class="nu0">5</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>i = 0; i <span class="sy0">&lt;</span> <span class="nu0">10</span>; i ++<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; commands<span class="br0">&#91;</span>i<span class="br0">&#93;</span> = <span class="br0">&#40;</span>i == 0<span class="br0">&#41;</span>? <span class="nu0">1</span>: <span class="nu0">2</span>;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; radius = <span class="br0">&#40;</span>i <span class="sy0">%</span> <span class="nu0">2</span> == 0<span class="br0">&#41;</span>? outerRadius: innerRadius;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; angle = -<span class="kw3">Math</span>.<span class="kw3">PI</span> <span class="sy0">/</span> <span class="nu0">2</span> + unit <span class="sy0">*</span> i;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; coord = Point.<span class="me1">polar</span><span class="br0">&#40;</span>radius, angle<span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">data</span><span class="br0">&#91;</span>i <span class="sy0">*</span> <span class="nu0">2</span><span class="br0">&#93;</span> = coord.<span class="me1">x</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">data</span><span class="br0">&#91;</span>i <span class="sy0">*</span> <span class="nu0">2</span> + <span class="nu0">1</span><span class="br0">&#93;</span> = coord.<span class="me1">y</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> <span class="kw3">color</span>:uint = <span class="kw3">Math</span>.<span class="kw3">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">*</span> 0xffffff;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.<span class="kw3">beginFill</span><span class="br0">&#40;</span><span class="kw3">color</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.<span class="me1">drawPath</span><span class="br0">&#40;</span>commands, <span class="kw3">data</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.<span class="kw3">endFill</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> star;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2"><span class="br0">&#125;</span></div></li>
</ol></div>
</div></div><br />
<p>ちなみにTweensyの作者のブログで公開されてる<a href="http://www.lostinactionscript.com/blog/index.php/2008/10/06/as3-swf-profiler/">AS3 SWF Profiler</a>のソースと、<a href="http://code.google.com/p/tweensy/">Tweensy</a>に同梱されてるソースとでは関数の引数とか多少違うみたい。今回の解説は、<a href="http://code.google.com/p/tweensy/">Tweensy</a>に同梱されてる方の SWFProfiler ですよ。</p>]]></content:encoded>
			<wfw:commentRss>http://ferv.jp/blog/2009/05/22/display_swfprofilter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
