<?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>BoxHeadRoom &#187; ActionScript</title>
	<atom:link href="http://boxheadroom.com/tag/actionscript/feed" rel="self" type="application/rss+xml" />
	<link>http://boxheadroom.com</link>
	<description>蝸牛の一歩</description>
	<lastBuildDate>Tue, 07 Feb 2012 13:41:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Flashの GotoAndPlayは状態遷移命令？</title>
		<link>http://boxheadroom.com/2008/02/05/flash_statemachine</link>
		<comments>http://boxheadroom.com/2008/02/05/flash_statemachine#comments</comments>
		<pubDate>Tue, 05 Feb 2008 09:39:35 +0000</pubDate>
		<dc:creator>boxheadroom</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://boxheadroom.com/2008/02/05/flash%e3%81%ae-gotoandplay%e3%81%af%e7%8a%b6%e6%85%8b%e9%81%b7%e7%a7%bb%e5%91%bd%e4%bb%a4%ef%bc%9f</guid>
		<description><![CDATA[
いまどき、これだけGOTOとついた命令(GotoAndPlay,GotoAndStop)使う言語も珍しい。
けど、実はGOTOのようでGOTOじゃないんです。ちょっと実験してみました。
つづきは一行リンクのあと。
最もタメになる「初心者用言語」まとめ

やっぱ、まずは日本語。。。

avm2(Flash)はwebで配布できるし、AS3以外の言語も出てくると嬉しいなぁ。
&#8593;
Y-Combinatorとは
ラムダのみで、シンボルなどを作らずに再帰を行うことをいう、らしい。
世の中には一生判らないだろうことが沢山あるけれど、そのリストにYコンビネータを追記しておこうと思う。

Py：3項演算子とYコンビネーター
[javascript] Y コンビネータって何？
arguments.callee を使えばいいらしい（を
Schemeで

睡眠薬代わりにzzz
&#8593;
ActionScript最適化　多分その１　ガベージコレクタを攻略する
&#8593;
Flickrからアルバムを生成するPythonコード
&#8593;
Flash フレームアクションのGotoAndPlay,GotoAndStopは「状態遷移」命令？
&#8593;
の前にGotoAndPlay,GotoAndStopの恐怖



Flash IDEには

GotoAndPlay（ジャンプ先フレーム番号 またはラベル)
フレーム番号を実行
GotoAndStop(ジャンプ先フレーム番号 またはラベル）
ジャンプ先の描画のみ行い、フレームアクションは実行されない実行して、そのフレームで停止

という、いまどきめずらしいGoto系命令があります。
(Flexな人は使ったこと無いと思いますが。)
で、いままで、その挙動については深く考えたことが無かったのですが、次のようなコードを書いて試してみました。
普通はこんな感じ
1フレーム目
_gotoAndPlay(5)
5フレーム目
_trace(&#34;5&#34;)
_trace(&#34;currentframe=&#34;+_currentframe)
10フレーム目
_trace(&#34;10&#34;)
_trace(&#34;currentframe=&#34;+_currentframe)
_stop() // ここで停止
出力
&#34;5
currentframe=5
10
currentframe=10

ちょっと変態ちっくなことをしてみます
1フレーム目
_gotoAndPlay(10)
_gotoAndPlay(5)
_trace(&#34;1&#34;)
_trace(&#34;currentframe=&#34;+_currentframe)
_stop()
5フレーム目
_trace(&#34;5&#34;)
_trace(&#34;currentframe=&#34;+_currentframe)
10フレーム目
_trace(&#34;10&#34;)
_trace(&#34;currentframe=&#34;+_currentframe)
stop()が書かれてません
結果
&#34;1
currentframe=5
10
currentframe=5
5
currentframe=5
無限ループにならず、ちゃんと5フレーム目で止まってます。
うわ、気持ち悪い～
で、これで何を言いたいのかといいますとー
&#34;BASICのGOTO文と、ActionScriptのGotoAndPlay,GotoAndStopは別モノ
なので、うっかり、
_if(flag){ GotoAndPlay(&#34;Label&#34;) }
_(以下通常の処理)
みたいな書き方をすると、flagが立ってても、ちゃんとそれ以下の通常の処理もされてしまう、という、多分、書いた人の想定とは違う結果に。
長らく、これに気がつかないではまりました。。。
フレームアクションは「関数」？
最新版flashCS3 だと、各フレームアクションを、frame1(),frame5(),frame10()という名前経由でアクセスできるみたい。
【AS3.0】任意にフレームスクリプトを実行する
&#34;Flashのフレームスクリプトは、&#34;frame&#34; + &#34;フレームナンバー&#34;と言う名前の関数になります。
AS3では関数らしいです。なので、上記のアクションを擬似コードで書くと、
_frameaction[1]=function(){  //
_    gotoAndPlay(10)
_    gotoAndPlay(5)
_    trace(&#34;1&#34;)
_    trace(&#34;currentframe=&#34;+_currentframe)
_    stop()
_}
_
_frameaction[5]=function(){
_    trace(&#34;5&#34;)
_    trace(&#34;currentframe=&#34;+_currentframe)
_}
_
_frameaction[10]=function(){
_    trace(&#34;10&#34;)
_    trace(&#34;currentframe=&#34;+_currentframe)
_}
とすると、gotoAndPlay,gotoAndStopは、ひとつの関数実行後に実行される関数のキュー、と考えればいいみたいです。
&#34;frameaction[1]()
&#34;frameaction[5]()
&#34;frameaction[10)()
という順番で実行されている、ということの模様。
なので、フレームアクションに
1フレーム目
_gotoAndStop(10)
10フレーム目
_gotoAndStop(1)
と書くと、画面のレンダリングが行われず、暴走します。（やってみたらちゃんと？暴走しました）
_function f1(){
_  [...]]]></description>
			<content:encoded><![CDATA[<div id="pukiwiki_content2" class="pukiwiki_content">
<p>いまどき、これだけGOTOとついた命令(GotoAndPlay,GotoAndStop)使う言語も珍しい。<br />
けど、実はGOTOのようでGOTOじゃないんです。ちょっと実験してみました。<br />
つづきは一行リンクのあと。</p>
<h2 id="content_1_0"><a href="http://generation1986.g.hatena.ne.jp/ukstudio/20080204/1202113687" rel="nofollow">最もタメになる「初心者用言語」まとめ</a></h2>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li>やっぱ、まずは日本語。。。</li>
</ul>
<p>avm2(Flash)はwebで配布できるし、AS3以外の言語も出てくると嬉しいなぁ。</p>
<div class="jumpmenu"><a href="#pukiwiki_content2">&uarr;</a></div>
<h2 id="content_1_1">Y-Combinatorとは</h2>
<p>ラムダのみで、シンボルなどを作らずに再帰を行うことをいう、らしい。<br />
世の中には一生判らないだろうことが沢山あるけれど、そのリストにYコンビネータを追記しておこうと思う。</p>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://gyang.girly.jp/impli/archives/2008/01/#py3y.html" rel="nofollow">Py：3項演算子とYコンビネーター</a></li>
<li><a href="http://d.hatena.ne.jp/amachang/20080124/1201199469" rel="nofollow">[javascript] Y コンビネータって何？</a><br />
<strong>arguments.callee</strong> を使えばいいらしい（を</li>
<li><a href="http://www.loveruby.net/ja/misc/ycombinator.html" rel="nofollow">Schemeで</a></li>
</ul>
<p>睡眠薬代わりにzzz</p>
<div class="jumpmenu"><a href="#pukiwiki_content2">&uarr;</a></div>
<h2 id="content_1_2"><a href="http://hak.wablog.com/72.html" rel="nofollow">ActionScript最適化　多分その１　ガベージコレクタを攻略する</a></h2>
<div class="jumpmenu"><a href="#pukiwiki_content2">&uarr;</a></div>
<h2 id="content_1_3"><a href="http://d.hatena.ne.jp/gamella/20080204/1202134479" rel="nofollow">Flickrからアルバムを生成するPythonコード</a></h2>
<div class="jumpmenu"><a href="#pukiwiki_content2">&uarr;</a></div>
<h2 id="content_1_4">Flash フレームアクションのGotoAndPlay,GotoAndStopは「状態遷移」命令？</h2>
<div class="jumpmenu"><a href="#pukiwiki_content2">&uarr;</a></div>
<h2 id="content_1_5">の前にGotoAndPlay,GotoAndStopの恐怖</h2>
</div>
<p><span id="more-1310"></span></p>
<div id="pukiwiki_content3" class="pukiwiki_content">
<p>Flash IDEには</p>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li>GotoAndPlay（ジャンプ先フレーム番号 またはラベル)<br />
フレーム番号を実行</li>
<li>GotoAndStop(ジャンプ先フレーム番号 またはラベル）<br />
ジャンプ先の描画のみ行い、フレームアクション<del>は実行されない</del><strong>実行して、そのフレームで停止</strong></li>
</ul>
<p>という、いまどきめずらしいGoto系命令があります。<br />
(Flexな人は使ったこと無いと思いますが。)<br />
で、いままで、その挙動については深く考えたことが無かったのですが、次のようなコードを書いて試してみました。<br />
普通はこんな感じ</p>
<p>1フレーム目<br />
_gotoAndPlay(5)</p>
<p>5フレーム目<br />
_trace(&quot;5&quot;)<br />
_trace(&quot;currentframe=&quot;+_currentframe)</p>
<p>10フレーム目<br />
_trace(&quot;10&quot;)<br />
_trace(&quot;currentframe=&quot;+_currentframe)<br />
_stop() // ここで停止</p>
<p>出力<br />
&quot;5<br />
currentframe=5<br />
10<br />
currentframe=10</p>
<hr class="full_hr" />
<p>ちょっと変態ちっくなことをしてみます<br />
1フレーム目<br />
_gotoAndPlay(10)<br />
_gotoAndPlay(5)<br />
_trace(&quot;1&quot;)<br />
_trace(&quot;currentframe=&quot;+_currentframe)<br />
_stop()</p>
<p>5フレーム目<br />
_trace(&quot;5&quot;)<br />
_trace(&quot;currentframe=&quot;+_currentframe)</p>
<p>10フレーム目<br />
_trace(&quot;10&quot;)<br />
_trace(&quot;currentframe=&quot;+_currentframe)<br />
stop()が書かれてません</p>
<p>結果<br />
&quot;1<br />
currentframe=5<br />
10<br />
currentframe=5<br />
5<br />
currentframe=5</p>
<p>無限ループにならず、ちゃんと5フレーム目で止まってます。<br />
うわ、気持ち悪い～<br />
で、これで何を言いたいのかといいますとー<br />
&quot;BASICのGOTO文と、ActionScriptのGotoAndPlay,GotoAndStopは別モノ</p>
<p>なので、うっかり、<br />
_if(flag){ GotoAndPlay(&quot;Label&quot;) }<br />
_(以下通常の処理)</p>
<p>みたいな書き方をすると、flagが立ってても、ちゃんとそれ以下の通常の処理もされてしまう、という、多分、書いた人の想定とは違う結果に。<br />
長らく、これに気がつかないではまりました。。。</p>
<h2 id="content_1_0">フレームアクションは「関数」？</h2>
<p>最新版flashCS3 だと、各フレームアクションを、frame1(),frame5(),frame10()という名前経由でアクセスできるみたい。</p>
<p><a href="http://wakuworks.jugem.jp/?page=1&amp;cid=2" rel="nofollow">【AS3.0】任意にフレームスクリプトを実行する</a><br />
&quot;Flashのフレームスクリプトは、&quot;frame&quot; + &quot;フレームナンバー&quot;と言う名前の関数になります。</p>
<p>AS3では関数らしいです。なので、上記のアクションを擬似コードで書くと、</p>
<p>_frameaction[1]=function(){  //<br />
_    gotoAndPlay(10)<br />
_    gotoAndPlay(5)<br />
_    trace(&quot;1&quot;)<br />
_    trace(&quot;currentframe=&quot;+_currentframe)<br />
_    stop()<br />
_}<br />
_<br />
_frameaction[5]=function(){<br />
_    trace(&quot;5&quot;)<br />
_    trace(&quot;currentframe=&quot;+_currentframe)<br />
_}<br />
_<br />
_frameaction[10]=function(){<br />
_    trace(&quot;10&quot;)<br />
_    trace(&quot;currentframe=&quot;+_currentframe)<br />
_}</p>
<p>とすると、gotoAndPlay,gotoAndStopは、ひとつの関数実行後に実行される関数のキュー、と考えればいいみたいです。</p>
<p>&quot;frameaction[1]()<br />
&quot;frameaction[5]()<br />
&quot;frameaction[10)()</p>
<p>という順番で実行されている、ということの模様。</p>
<p>なので、フレームアクションに<br />
1フレーム目<br />
_gotoAndStop(10)</p>
<p>10フレーム目<br />
_gotoAndStop(1)</p>
<p>と書くと、画面のレンダリングが行われず、暴走します。（やってみたらちゃんと？暴走しました）</p>
<p>_function f1(){<br />
_    f10()<br />
_}<br />
_<br />
_function f10(){<br />
_    f1()<br />
_}<br />
を実行したと同じになると考えればあたりまえですが。。。</p>
<div class="jumpmenu"><a href="#pukiwiki_content3">&uarr;</a></div>
<h2 id="content_1_1">さらにはstop()の恐怖</h2>
<p>で、stop()関数もクセもので</p>
<p>_stop()<br />
_trace(&quot;1&quot;)</p>
<p>結果<br />
&quot;1</p>
<p>stop()以降の命令も実行されてしまいます。<br />
_flag=true<br />
_if(flag){stop()}<br />
_tr(&quot;running&quot;)</p>
<p>出力<br />
&quot;running</p>
<p>え゛～～～っていう。</p>
<p>あくまで、フレーム内のアクション全てが終わったら、次のフレームに移動しないで停止、という意味合いの命令みたいです。</p>
<div class="jumpmenu"><a href="#pukiwiki_content3">&uarr;</a></div>
<h2 id="content_1_2">フレームアクションを書くときは、状態遷移図を書くつもりになるとよいのかも</h2>
<p>で、いままでが前フリ。</p>
<p>オブジェクト指向っていうと、クラス図を書くもの、らしいですが、Flashの場合はむしろ各フレームを状態と考えて、状態遷移図を書くつもりで、ステートマシンを作るつもりでプログラムを組むと、比較的きれいになるんじゃないかなー、と思った。</p>
<p>で、gotoAndStop,GotoAndPlayは、状態の切り替え命令として考える。。。</p>
<p>といいんじゃないかと思ったのですが、まだ自分では書けてません（汗　（＜－いまここ</p>
</div>

	Tags: <a href="http://boxheadroom.com/tag/actionscript" title="ActionScript" rel="tag">ActionScript</a>, <a href="http://boxheadroom.com/tag/flash" title="flash" rel="tag">flash</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://boxheadroom.com/2010/08/21/programin_signal_slot" title="「プログラミン」で遊んでみた (8月 21, 2010)">「プログラミン」で遊んでみた</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/01/16/deco_stereo_pair_to_z" title="【iPy】凸凹写真（仮）　ステレオ・ペア写真から奥行きデータ作成編 (1月 16, 2010)">【iPy】凸凹写真（仮）　ステレオ・ペア写真から奥行きデータ作成編</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/01/12/decoboco_tiger" title="【Flash】凸凹写真（仮）　トラ猫編 (1月 12, 2010)">【Flash】凸凹写真（仮）　トラ猫編</a> (0)</li>
	<li><a href="http://boxheadroom.com/2009/05/08/py_swfmill_2" title="PythonでFlash作成 その2 「swfmill simpleモード編」 (5月 8, 2009)">PythonでFlash作成 その2 「swfmill simpleモード編」</a> (0)</li>
	<li><a href="http://boxheadroom.com/2008/02/17/sflender_vrm_pantograph" title="「Sflender」＋「VRM」+「PantoGraph」Blenderでベクトル図形（swf,svg)としてレンダリング (2月 17, 2008)">「Sflender」＋「VRM」+「PantoGraph」Blenderでベクトル図形（swf,svg)としてレンダリング</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://boxheadroom.com/2008/02/05/flash_statemachine/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash ActionScriptでクロージャ</title>
		<link>http://boxheadroom.com/2008/02/04/flash080204</link>
		<comments>http://boxheadroom.com/2008/02/04/flash080204#comments</comments>
		<pubDate>Mon, 04 Feb 2008 11:17:45 +0000</pubDate>
		<dc:creator>boxheadroom</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://boxheadroom.com/2008/02/04/flash080204</guid>
		<description><![CDATA[使ってないと忘れそうなので、ひさしぶりにFlash のリハビリ。(ただしMXしか買って無いのでAS1) ついでに、昔、リファレンス読んでも判らなかったところも克服したい。
以下、チラシの裏。。。


クロージャ
とりあえず、面白そうなほうから。
Python始めてから憶えたクロージャをAS1でも使えるか調べてみる。
_delete x,y
_function f1(x){
_    return function (y){ return x+y }
_    //無名関数＆関数のネスト
_}
_trace(&#34;global x=&#34;+x+&#34; y=&#34;+y)
_f3=f1(3)
_trace(&#34;f3(1)=&#34;+f3(1)+&#34;   f3(100)=&#34;+f3(100))
&#34;global x= y=
f3(1)=4		f3(100)=103
こんなことが出来るとは知りませんでした。
昔読んだ合気道の本に「他の武術も習ったほうがうまくなる」って書かれてましたけれども、そういうこともあるのかも。（おおげさ）
&#8593;
クロージャでジェネレータもどき
オセロの定石文字列を与えると、 呼び出すたびにx,y座標でひとつづつ返す関数を作成。妥当性チェックしてないです
_function gkifu(kifu_str){
_	var kifu_array=kifu_str.split(&#34;&#34;)
_	var x0=&#34;a&#34;.charCodeAt(0)-1
_	var y0=&#34;0&#34;.charCodeAt(0)
_	var idx=0
_	var idxend=length(kifu_array)/2
_	return function(){
_		ret=(idx&#60;idxend) ? [kifu_array[idx].charCodeAt(0)-x0,					_	kifu_array[idx+1].charCodeAt(0)-y0] :undefined
_		idx+=2 //演算できます
_		return ret
_	}
_}
_nezumi=&#34;f5f4e3f6d3&#34; //子年だけにネズミ定石
_g=gkifu(nezumi)
_i&#60;length(nezumi)/2
_for( i=g(); i!=undefined; i=g()) trace(&#34;i=&#34;+i)
&#34;i=6,5　（以下略）
一手目は「f5」　だから、左から6マス目、上から5マス目
盤のふちにパディングがある、という想定なので座標は1からはじまります。ちょっと長いな。
avm2で動くPythonが有ったら便利やのに、と激しく思う私。作ってー adobe様
&#8593;
iter相当
Pythonの組込関数iter相当をクロージャで。
_function iter(a_array){
_   var idx=0
_   var l=a_array.length
_   [...]]]></description>
			<content:encoded><![CDATA[<p>使ってないと忘れそうなので、ひさしぶりにFlash のリハビリ。(ただしMXしか買って無いのでAS1) ついでに、昔、リファレンス読んでも判らなかったところも克服したい。</p>
<p>以下、チラシの裏。。。<br />
<span id="more-1309"></span></p>
<div id="pukiwiki_content5" class="pukiwiki_content">
<h2 id="content_1_0">クロージャ</h2>
<p>とりあえず、面白そうなほうから。<br />
Python始めてから憶えたクロージャをAS1でも使えるか調べてみる。<br />
_delete x,y<br />
_function f1(x){<br />
_    return function (y){ return x+y }<br />
_    //無名関数＆関数のネスト<br />
_}<br />
_trace(&quot;global x=&quot;+x+&quot; y=&quot;+y)<br />
_f3=f1(3)<br />
_trace(&quot;f3(1)=&quot;+f3(1)+&quot;   f3(100)=&quot;+f3(100))</p>
<p>&quot;global x= y=<br />
f3(1)=4		f3(100)=103</p>
<p>こんなことが出来るとは知りませんでした。<br />
昔読んだ合気道の本に「他の武術も習ったほうがうまくなる」って書かれてましたけれども、そういうこともあるのかも。（おおげさ）</p>
<div class="jumpmenu"><a href="#pukiwiki_content5">&uarr;</a></div>
<h2 id="content_1_1">クロージャでジェネレータもどき</h2>
<p>オセロの定石文字列を与えると、 呼び出すたびにx,y座標でひとつづつ返す関数を作成。妥当性チェックしてないです<br />
_function gkifu(kifu_str){<br />
_	var kifu_array=kifu_str.split(&quot;&quot;)<br />
_	var x0=&quot;a&quot;.charCodeAt(0)-1<br />
_	var y0=&quot;0&quot;.charCodeAt(0)<br />
_	var idx=0<br />
_	var idxend=length(kifu_array)/2<br />
_	return function(){<br />
_		ret=(idx&lt;idxend) ? [kifu_array[idx].charCodeAt(0)-x0,					_	kifu_array[idx+1].charCodeAt(0)-y0] :undefined<br />
_		idx+=2 //演算できます<br />
_		return ret<br />
_	}<br />
_}<br />
_nezumi=&quot;f5f4e3f6d3&quot; //子年だけにネズミ定石<br />
_g=gkifu(nezumi)<br />
_i&lt;length(nezumi)/2<br />
_for( i=g(); i!=undefined; i=g()) trace(&quot;i=&quot;+i)</p>
<p>&quot;i=6,5　（以下略）<br />
一手目は「f5」　だから、左から6マス目、上から5マス目</p>
<p>盤のふちにパディングがある、という想定なので座標は1からはじまります。ちょっと長いな。<br />
avm2で動くPythonが有ったら便利やのに、と激しく思う私。作ってー adobe様</p>
<div class="jumpmenu"><a href="#pukiwiki_content5">&uarr;</a></div>
<h2 id="content_1_2">iter相当</h2>
<p>Pythonの組込関数iter相当をクロージャで。<br />
_function iter(a_array){<br />
_   var idx=0<br />
_   var l=a_array.length<br />
_   return function(){<br />
_      return ((idx)&lt;l) ?a_array[idx++] : undefined<br />
_   }<br />
_}</p>
<p>_n=iter([0,1,2,3])<br />
_s=&quot;&quot;<br />
_for(i=n(); i!=undefined; i=n()){<br />
_	s+=&quot; &quot;+i<br />
_}</p>
<p>n()を呼ぶたびに一個づつ返ってくる。終わるとundefinedを返す<br />
（AS1は例外処理無いんで）</p>
<p>&quot; 0 1 2 3</p>
<p>クロージャは全部ローカル変数だから、クラスで組むよりも名前解決が微妙に速いような気がする。</p>
<div class="jumpmenu"><a href="#pukiwiki_content5">&uarr;</a></div>
<h2 id="content_1_3">任意個の引数</h2>
<p>_function x(){<br />
_    trace(&quot;arguments=&quot;+arguments.join(&quot;, &quot;))<br />
_}<br />
_x(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;)</p>
<p>&quot;arguments=a, b, c</p>
<div class="jumpmenu"><a href="#pukiwiki_content5">&uarr;</a></div>
<h2 id="content_1_4">呼び出したい関数を文字列で与える</h2>
<p>_funcname=&quot;Math.sin&quot;<br />
_trace(funcname+&quot; pi/2 =&quot;<br />
_    +eval(funcname).apply(null,[0.5*Math.PI]))</p>
<p>Function.applyの第一引数はthis。<br />
Pythonでクラス外からメソッドを呼ぶときにself渡すようなものだと思っていただければ。 計算結果は</p>
<p>&quot;Math.sin π/2 =1</p>
<hr class="full_hr" />
<p>このへんからつまんなくなります。</p>
<div class="jumpmenu"><a href="#pukiwiki_content5">&uarr;</a></div>
<h2 id="content_1_5">値渡し</h2>
<p>_function f(x,y){ x=y }<br />
_a=1; b=2<br />
_f(a,b)<br />
_trace(&quot;a=&quot;+a)</p>
<p>数値、文字は関数側で操作しても影響を受けない</p>
<p>&quot;a=1</p>
<div class="jumpmenu"><a href="#pukiwiki_content5">&uarr;</a></div>
<h2 id="content_1_6">参照渡し</h2>
<p>_function f(a_array){<br />
_	for (i=0;i&lt;a_array.length;i++){<br />
_		a_array[i]=i<br />
_	}<br />
_}<br />
_x_array=Array(10)<br />
_trace(x_array.join(&quot;,&quot;))<br />
_f(x_array)<br />
_trace(x_array.join(&quot;,&quot;))</p>
<p>Arrayは変更できる</p>
<p>&quot;,,,,,,,,,<br />
0,1,2,3,4,5,6,7,8,9</p>
<div class="jumpmenu"><a href="#pukiwiki_content5">&uarr;</a></div>
<h2 id="content_1_7">変数の大文字小文字</h2>
<p>AS1.0は同一視。　AS3.0以降は区別するはず<br />
AS1.0はダックタイピング。AS2.0以降でダックタイピングやるとコンパイラに怒られる。IDEなら、できなくもないらしい</p>
<div class="jumpmenu"><a href="#pukiwiki_content5">&uarr;</a></div>
<h2 id="content_1_8">ブロック</h2>
<p>トップレベルでは<br />
_delete a<br />
_trace(&quot;a=&quot;+a)<br />
_{ var a=100; trace(&quot;a=&quot;+a)}<br />
_trace(&quot;global a=&quot;+a)</p>
<p>&quot;a=300<br />
global a=300</p>
<p>{}でくくっただけじゃブロックになってない。</p>
<div class="jumpmenu"><a href="#pukiwiki_content5">&uarr;</a></div>
<h2 id="content_1_9">関数の引数、ローカル変数</h2>
<p>_delete a; delete b<br />
_function f1(a){<br />
_    var b=a+1<br />
_    c=&quot;c&quot;<br />
_    trace(&quot;arg a= &quot;+a+ &quot; local b=&quot;+b+ &quot;local c=&quot;+c)<br />
_}<br />
_f1(100)<br />
_trace(&quot;global a=&quot;+a+&quot; global b=&quot;+b+&quot; global c=&quot;+c)</p>
<p>&quot;arg a=100 local b=101<br />
&quot;global a= global b= global c=c</p>
<p>関数ならvar 宣言でローカル変数になる。var宣言しないとグローバル変数</p>
<div class="jumpmenu"><a href="#pukiwiki_content5">&uarr;</a></div>
<h2 id="content_1_10">オブジェクト（ムービークリップ）のプロパティへ配列風にアクセス</h2>
<p>ステージにムービークリップm1_mcを作成して<br />
_trace(m1_mc._x==m1_mc[&quot;_x&quot;])</p>
<p>trueが返ってきます。</p>
<p>_m1_mc[&quot;_x&quot;]=0</p>
<p>こんなふうに値を代入するのとムービークリップの位置が変化<br />
何がうれしいのかといいますとー　<br />
Movieクリップの動きをキューに入れておくときには、このほうが便利かな、と。</p>
<hr class="full_hr" />
<p>キューの作り方は、また今度。</p>
</div>

	Tags: <a href="http://boxheadroom.com/tag/actionscript" title="ActionScript" rel="tag">ActionScript</a>, <a href="http://boxheadroom.com/tag/flash" title="flash" rel="tag">flash</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://boxheadroom.com/2010/08/21/programin_signal_slot" title="「プログラミン」で遊んでみた (8月 21, 2010)">「プログラミン」で遊んでみた</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/01/16/deco_stereo_pair_to_z" title="【iPy】凸凹写真（仮）　ステレオ・ペア写真から奥行きデータ作成編 (1月 16, 2010)">【iPy】凸凹写真（仮）　ステレオ・ペア写真から奥行きデータ作成編</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/01/12/decoboco_tiger" title="【Flash】凸凹写真（仮）　トラ猫編 (1月 12, 2010)">【Flash】凸凹写真（仮）　トラ猫編</a> (0)</li>
	<li><a href="http://boxheadroom.com/2009/05/08/py_swfmill_2" title="PythonでFlash作成 その2 「swfmill simpleモード編」 (5月 8, 2009)">PythonでFlash作成 その2 「swfmill simpleモード編」</a> (0)</li>
	<li><a href="http://boxheadroom.com/2008/02/17/sflender_vrm_pantograph" title="「Sflender」＋「VRM」+「PantoGraph」Blenderでベクトル図形（swf,svg)としてレンダリング (2月 17, 2008)">「Sflender」＋「VRM」+「PantoGraph」Blenderでベクトル図形（swf,svg)としてレンダリング</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://boxheadroom.com/2008/02/04/flash080204/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

