<?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; flash</title>
	<atom:link href="http://boxheadroom.com/category/flash/feed" rel="self" type="application/rss+xml" />
	<link>http://boxheadroom.com</link>
	<description>蝸牛の一歩</description>
	<lastBuildDate>Wed, 28 Jul 2010 16:40:44 +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】凸凹写真（仮）　トラ猫編</title>
		<link>http://boxheadroom.com/2010/01/12/decoboco_tiger</link>
		<comments>http://boxheadroom.com/2010/01/12/decoboco_tiger#comments</comments>
		<pubDate>Mon, 11 Jan 2010 21:48:33 +0000</pubDate>
		<dc:creator>boxheadroom</dc:creator>
				<category><![CDATA[CG]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[Stereo]]></category>

		<guid isPermaLink="false">http://boxheadroom.com/?p=3672</guid>
		<description><![CDATA[
長らくFlashから離れてたのですが、久しぶりに作ってみました。・
で、この十日ほど、このFlashにつける名前で悩んでて、、、、いい名前を思いつかなかったので公開します。
拡大表示



こちらのFlashムービー、今年の干支のトラ。。。じゃなくて　トラ猫がちょっとずつ角度を変えて立体的に表示されてます。
でも、サイズは22KBとコンパクト。その作り方は。。。


タネアカシ
Flashに詳しい人なら　「DisplacementMapFilterを使ってるな」　ってバレちゃうかと思います。

flash.filters.DisplacementMapFilter (Flex2 リファレンスガイド))
Flash 8 入門講座 第45回　Flashムービーの画像やテキストを特殊なレンズで写したように表示させる 

手前に物体が有る部分と、画面奥のほうの壁の部分で、横にズラす量　　を変えてるだけだったりします。
でも、結構　立体的に見えるので、作った本人が一番不思議がってたりしております～
&#8593;
作業手順

猫のモデリングデータは、DAZ Studio＆付属素材を使用。

奥行きを付けて見せるためのデータを作成します。
Collada形式でBlenderへとエクスポート、カメラからの距離を濃淡としてレンダリングしました。

これぐらいだと、うまい人なら手書きしてもよいかもです。

参考 Zバッファ画像_Blender (シムピープルwiki)


PHP+Mingでswfファイルを作成
こちらのサイトのサンプルコードをちょっとだけ改造して使用しました。なので、以下のプログラムのライセンスはLGPLとなります
http://www.gazbming.com/
PHPにさわるのも数年ぶり。今回はコマンドライン版php.exeを使用しました。

XAMPP



&#8593;
実行方法
上記画像データを　tiger_tex.jpg tiger_z.pngというファイル名で保蔵。
コマンドプロンプトにて、以下を実行します。
php.exe dekoboko.php tiger 
Flashムービーtiger.swfが作成される、、、はずです。


&#60;?
/********************************************************************************
* @ File: f8displace.php
* @ Original date: March 2007 @ www16.brinkster.com/gazb/ming/
* @ Version: 1.2
* @ Summary: flash 8 displace - click on the text to update
* @ Updated:  small improvements and summary text
* @ Copyright (c) 2003-2007, www.gazbming.com - all rights [...]]]></description>
			<content:encoded><![CDATA[<div id="pukiwiki_content3" class="pukiwiki_content">
<p>長らくFlashから離れてたのですが、久しぶりに作ってみました。・<br />
で、この十日ほど、このFlashにつける名前で悩んでて、、、、いい名前を思いつかなかったので公開します。</p>
<p><a href="http://boxheadroom.com/wp/wp-content/uploads/2010/01/tiger.swf" rel="nofollow">拡大表示</a></p>
</div>
<p><object width="320" height="240"><param name="movie" value="http://boxheadroom.com/wp/wp-content/uploads/2010/01/tiger.swf"></param>
<embed src="http://boxheadroom.com/wp/wp-content/uploads/2010/01/tiger.swf" type="application/x-shockwave-flash" width="320" height="240" ></embed></object></p>
<p>こちらのFlashムービー、今年の干支のトラ。。。じゃなくて　トラ猫がちょっとずつ角度を変えて立体的に表示されてます。<br />
でも、サイズは22KBとコンパクト。その作り方は。。。<br />
<span id="more-3672"></span></p>
<div id="pukiwiki_content4" class="pukiwiki_content">
<h2 id="content_1_0">タネアカシ</h2>
<p>Flashに詳しい人なら　「DisplacementMapFilterを使ってるな」　ってバレちゃうかと思います。</p>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://www.adobe.com/livedocs/flex/2_jp/langref/flash/filters/DisplacementMapFilter.html" rel="nofollow">flash.filters.DisplacementMapFilter (Flex2 リファレンスガイド))</a></li>
<li><a href="http://itpro.nikkeibp.co.jp/article/COLUMN/20070531/273124/?ST=webdesign&amp;P=2" rel="nofollow">Flash 8 入門講座 第45回　Flashムービーの画像やテキストを特殊なレンズで写したように表示させる </a></li>
</ul>
<p>手前に物体が有る部分と、画面奥のほうの壁の部分で、横にズラす量　　を変えてるだけだったりします。<br />
でも、結構　立体的に見えるので、作った本人が一番不思議がってたりしております～</p>
<div class="jumpmenu"><a href="#pukiwiki_content4">&uarr;</a></div>
<h2 id="content_1_1">作業手順</h2>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li>猫のモデリングデータは、DAZ Studio＆付属素材を使用。<br />
<a href="http://boxheadroom.com/wp/wp-content/uploads/2010/01/tiger_tex.jpg" rel="nofollow"><img src="http://boxheadroom.com/wp/wp-content/uploads/2010/01/tiger_tex.jpg" alt="http://boxheadroom.com/wp/wp-content/uploads/2010/01/tiger_tex.jpg" /></a></li>
<li>奥行きを付けて見せるためのデータを作成します。<br />
Collada形式でBlenderへとエクスポート、カメラからの距離を濃淡としてレンダリングしました。<br />
<a href="http://boxheadroom.com/wp/wp-content/uploads/2010/01/tiger_z.png" rel="nofollow"><img src="http://boxheadroom.com/wp/wp-content/uploads/2010/01/tiger_z.png" alt="http://boxheadroom.com/wp/wp-content/uploads/2010/01/tiger_z.png" /></a><br />
これぐらいだと、うまい人なら手書きしてもよいかもです。</p>
<ul class="list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://wikiwiki.jp/thesims/?Z%A5%D0%A5%C3%A5%D5%A5%A1%B2%E8%C1%FC_Blender" rel="nofollow">参考 Zバッファ画像_Blender (シムピープルwiki)</a></li>
</ul>
</li>
<li>PHP+Mingでswfファイルを作成<br />
こちらのサイトのサンプルコードをちょっとだけ改造して使用しました。なので、以下のプログラムの<strong>ライセンスは<a href="http://ja.wikipedia.org/wiki/GNU_Lesser_General_Public_License" rel="nofollow">LGPL</a></strong>となります<br />
<a href="http://www.gazbming.com/" rel="nofollow">http://www.gazbming.com/</a><br />
PHPにさわるのも数年ぶり。今回はコマンドライン版php.exeを使用しました。</p>
<ul class="list2" style="padding-left:16px;margin-left:16px">
<li><a href="http://portableapps.com/apps/development/xampp" rel="nofollow">XAMPP</a></li>
</ul>
</li>
</ul>
<div class="jumpmenu"><a href="#pukiwiki_content4">&uarr;</a></div>
<h3 id="content_1_2">実行方法</h3>
<p>上記画像データを　tiger_tex.jpg tiger_z.pngというファイル名で保蔵。<br />
コマンドプロンプトにて、以下を実行します。</p>
<pre>php.exe dekoboko.php tiger </pre>
<p>Flashムービーtiger.swfが作成される、、、はずです。</p>
</div>
<pre class="code">
&lt;?
/********************************************************************************
* @ File: f8displace.php
* @ Original date: March 2007 @ www16.brinkster.com/gazb/ming/
* @ Version: 1.2
* @ Summary: flash 8 displace - click on the text to update
* @ Updated:  small improvements and summary text
* @ Copyright (c) 2003-2007, www.gazbming.com - all rights reserved.
* @ Author: gazb.ming [[@]] gmail.com - www.gazbming.com
* @ Released under GNU Lesser General Public License - http://www.gnu.org/licenses/lgpl.html
********************************************************************************/
// @ modified date: March 2010 01 @ http://boxheadroom.com/
// @ File: dekoboko.php
/*******************************************************************************/

print $argv[1];
$swfname= $argv[1];
// some typical movie variables
ming_setScale(20.0000000);
ming_useswfversion(6);
$movie=new SWFMovie();
$movie-&gt;setRate(15);
$movie-&gt;setBackground(rand(0,0xFF),rand(0,0xFF),rand(0,0xFF));

// set bitmap to sprite
$pixshape = new SWFBitmap(fopen($swfname."_tex.jpg", "rb"));
$pixsprite= new SWFSprite();
$p1 = $pixsprite-&gt;add($pixshape);
$pixwidth=$pixshape-&gt;getWidth();
$pixwidth2=$pixwidth/2;
$pixheight=$pixshape-&gt;getHeight();
$pixsprite-&gt;nextFrame();
$pixclip=$movie-&gt;add($pixsprite);
$pixclip-&gt;setName("pix_mc");
$pixclip-&gt;moveTo(0,0);
$movie-&gt;setDimension($pixwidth,$pixheight);

// set mask to sprite
$maskshape = new SWFBitmap(fopen($swfname."_z.png", "rb"));
$masksprite= new SWFSprite();
$m1 = $masksprite-&gt;add($maskshape);
$maskwidth=$maskshape-&gt;getWidth();
$maskheight=$maskshape-&gt;getHeight();
$masksprite-&gt;nextFrame();
$maskclip=$movie-&gt;add($masksprite);
$maskclip-&gt;setName("mask_mc");

// create an actionscript string
$strAction=&lt;&lt;&lt;EOT
mask_mc.onLoad=function(){ this._visible=false;};

// create references to classes
ffdm= flash.filters.DisplacementMapFilter;
fdbd= flash.display.BitmapData;
fgp= flash.geom.Point;
fgm= flash.geom.Matrix;
fgct= flash.geom.ColorTransform;
deg=0;
var filteredMc = createDisplacementMapRectangle();
filteredMc._x=0;
filteredMc._y=0;

filteredMc.onEnterFrame = function() {
deg=deg+3;
if (deg&gt;360 ){ deg=0; }
mask_mc._visible=false;
var filter = this.filters[0];

filter.scaleX =Math.cos(3.14*deg/180.0)*15;

filter.mode = "color";
filter.alpha =0;
filter.color = 0x00FF00;
this.filters = new Array(filter);

};

function createDisplacementMapRectangle() {
var mapBitmap = new fdbd($maskwidth, $maskheight, true, bgColor);
mapBitmap.draw(mask_mc, new fgm(), new fgct(), "normal", mapBitmap.rectangle, true);
var filter = new ffdm(mapBitmap, new fgp(0, 0), 1, 1, 1, 1, "wrap", 0x000000, 0x000000);
pix_mc.filters = new Array(filter);
return pix_mc;
};

EOT;

// write actionscript string to root frame #1
$movie-&gt;add(new SWFAction($strAction));

$movie-&gt;save($outswf="$swfname.swf",9);
// open movie and set version to 8
// (hack until it can be set in ming)
$ftmp=fopen($outswf,"r"); $stmp=fread($ftmp,filesize($outswf));
$ftmp=fopen($outswf,"w"); fwrite($ftmp,substr_replace($stmp,chr(8),3,1));

print "done"
?&gt;
</pre>
<div id="pukiwiki_content5" class="pukiwiki_content">
<h2 id="content_1_0">ネーミング考え中、かも</h2>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li>凸凹写真（仮）　 （読み：デコボコ写真 ）</li>
<li>Deco-Boco<br />
英語表記だと長いですね</li>
<li>　『モヤモヤ写真』　<br />
（略して　『モヤ写』　）<br />
立体のような立体じゃないようなモヤモヤした写真ということで。。。　これはボツ　w</li>
</ul>
<p>もっと　「Twitter」みたく、音節３つぐらいにしたほうがいいのかしらん？（何を狙っている？）</p>
<hr class="full_hr" />
<p>今回は、3DCGから、奥行き情報を作成、付与しました。<br />
次回は、<strong>実写の写真から自動で奥行き情報を作成する方法</strong>について書く予定です。</p>
</div>

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

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<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/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>
	<li><a href="http://boxheadroom.com/2008/02/05/flash_statemachine" title="Flashの GotoAndPlayは状態遷移命令？ (2月 5, 2008)">Flashの GotoAndPlayは状態遷移命令？</a> (0)</li>
	<li><a href="http://boxheadroom.com/2008/02/04/flash080204" title="Flash ActionScriptでクロージャ (2月 4, 2008)">Flash ActionScriptでクロージャ</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://boxheadroom.com/2010/01/12/decoboco_tiger/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PythonでFlash作成 その2 「swfmill simpleモード編」</title>
		<link>http://boxheadroom.com/2009/05/08/py_swfmill_2</link>
		<comments>http://boxheadroom.com/2009/05/08/py_swfmill_2#comments</comments>
		<pubDate>Fri, 08 May 2009 02:42:23 +0000</pubDate>
		<dc:creator>boxheadroom</dc:creator>
				<category><![CDATA[PC]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://boxheadroom.com/?p=2867</guid>
		<description><![CDATA[
みなさまGWはいかがでしたでしょうか？
私はこんなことをして遊んでました（汗

こちらの記事のつづきです



世の中にはLLからFlash(swf)を作成するための方法はいろいろあるのですけれども、今回は

xmlを解釈してswfに変換してくれるswfmillというツールを使用。　
xmlを作成するためのユーティリティ関数をPythonで作成

と、ワンクッションおくことで、あたかもPythonでFlashを作成しているかのような作業環境を目指します。
　つまりメインとしてはPythonでXMLを作成するという話なのですけれども。
で、いきなり出来上がりのコード。
swfmillのsimpleモード用のラッパーです。
(swfmill.exeと同じフォルダで動かしてます)


import subprocess
import  xml.etree.ElementTree as etree
import types
class Tag(object):
    def __init__(self):
        self.builder=etree.TreeBuilder()
    def create(_self,tag,contents=[],attrs={}):

        class C(object):
            def __init__(self,contents=contents,attrs=attrs):
        [...]]]></description>
			<content:encoded><![CDATA[<div id="pukiwiki_content9" class="pukiwiki_content">
<p>みなさまGWはいかがでしたでしょうか？<br />
私はこんなことをして遊んでました（汗</p>
<hr class="full_hr" />
<p><a href="http://boxheadroom.com/2009/04/22/py_swfmill" rel="nofollow">こちらの記事のつづきです</a></p>
</div>
<p><span id="more-2867"></span></p>
<div id="pukiwiki_content10" class="pukiwiki_content">
<p>世の中にはLLからFlash(swf)を作成するための方法はいろいろあるのですけれども、今回は</p>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li>xmlを解釈してswfに変換してくれる<a href="http://swfmill.org/" rel="nofollow">swfmill</a>というツールを使用。　</li>
<li>xmlを作成するためのユーティリティ関数をPythonで作成</li>
</ul>
<p>と、ワンクッションおくことで、あたかもPythonでFlashを作成しているかのような作業環境を目指します。<br />
　つまりメインとしては<strong>PythonでXMLを作成する</strong>という話なのですけれども。</p>
<p>で、いきなり出来上がりのコード。<br />
swfmillのsimpleモード用のラッパーです。<br />
(swfmill.exeと同じフォルダで動かしてます)</p>
</div>
<pre class="code">
import subprocess
import  xml.etree.ElementTree as etree
import types
class Tag(object):
    def __init__(self):
        self.builder=etree.TreeBuilder()
    def create(_self,tag,contents=[],attrs={}):

        class C(object):
            def __init__(self,contents=contents,attrs=attrs):
                self.attrs=attrs
                self.contents=contents
            def force(self):
                a={}
                for k in self.attrs:
                    t=type(self.attrs[k])
                    if  t in [ types.StringType,types.UnicodeType]:
                        a[k]=self.attrs[k]
                    else :
                        a[k]=str(self.attrs[k])

                _self.builder.start(tag,attrs=a)
                for i in self.contents:
                    i.force()
                _self.builder.end(tag)

        C.__name__=tag

        return C

    def tostring(self):
        doctype="""&lt;?xml version="1.0" encoding="utf-8" ?&gt;&#x5c;n"""
        ret=self.builder.close()
        return doctype+etree.tostring(ret)

def reset():
    global movie,background,clip,font,textfield,place,meta,frame,library
    tag=Tag()
    movie=tag.create("movie",attrs=dict(version="6",width=320 ,height=240,framerate=12))
    background=tag.create("background",attrs=dict( color="#ffffff"))
    clip=tag.create("clip",attrs={ "id":"foo","import":"library/foo.jpg",
                                   "class":"org.osflash.Foo"})
    font=tag.create("font",attrs={ "id":"vera",
                            "import":"library/vera.ttf","glyphs":"0123456789"})
    textfield=tag.create("textfield",attrs=dict( id="hellobox",
                width="200",height="50",size="10",font="vera",text="hello world!"))
    place=tag.create("place",attrs=dict(id="hellobox",name="output",depth="10"))
    meta=tag.create("meta",attrs=dict(title="my title",description="To be indexed"))
    frame,library=[tag.create(t) for t in "frame library".split()]

if __name__=="__main__":
    root=movie(attrs=dict(framerate="10",height="200",width="400" ),
        contents=[

            background(attrs=dict(color="#ffffff")),
            library([
                clip(attrs={"import":"foo.jpg","id":"foo"}),
                textfield(attrs=dict( id="hello",text="hello world!",
                    width="200",height="50",size="10"))
            ]),
            frame(contents=[
                    place(attrs=dict(depth=10,id="foo")),
                    place(attrs=dict(depth=11,id="hello"))

            ]),

        ])
    root.force()
    txt=tag.tostring()
    #print txt
    fname="helloworld"
    if True :
        proc = subprocess.Popen(
                                #'swfmill.exe -v swf2xml niku.swf niku.xml',
                                'swfmill.exe -v simple stdin %s.swf'%fname,
                               shell=True,
                               stdin=subprocess.PIPE,
                               stdout=subprocess.PIPE,
                               )
        stdout_value = proc.communicate(txt)[0]
        stdout_value
        print stdout_value
        proc = subprocess.Popen(
                                #'swfmill.exe -v swf2xml niku.swf niku.xml',
                                'swfmill.exe -v swf2xml %s %s'%(fname,fname),
                               shell=True,
                               stdin=subprocess.PIPE,
                               stdout=subprocess.PIPE,
                               )
        stdout_value = proc.communicate()[0]
        print stdout_value
</pre>
<p>以前の記事では遅延評価をデコレータとジェネレータを使って書きましたが、今回は素直にクラスを使いました。</p>
<p>実際にswfファイルの中身（を指定するためのXML）を記述しているのは以下の部分。</p>
<pre class="code">
root=movie(attrs=dict(framerate="10",height="200",width="400" ),
        contents=[

            background(attrs=dict(color="#ffffff")),
            library([
                clip(attrs={"import":"foo.jpg","id":"foo"}),
                textfield(attrs=dict( id="hello",text="hello world!",
                    width="200",height="50",size="10"))
            ]),
            frame(contents=[
                    place(attrs=dict(depth=10,id="foo")),
                    place(attrs=dict(depth=11,id="hello"))

            ]),

        ])
root.force()
txt=tag.tostring() #XMLが返って来る
</pre>
<p>内部的に作成されるXMLはこちら。<br />
（適宜改行、インデントは手作業で加えました）</p>
<pre class="code">
&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;movie framerate="10" height="200" width="400"&gt;
    &lt;background color="#ffffff" /&gt;
    &lt;library&gt;
        &lt;clip id="foo" import="foo.jpg" /&gt;
        &lt;textfield height="50" id="hello" size="10" text="hello world!" width="200" /&gt;
    &lt;/library&gt;
    &lt;frame&gt;
        &lt;place depth="10" id="foo" /&gt;
        &lt;place depth="11" id="hello" /&gt;
    &lt;/frame&gt;
&lt;/movie&gt;
</pre>
<div id="pukiwiki_content11" class="pukiwiki_content">
<p>こんな短いXMLを作るために、なんでこんな面倒なことを、、、と思われるかもしれませんが（自分でも思いますが）、IDLE使って書くと、普通にXMLを書き下すよりも楽でした。<br />
ただし<strong>simpleモード</strong>だけだと、あまり使い道が無いので、細かいことをしたければ<strong>xml2swfモード</strong>用のラッパーを書かないといけないかも。<br />
ActionScriptなどをいじろうと思うと、MTASCなどの助けも必要になりますし。<br />
というわけで、　それらはまたいずれ。。。</p>
<h2 id="content_1_0">関数のキーワード引数に予約語を使うとシンタックスエラーになる</h2>
<p>というのを、今回はじめて気が付きました。</p>
<pre>dict(import=&quot;spam.jpg&quot;)</pre>
<p>などとするとエラーになります。</p>
<pre>{&quot;import&quot;:&quot;spam.jpg&quot;}</pre>
<p>と書くことで回避できますけれども。</p>
<div class="jumpmenu"><a href="#pukiwiki_content11">&uarr;</a></div>
<h2 id="content_1_1">関連記事</h2>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://boxheadroom.com/2009/04/22/py_swfmill" rel="nofollow">PythonからswfmillでFlashムービー(swfファイル)を作成してみる</a></li>
<li><a href="http://boxheadroom.com/2009/04/25/py_eval_exec_closure" rel="nofollow">exec,eval とクロージャではまる＆遅延評価</a></li>
</ul>
<hr class="full_hr" />
<p>ToDo: ActionScript 、xml2swfモード</p>
</div>

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

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://boxheadroom.com/2010/06/16/pov_misaki_font" title="【Py】8ドット美咲フォントをJapanino POV用にコンバート (6月 16, 2010)">【Py】8ドット美咲フォントをJapanino POV用にコンバート</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/05/12/psolve_sin" title="三角関数を多項式で近似してみる (5月 12, 2010)">三角関数を多項式で近似してみる</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/05/09/psolve" title="【Py】（射影を使って）　連立一次方程式の近似解を求める (5月 9, 2010)">【Py】（射影を使って）　連立一次方程式の近似解を求める</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/04/01/bge_japanese" title="BGEで日本語表示（仮） (4月 1, 2010)">BGEで日本語表示（仮）</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/03/18/bge2010" title="Blender 2010 ゲームコンテストの優勝は“Lucy and The Time Machine” (3月 18, 2010)">Blender 2010 ゲームコンテストの優勝は“Lucy and The Time Machine”</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://boxheadroom.com/2009/05/08/py_swfmill_2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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_content14" 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_content14">&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_content14">&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_content14">&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_content14">&uarr;</a></div>
<h2 id="content_1_4">Flash フレームアクションのGotoAndPlay,GotoAndStopは「状態遷移」命令？</h2>
<div class="jumpmenu"><a href="#pukiwiki_content14">&uarr;</a></div>
<h2 id="content_1_5">の前にGotoAndPlay,GotoAndStopの恐怖</h2>
</div>
<p><span id="more-1310"></span></p>
<div id="pukiwiki_content15" 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_content15">&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_content15">&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/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>
	<li><a href="http://boxheadroom.com/2008/02/04/flash080204" title="Flash ActionScriptでクロージャ (2月 4, 2008)">Flash ActionScriptでクロージャ</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_content17" 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_content17">&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_content17">&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_content17">&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_content17">&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_content17">&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_content17">&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_content17">&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_content17">&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_content17">&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_content17">&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/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>
	<li><a href="http://boxheadroom.com/2008/02/05/flash_statemachine" title="Flashの GotoAndPlayは状態遷移命令？ (2月 5, 2008)">Flashの GotoAndPlayは状態遷移命令？</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://boxheadroom.com/2008/02/04/flash080204/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【Flash】Faviconエディタ【アイコン】</title>
		<link>http://boxheadroom.com/2007/07/07/favicon</link>
		<comments>http://boxheadroom.com/2007/07/07/favicon#comments</comments>
		<pubDate>Sat, 07 Jul 2007 02:43:52 +0000</pubDate>
		<dc:creator>tamac</dc:creator>
				<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://tamac.daa.jp/wp/2007/07/07/favicon</guid>
		<description><![CDATA[FlashでFaviconエディタを作ってみました。
Faviconエディタはコチラ
Web上でFaviconなどのアイコン(icoファイル)を作成できます
　

動作確認はFirefoxのみ行っております。
 IEでは動きません
データURLスキーマ (RFC 2397)を使用して、icoファイルをhtml側に書き出しています。
(IEはRFC2397に対応してないので、動作しません）
その代わり、ローカルのみで動作可能なので、ネットにつながってなくても使えます。
実は、つい最近になって、FirefoxのブックマークをエクスポートしててデータURLを知ったので、Flashからのファイル出力に使えるかどうかの実証実験用に作成しました。
ソースはこちら (flaファイル)
flashから画像ファイルなどの出力をするには、AIR (旧Apollo)使うとか、GoogleGearのようなアプリケーションや、なんらかのサーバを使用しなきゃいけないと思い込んでたので、このバッドノウハウに気が付いた時はショックでした。
IEもRFC 2397に対応してくれたらええのに。
Flashのテストがてら作成したアイコンのサンプル。
　　　　
　
　　　
サイトのルートにfavicon.icoのファイルネームで置けば、ブックマークしてもらったときにアイコンがつきます。
また、windows用のアイコンとしても使用可能です。（16&#215;16だけなのできたないですが）
実はFaviconなんて～　とバカにしてたのですけれども、　ドットを打ってアイコン描くのって、プチプチをつぶすのに似た中毒性の快感がありますね～　プチプチ
　　　　　　　　　　　　 
No tag for this post.
	Related posts
	
	No related posts.
	

]]></description>
			<content:encoded><![CDATA[<p>FlashでFaviconエディタを作ってみました。</p>
<p><strong><a href="http://boxheadroom.com/diary/2007_07_07_845.html" target="_blank">Faviconエディタはコチラ</a></strong></p>
<p>Web上でFaviconなどのアイコン(icoファイル)を作成できます<br />
　<br />
<span id="more-1240"></span><br />
動作確認はFirefoxのみ行っております。<br />
 <span style="strong_red">IEでは動きません</span></p>
<p>データURLスキーマ (RFC 2397)を使用して、icoファイルをhtml側に書き出しています。<br />
(IEはRFC2397に対応してないので、動作しません）</p>
<p>その代わり、ローカルのみで動作可能なので、<span style="strong_red">ネットにつながってなくても使えます。</span></p>
<p>実は、つい最近になって、FirefoxのブックマークをエクスポートしててデータURLを知ったので、Flashからのファイル出力に使えるかどうかの実証実験用に作成しました。</p>
<p><a href="http://boxheadroom.com/diary/faviconsrc.zip">ソースはこちら (flaファイル)</a><br />
flashから画像ファイルなどの出力をするには、AIR (旧Apollo)使うとか、GoogleGearのようなアプリケーションや、なんらかのサーバを使用しなきゃいけないと思い込んでたので、このバッドノウハウに気が付いた時はショックでした。<br />
IEもRFC 2397に対応してくれたらええのに。</p>
<p>Flashのテストがてら作成したアイコンのサンプル。</p>
<p>　<img src="2.ico"/>　<img src="3.ico"/>　<img src="4.ico"/>　<br />
　<br />
　<img src="0.ico"/>　<img src="1.ico"/>　<img src="orz.ico"/></p>
<p>サイトのルートにfavicon.icoのファイルネームで置けば、ブックマークしてもらったときにアイコンがつきます。<br />
また、windows用のアイコンとしても使用可能です。（16&#215;16だけなのできたないですが）</p>
<p>実はFaviconなんて～　とバカにしてたのですけれども、　ドットを打ってアイコン描くのって、プチプチをつぶすのに似た中毒性の快感がありますね～　プチプチ</p>
<p><img src="puti.ico"/>　<img src="puti.ico"/>　<img src="puti.ico"/>　<img src="puti.ico"/>　<img src="puti.ico"/>　<img src="puti.ico"/>　<img src="puti.ico"/>　<img src="puti.ico"/>　<img src="puti.ico"/>　<img src="puti.ico"/>　<img src="puti.ico"/>　<img src="puti.ico"/>　 <!-- favicon --></p>
No tag for this post.
	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li>No related posts.</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://boxheadroom.com/2007/07/07/favicon/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
