<?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>いちばんやさしいゲームの作り方 &#187; インスタンス</title>
	<atom:link href="http://www.game-create.com/archives/tag/%e3%82%a4%e3%83%b3%e3%82%b9%e3%82%bf%e3%83%b3%e3%82%b9/feed" rel="self" type="application/rss+xml" />
	<link>http://www.game-create.com</link>
	<description>文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ</description>
	<lastBuildDate>Tue, 08 Jun 2010 01:28:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Flash のモーション XML エレメントを自作してみた</title>
		<link>http://www.game-create.com/archives/1514</link>
		<comments>http://www.game-create.com/archives/1514#comments</comments>
		<pubDate>Wed, 15 Apr 2009 15:30:24 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[オーサリングツール]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[インスタンス]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1514</guid>
		<description><![CDATA[話題のモーション XML エレメントですが、奇跡的に仕事で使うタイミングがあったので自作してみました。
本当はこれを他のプログラムで利用する方法が一番知りたかったのですが、まぁ、それをやるにもフォーマットを知る必要があり [...]]]></description>
			<content:encoded><![CDATA[<p>話題の<a href="http://www.game-create.com/archives/1308">モーション XML エレメント</a>ですが、奇跡的に仕事で使うタイミングがあったので自作してみました。</p>
<p>本当はこれを他のプログラムで利用する方法が一番知りたかったのですが、まぁ、それをやるにもフォーマットを知る必要がありますので、わかったことを残しておきます。</p>
<p><span id="more-1514"></span></p>
<p>まず、モーション XML エレメントというのは、 IDE から使う場合は必要な項目をガッチガチに固めてやらないとまずいっぽいのですが、以下のように ActionScript から使う場合は必要な項目だけ設定してやれば良さそうです（とりあえず動きました）。</p>
<div class="hl-surround" style="height:280px;"><div class="hl-main"><pre><span class="hl-reserved">import </span><span class="hl-identifier">fl</span><span class="hl-default">.</span><span class="hl-identifier">motion</span><span class="hl-default">.</span><span class="hl-identifier">Animator</span><span class="hl-default">;

</span><span class="hl-identifier">var theShape</span><span class="hl-default">:</span><span class="hl-identifier">Shape</span><span class="hl-default"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">Shape</span><span class="hl-brackets">()</span><span class="hl-default">;
</span><span class="hl-identifier">theShape</span><span class="hl-default">.</span><span class="hl-identifier">graphics</span><span class="hl-default">.</span><span class="hl-identifier">beginFill</span><span class="hl-brackets">(</span><span class="hl-number">0x0000FF</span><span class="hl-brackets">)</span><span class="hl-default">;
</span><span class="hl-identifier">theShape</span><span class="hl-default">.</span><span class="hl-identifier">graphics</span><span class="hl-default">.</span><span class="hl-identifier">drawRect</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">100</span><span class="hl-code">, </span><span class="hl-number">100</span><span class="hl-brackets">)</span><span class="hl-default">;
</span><span class="hl-identifier">theShape</span><span class="hl-default">.</span><span class="hl-identifier">graphics</span><span class="hl-default">.</span><span class="hl-identifier">endFill</span><span class="hl-brackets">()</span><span class="hl-default">;

</span><span class="hl-identifier">addChild</span><span class="hl-brackets">(</span><span class="hl-identifier">theShape</span><span class="hl-brackets">)</span><span class="hl-default">;

</span><span class="hl-identifier">var theMotion</span><span class="hl-default">:</span><span class="hl-identifier">XML</span><span class="hl-default"> =
  &lt;</span><span class="hl-identifier">Motion duration</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">10</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">xmlns</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">fl.motion.*</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">xmlns</span><span class="hl-default">:</span><span class="hl-identifier">geom</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">flash.geom.*</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">xmlns</span><span class="hl-default">:</span><span class="hl-identifier">filters</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">flash.filters.*</span><span class="hl-quotes">&quot;</span><span class="hl-default">&gt;
    &lt;</span><span class="hl-identifier">Keyframe index</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">x</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">100</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">y</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">100</span><span class="hl-quotes">&quot;</span><span class="hl-default">&gt;
      &lt;</span><span class="hl-identifier">color</span><span class="hl-default">&gt;
        &lt;</span><span class="hl-identifier">Color alphaMultiplier</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0</span><span class="hl-quotes">&quot;</span><span class="hl-default"> /&gt;
      &lt;/</span><span class="hl-identifier">color</span><span class="hl-default">&gt;
      &lt;</span><span class="hl-identifier">tweens</span><span class="hl-default">&gt;
        &lt;</span><span class="hl-identifier">CustomEase target</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-default">&gt;
          &lt;</span><span class="hl-identifier">geom</span><span class="hl-default">:</span><span class="hl-identifier">Point x</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.1</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">y</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.1</span><span class="hl-quotes">&quot;</span><span class="hl-default"> /&gt;
          &lt;</span><span class="hl-identifier">geom</span><span class="hl-default">:</span><span class="hl-identifier">Point x</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.2</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">y</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.15</span><span class="hl-quotes">&quot;</span><span class="hl-default"> /&gt;
          &lt;</span><span class="hl-identifier">geom</span><span class="hl-default">:</span><span class="hl-identifier">Point x</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.3</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">y</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.2</span><span class="hl-quotes">&quot;</span><span class="hl-default"> /&gt;
          &lt;</span><span class="hl-identifier">geom</span><span class="hl-default">:</span><span class="hl-identifier">Point x</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.4</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">y</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.25</span><span class="hl-quotes">&quot;</span><span class="hl-default"> /&gt;
          &lt;</span><span class="hl-identifier">geom</span><span class="hl-default">:</span><span class="hl-identifier">Point x</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.5</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">y</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.3</span><span class="hl-quotes">&quot;</span><span class="hl-default"> /&gt;
          &lt;</span><span class="hl-identifier">geom</span><span class="hl-default">:</span><span class="hl-identifier">Point x</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.6</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">y</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.35</span><span class="hl-quotes">&quot;</span><span class="hl-default"> /&gt;
          &lt;</span><span class="hl-identifier">geom</span><span class="hl-default">:</span><span class="hl-identifier">Point x</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.7</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">y</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.4</span><span class="hl-quotes">&quot;</span><span class="hl-default"> /&gt;
          &lt;</span><span class="hl-identifier">geom</span><span class="hl-default">:</span><span class="hl-identifier">Point x</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.8</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">y</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.45</span><span class="hl-quotes">&quot;</span><span class="hl-default"> /&gt;
          &lt;</span><span class="hl-identifier">geom</span><span class="hl-default">:</span><span class="hl-identifier">Point x</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.9</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">y</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">0.75</span><span class="hl-quotes">&quot;</span><span class="hl-default"> /&gt;
        &lt;/</span><span class="hl-identifier">CustomEase</span><span class="hl-default">&gt;
        &lt;</span><span class="hl-identifier">SimpleEase target</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">color</span><span class="hl-quotes">&quot;</span><span class="hl-default"> /&gt;
      &lt;/</span><span class="hl-identifier">tweens</span><span class="hl-default">&gt;
    &lt;/</span><span class="hl-identifier">Keyframe</span><span class="hl-default">&gt;
    &lt;</span><span class="hl-identifier">Keyframe index</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">9</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">x</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">400</span><span class="hl-quotes">&quot; </span><span class="hl-identifier">y</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">200</span><span class="hl-quotes">&quot;</span><span class="hl-default">&gt;
      &lt;</span><span class="hl-identifier">color</span><span class="hl-default">&gt;
        &lt;</span><span class="hl-identifier">Color alphaMultiplier</span><span class="hl-default">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">1.0</span><span class="hl-quotes">&quot;</span><span class="hl-default"> /&gt;
      &lt;/</span><span class="hl-identifier">color</span><span class="hl-default">&gt;
    &lt;/</span><span class="hl-identifier">Keyframe</span><span class="hl-default">&gt;
  &lt;/</span><span class="hl-identifier">Motion</span><span class="hl-default">&gt;;

</span><span class="hl-identifier">var theAnimator</span><span class="hl-default">:</span><span class="hl-identifier">Animator</span><span class="hl-default"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">Animator</span><span class="hl-brackets">(</span><span class="hl-identifier">theMotion</span><span class="hl-code">, </span><span class="hl-identifier">theShape</span><span class="hl-brackets">)</span><span class="hl-default">;
</span><span class="hl-identifier">theAnimator</span><span class="hl-default">.</span><span class="hl-identifier">play</span><span class="hl-brackets">()</span><span class="hl-default">;</span></pre></div></div>
<p>初めて見る方は驚かれるかもしれません。なんと ActionScript は XML をソースコード中に組み込むことができるんですね（ PHP などでは文字列として用意してパースしなければなりません）。</p>
<p>以下、ポイントです。</p>
<ul>
<li>この XML で動かしたい表示オブジェクトを最初に構築しておく（上記コード中の theShape オブジェクト）</li>
<li>Motion 要素の duration 属性に総フレーム数を指定する（上記コードは 10 フレームとなる）</li>
<li>キーフレームの数だけ Keyframe 要素を追加する（上記コードは２つのキーフレームがある）</li>
<li>Keyframe 要素の index 属性にフレーム番号を指定する（０から始まる点に注意）</li>
<li>Keyframe 要素に x, y, scaleX, scaleY, skewX, skewY, rotation といった、対象表示オブジェクトの位置や大きさ、回転に関する情報を指定する</li>
<li>トゥイーンを使いたい場合は Keyframe 要素内に tweens 要素を追加する</li>
<li>SimpleEase 要素はキーフレームとキーフレームの中間のアニメーションを中割で自動作成する</li>
<li>CustomEase 要素はキーフレームとキーフレームの中間のアニメーションをどういった割合で作成するか指定する（単純なトゥイーンデータでも感性がついているように動かすこともできる）</li>
</ul>
<p>XML が用意できたら Animator クラスを使ってアニメーションを開始します（最後の２行）。 Animator クラスのインスタンスは参照が０にならないように注意してください。アニメーションが止まってしまいます。</p>
<p>ちなみに、「モーション XML エレメントのデータを動的に変更できないのか？」と疑問に思われるかもしれませんが、 theMotion が XML オブジェクトになっていますので、後からノードの編集は可能です。また、ソースコードに書いた XML 中で以下のようにすると変数を展開することができます。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-comment">&lt;!-- variable が Flash の変数 --&gt;
</span><span class="hl-brackets">&lt;</span><span class="hl-reserved">Element </span><span class="hl-var">attribute</span><span class="hl-code">={</span><span class="hl-var">variable</span><span class="hl-code">} </span><span class="hl-brackets">/&gt;
</span><span class="hl-comment">&lt;!-- ↓ variable の中身が value の場合は以下のように展開される --&gt;
</span><span class="hl-brackets">&lt;</span><span class="hl-reserved">Element </span><span class="hl-var">attribute</span><span class="hl-code">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">value</span><span class="hl-quotes">&quot; </span><span class="hl-brackets">/&gt;</span></pre></div></div>
<p>もう、簡単な動きに IDE は要らなくなるかもしれません。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1514/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>クラスとインスタンスの名前が同じになってしまうとき、何かが間違っているような気がする件</title>
		<link>http://www.game-create.com/archives/1466</link>
		<comments>http://www.game-create.com/archives/1466#comments</comments>
		<pubDate>Tue, 31 Mar 2009 05:59:43 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[インスタンス]]></category>
		<category><![CDATA[クラス]]></category>
		<category><![CDATA[フレームワーク]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1466</guid>
		<description><![CDATA[こういうことがよくあって困ります。
// ん？
Database database = new Database();

どこか問題の本質をとらえていないような気がしてなりません。静的メソッドかシングルトンにすれば良い [...]]]></description>
			<content:encoded><![CDATA[<p>こういうことがよくあって困ります。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-comment">// ん？
</span><span class="hl-identifier">Database database</span><span class="hl-default"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">Database</span><span class="hl-brackets">()</span><span class="hl-default">;</span></pre></div></div>
<p><span id="more-1466"></span></p>
<p>どこか問題の本質をとらえていないような気がしてなりません。静的メソッドかシングルトンにすれば良いのか悪いのか（データベースは一個しか用意しない予定ですし）。</p>
<p>接続を返すようにしてみるとか。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-identifier">DatabaseConnection theDatabaseName</span><span class="hl-default"> = </span><span class="hl-identifier">Database</span><span class="hl-default">::</span><span class="hl-identifier">connect</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">DatabaseName</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-default">;
</span><span class="hl-comment">// 業務用フレームワークだとこういうのが多かったかなぁ…</span></pre></div></div>
<p>とりあえず下の層の話なので気にしないでゲーム作ってます。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1466/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>シンボルとインスタンスの違い</title>
		<link>http://www.game-create.com/archives/409</link>
		<comments>http://www.game-create.com/archives/409#comments</comments>
		<pubDate>Sun, 29 Jun 2008 14:12:49 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[オーサリングツール]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[インスタンス]]></category>
		<category><![CDATA[シンボル]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=409</guid>
		<description><![CDATA[Flash に興味のある方はプログラミングの知識がない人も多いと思いますが、シンボルとインスタンスの違いを知っておくことは大変重要です。

「シンボル」を日本語にすると「象徴」になり、「インスタンス」を日本語にすると「実 [...]]]></description>
			<content:encoded><![CDATA[<p>Flash に興味のある方はプログラミングの知識がない人も多いと思いますが、シンボルとインスタンスの違いを知っておくことは大変重要です。</p>
<p><span id="more-409"></span></p>
<p>「シンボル」を日本語にすると「象徴」になり、「インスタンス」を日本語にすると「実例」になるのですが、なんのこっちゃわからんというのが本音だと思います。私もそうでした。</p>
<p>Flash においてシンボルとはそのアニメーションの一般名となるアニメーションのことです。たとえば、消防車・救急車・バス・トラックの一般名は何だと思いますか？正解は「自動車」です。消防車・救急車・バス・トラックはどれも自動車ですよね？つまりはそういうことです。</p>
<p>…と、ここまでは簡単に理解できると思うのですが、難しいのが「一般名には段階がある」ということです。</p>
<p>たとえば、一般名を自動車とする物体（オブジェクト）に消防車がありますが、この世に存在するすべての消防車が全く同一の物体（オブジェクト）かというとそうではなく、一台一台ごとに性能やナンバープレートなどが異なっているはずです。ある消防車は７階まではしごが届いてナンバープレートが 12-34 かもしれませんし、またある消防車は散水性に優れてナンバープレートが 99-99 かもしれません。このように個々の消防車がインスタンスとなるのです。英語に詳しい人は the がつくものがインスタンスと覚えるのもありかと思います。</p>
<p>重要なのはインスタンスではないものはすべてシンボルであるということです。「シンボルに段階がある」とはこういうことで、たとえば先ほどの消防車の例で言うと次のような関係になっています。</p>
<table class="style-1">
<tr>
<th>分類</th>
<th>物体（オブジェクト）</th>
</tr>
<tr>
<td>シンボル</td>
<td>車</td>
</tr>
<tr>
<td>シンボル</td>
<td>自動車</td>
</tr>
<tr>
<td>シンボル</td>
<td>消防車</td>
</tr>
<tr>
<td>インスタンス</td>
<td>７階まではしごが届いてナンバープレートが 12-34 の消防車</td>
</tr>
<tr>
<td>インスタンス</td>
<td>散水性に優れるナンバープレートが 99-99 の消防車</td>
</tr>
</table>
<p>７階まではしごが届いてナンバープレートが 12-34 の消防車（インスタンス）は消防車（シンボル）であり、消防車（シンボル）は自動車（シンボル）であり、自動車（シンボル）は車（シンボル）であるというわけです。</p>
<p>ちなみに「７階まではしごが届く」や「ナンバープレートが 12-34 」などのように、インスタンスの特徴となる情報を「プロパティ」や「フィールド」と呼ぶことがあります。こちらもあわせて覚えておいてください。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/409/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

