<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Flash is &quot;HAIL&quot; -2nd Planet-</title>
    <link rel="alternate" type="text/html" href="http://www.2nd-pla.net/flash-is-hail/" />
    <link rel="self" type="application/atom+xml" href="http://www.2nd-pla.net/flash-is-hail/atom.xml" />
    <id>tag:www.2nd-pla.net,2008-03-20:/flash-is-hail//2</id>
    <updated>2008-08-07T14:41:45Z</updated>
    <subtitle>Humorous * Artistic * Interactive * LogicalなFlashを作れるようになることが目標です。</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.1</generator>

<entry>
    <title>活動休止</title>
    <link rel="alternate" type="text/html" href="http://www.2nd-pla.net/flash-is-hail/2008/08/post.html" />
    <id>tag:www.2nd-pla.net,2008:/flash-is-hail//2.76</id>

    <published>2008-08-07T14:34:40Z</published>
    <updated>2008-08-07T14:41:45Z</updated>

    <summary>メンバーの方向性の違いから活動を休止したいと思います（笑）&quot;.*&quot; [Dot A...</summary>
    <author>
        <name>dIke</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.2nd-pla.net/flash-is-hail/">
        <![CDATA[メンバーの方向性の違いから活動を休止したいと思います（笑）<br /><br /><a href="http://www.2nd-pla.net/dot-asterisk/">".*" [Dot Asterisk]</a>の方で書いたとおりディレクタになっちゃったので。<br />たぶんしばらくしたらやりたくなるかなぁ？<br />でも今はディレクションが楽しいのでそっちに集中。<br /><br />しっかし 「.*」 といい、「HAIL」 といい、<br />俺、ネーミングセンスありすぎ（笑）<br /><br />dot-asteriskとかドメイン取っちゃいたいくらいだゎ。<br />ま、2nd-pla.netもなかなかおしゃれだし我慢しとくか（笑）<br />]]>
        
    </content>
</entry>

<entry>
    <title><![CDATA[XMLのnodeValueに&lt;br/&gt;が含まれているときの注意点]]></title>
    <link rel="alternate" type="text/html" href="http://www.2nd-pla.net/flash-is-hail/2008/04/xmlnodevalue.html" />
    <id>tag:www.2nd-pla.net,2008:/flash-is-hail//2.45</id>

    <published>2008-04-14T16:02:38Z</published>
    <updated>2008-04-14T16:41:24Z</updated>

    <summary>最近ではコンテンツ中の文字情報などを外部のXMLで持たせるということは一般的にな...</summary>
    <author>
        <name>dIke</name>
        
    </author>
    
        <category term="XML" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.2nd-pla.net/flash-is-hail/">
        <![CDATA[最近ではコンテンツ中の文字情報などを外部のXMLで持たせるということは一般的になってきていますが、今日はそのXMLのパースではまったのでしょぼいながらもまとめておきます。<br /><br />事象としては、nodeValueにhtmlTextで使用する改行を意味する&lt;br/&gt;が入るとこの改行マークの前後でテキストデータがスプリット（分割）されてしまうという状況です。<br /> ]]>
        <![CDATA[例えばXMLファイルが下記のような状態だったとします。<br />
<br />
<b>【data.xml】</b><br />
&lt;data&gt;<br />
&lt;text&gt;改行の前&lt;br/&gt;改行の後&lt;/text&gt;<br />
&lt;/data&gt;<br />
<br />
これをFlashでパースしようとすると次のような形になると思います。<br />
<br />
<b>【コード】</b><br />
var objXML:XML = new XML();<br />
this.objXML.ignoreWhite = true;<br />
this.objXML.onLoad = function(success:Boolean) {<br />
&nbsp;&nbsp;&nbsp; if (success) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; parseXML();<br />
&nbsp;&nbsp;&nbsp; }<br />
};<br />
function parseXML():Void {<br />
&nbsp;&nbsp; <i>パース処理</i><br />
}<br />
this.objXML.load("data.xml");<br />
<br />
<br />
さて、そのパース処理ですが下記のようになっている場合、本来は取得したい「改行の前&lt;br/&gt;改行の後」が取得されず「改行の前」だけが取得されます。<br /><br />trace('×：' +objXML.firstChild.firstChild.firstChild.nodeValue);<br />trace('×：' +objXML.firstChild.firstChild.firstChild);<br /><br />よくよく考えるとわかるのですが、&lt;br/&gt;だから全部ひっくるめてひとつのノードのように感じるのですが、&lt;br /&gt;もれっきとしたノードであり、その前後でノードが分かれるのは当たり前のことなんですね。<br />ということで、この一見するとひとつのノードに見えるテキスト部分はchildNodesで参照すると次のように参照することが出来ます。<br /><br />childNodes[0]...「改行の前」<br />childNodes[1]...「&lt;br/&gt;」<br />childNodes[2]...「改行の後」<br /><br />ということでこれらを全部合体させたものが求めている値となるわけですね。<br /><br />var nText:String='';<br />for(i:Number=0;i&lt;objXML.firstChild.firstChild.childNodes.length;i++)<br />&nbsp;&nbsp;&nbsp; nText += objXML.firstChild.firstChild.childNodes[i];<br />&nbsp;&nbsp;&nbsp; trace('○：' +nText);<br /><br />非常に簡単なものなのでサンプルコードが必要かどうかわかりませんが必要であればダウンロードしてみてください。<br /><a href="http://www.2nd-pla.net/sample/flash/sample080414.zip">改行&lt;br/&gt;を含むXMLノードのパースサンプルコード[ZIP:6KB Flash8]</a><br /><br /><br />いつになったらこの辺の基礎をマスターできて先へ進めることやら（笑）<br />]]>
    </content>
</entry>

<entry>
    <title>Flash Media Serverについてのお勉強　～第1回～</title>
    <link rel="alternate" type="text/html" href="http://www.2nd-pla.net/flash-is-hail/2008/04/flash-media-server.html" />
    <id>tag:www.2nd-pla.net,2008:/flash-is-hail//2.34</id>

    <published>2008-04-07T14:19:46Z</published>
    <updated>2008-04-07T16:09:28Z</updated>

    <summary>昨日の話の流れですが、今日はちょうど（？）会社のPCへのCS3のインストールがひ...</summary>
    <author>
        <name>dIke</name>
        
    </author>
    
        <category term="FlashMediaServer" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.2nd-pla.net/flash-is-hail/">
        <![CDATA[昨日の話の流れですが、今日はちょうど（？）会社のPCへのCS3のインストールがひたすらうまくいかなかった関係で仕事がほぼ丸一日できず、インストール中にFlash Media Serverの技術資料を読むことができました（笑）<br /><br />予め断っておきますが、<br /><ul><li>サーバの知識は初級の上</li><li>FMSの経験はなし</li><li>プログラミングはPerlの基本くらい</li><li>ネットワークの知識はインターネットの基本くらい</li><li>ASの知識はリファレンス見ながらなんとか。。。<br /></li></ul>ってくらいこの辺の話しについては初心者です（笑）<br /><br />▼リソース<br /><a href="http://help.adobe.com/ja_JP/flashmediaserver/3.0/flashmediaserver_tech_overview.pdf">http://help.adobe.com/ja_JP/flashmediaserver/3.0/flashmediaserver_tech_overview.pdf</a><br /><a href="http://help.adobe.com/ja_JP/flashmediaserver/3.0/flashmediaserver_dev_guide.pdf">http://help.adobe.com/ja_JP/flashmediaserver/3.0/flashmediaserver_dev_guide.pdf</a><br />]]>
        <![CDATA[まずは概要の方から簡単にまとめます。ちなみに私、動画のストリーミングよりもソーシャルメディアアプリケーション寄りのものを作りたくて調べたので、ストリーミングを中心に知りたい方はPDFを素直にお読みになった方がよろしいかと思います。<br /><br />【基礎】<br /><ul><li>FMSには<b>Flash Media Streamiing Server</b>と<b>Flash Media Interactive Server</b>と<b>Flash Media Development Server</b>の3つがある</li><li>Flash Media Interactive ServerはFlash Media Streaming Serverのアップグレードで、Flash Media Development ServerはFlash Media Interactive Serverの機能と同じながら<b>同時接続数が10に制限</b>されたバージョン<br />⇒Development Serverを親にして10機のInteractive Serverにパブリッシュして負荷分散するなどが考えられる...、といったことが書いているような気がする（笑）<br />⇒<b>Flash Media Streaming Serverは単純なビデオのストリームのみ</b>と考えた方がよいです</li><li>FMSとのやり取りは<b>RTMP</b>：Rial-Time Messaging Protocol（デフォルトポート：<b>1935</b>）により行われる</li><li>RTMPには、SSLを介した<b>RTMPS</b>（デフォルトポート：<b>443</b>）、SSLよりも高速な<b>RTMPE</b>（デフォルトポート：<b>1935</b>）などセキュアな通信もある<br />⇒ストリーミングでセキュアな通信って必要か？オンライン会議とかか？RTMPEで言えば<b>RTMPよりも15%ほどの高負荷</b>らしい。</li></ul>【メディアのストリーミング】<br /><ul><li>H.264とHE-AACをサポート（要FlashPlayer9UPDATE3またはAIRクライアント）</li><li><b>FMS自体は</b>エンコードやデコードを行わず、すでに<b>エンコードされているメディアをストリームするだけ</b></li><li><b>ライブ中継</b>などの動画、音声については<b>Flash Media Encoder2によりエンコード</b>する<br />⇒エンコードはクライアントのFlashPlayerのバージョンに合わせてコーデックを選別できるのかな？</li></ul>【スクリプティング】<br /><ul><li>クライアント間で共有するデータは<b>共有オブジェクト：SharedObject</b>により行う<br />⇒SharedObjectはリモートとクライアントのローカルでそれぞれ定義することが可能で、<b>クライアント間での共有はリモート共有オブジェクト</b>で行う<br />⇒<b>ローカル共有オブジェクトって普通のFlashで使用しても便利じゃね？？</b></li><li>FMS⇔クライアント間の<b>接続はNetConnection</b>により行う</li><li>クライアントサイドスクリプトでは<b>NetConnection.call()メソッドでサーバサイドのClientオブジェクトで定義されているメソッドを</b>呼び出し、サーバサイドスクリプトでは<b>Client.call()メソッドを呼び出してクライアントサイドのNetConnectionオブジェクトで定義されているメソッドを</b>呼び出すことができる</li><li>サーバサイドスクリプトで管理される<b>Clientオブジェクトはクライアントからの接続が発生するたびにインスタンスが生成</b>される</li></ul>【セキュリティとか】<br /><ul><li><b>エッジサーバをデプロイメントすることでオリジンサーバへの負荷を軽減</b>できる<br />⇒デプロイメントってのは設置するとか確立するとかそんな意味合いでOK？（笑）<br />⇒サーバサイドスクリプト自体はオリジンサーバで実行されるらしいけど、イコールClientの管理もオリジンサーバで行われるってことでOKですかね？<br />⇒エッジサーバのキャッシュのメモリ容量はサーバ管理者で設定できる</li><li>FMSはプログレッシブダウンロードに代表されるようなクライアントのハードに保存される配信ではなく、<b>真のストリーミング</b>と言える<br />⇒ちょっと笑える表現だな<br /></li><li>著作権管理の面でよりセキュア</li><li><b>Clientオブジェクトのreferrerプロパティを使用してSWFのリファラーをチェック</b>することができる</li><li>サーバに対して検証される一意の鍵を生成するかアプリケーションサーバとの間で暗号化されたトークンの要求と受信を行える<br />⇒意味不明（笑）RTMPSのことかな？</li><li>クライアントサイドスクリプトからNetConnection.connect()メソッドでユーザ名やパスワードを渡すことでDBやLDAPサーバまたはその他のアクセス許可サービスなどの外部リソースに基づいて視覚情報を検証することができる<br />⇒やばい、連続で意味不明（笑）</li></ul><br />セキュリティ面の話しにあまりついていけなかったですが、ひとまず概要はこんなところです。<br />本当は開発者ガイドの方もまとめたかったのですが、ドキュメント量が2倍ということを考えると3時を迎えそうなので今日はここまでってことで。<br /><br />今回は前回のブログでも紹介したひとつのSWF内にいる他ユーザの情報を表示させることをどうやったら表現できるかってのが元で勉強しているのですが、今日出てきたところで言えば、<b>共有オブジェクトがその解決策</b>になりそうなのは周知の通り。ただし、2000人くらいが同時にアクセスした場合、ひとつのリモート共有オブジェクトでその管理がまかなえるんでしょうか？？？もしかしてその辺がXMLSocketを使ったほうがよいという結論になる所為だったりするのでしょうか？<br />たとえばバルビレッジみたいにエリアがはっきりと分かれているMapであれば各エリアに対して共有オブジェクトを作成しておけば効率的に管理できそうだけど、Red Interactive Agencyみたいなインターフェースではひとつの共有オブジェクトでユーザの位置を管理する必要があるんだろうか？？？<br /><br />共有オブジェクトは便利だけど、その設計ってよく考えて行う必要がありそうだな。<br /><br />はやくDevelopment Serverをインストールして遊びたいなぁ。<br />]]>
    </content>
</entry>

<entry>
    <title>XMLSocketとかNetConnectionとか</title>
    <link rel="alternate" type="text/html" href="http://www.2nd-pla.net/flash-is-hail/2008/04/xmlsocketnetconnection.html" />
    <id>tag:www.2nd-pla.net,2008:/flash-is-hail//2.32</id>

    <published>2008-04-06T12:54:37Z</published>
    <updated>2008-04-06T15:08:21Z</updated>

    <summary>例えば、▼Interactive Interior | BEYES(バイズ) E...</summary>
    <author>
        <name>dIke</name>
        
    </author>
    
        <category term="XMLSocket" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.2nd-pla.net/flash-is-hail/">
        <![CDATA[例えば、<br /><br />▼Interactive Interior | BEYES(バイズ) EDIT STORE<br /><a href="http://www.beyes.jp/editwall/">http://www.beyes.jp/editwall/</a><br /><br />とか、<br /><br />▼Red Interactive Agency<br /><a href="http://ff0000.com/">http://ff0000.com/</a><br /><br />とか、<br /><br />▼バルビレッジ<br /><a href="http://www.barvillage.net/">http://www.barvillage.net/</a><br /><br />とか、<br />そのページに同時にアクセスしている他ユーザとのコミュニケーションをネタにしたサイトってどうやって作っているんでしょう？<br />ということで、SWFをGetして簡易デコンパイラでちょっとのぞかせていただきました。<br /><br />そうしたところ、上記3サイトで使用していたのがXMLSocketでした。<br /> ]]>
        <![CDATA[調べたところ、他にも同様のものを実現する方法としてはFlash Media Server（FMS）で使用することができるNetConnectionとかもあるようですね。<br /><br />XMLSocketを使用する上ではXMLSocketサーバが必要なようですが、前述のFMSでも可能ですし自前のXMLSocketサーバでもいけるようです。先にあげたサイトがXMLSocketを使用しているのは下記の2点によるところなのかなと素人なりに思います。<br /><ul><li>FMSがお高い</li><li>そもそもXMLSocketで事足りるためFMSは高機能すぎる</li></ul>まだこの辺の技術を使ったことがないため何も知識がないのと同じ状態で何から手をつけたらよいやら。ドキュメンテーションに関しては何かよい本とかありますかね？ひとまずAdobeのサイトでFMSの技術資料から読み漁ってみようかなと。<br /><br />▼Adobe - Flash Media Serverリソース<br /><a href="http://www.adobe.com/support/documentation/jp/flashmediaserver/">http://www.adobe.com/support/documentation/jp/flashmediaserver/</a><br /><br />その後は実際にFlash Media Development Serverを使って試してみよう。<br />]]>
    </content>
</entry>

<entry>
    <title>FLVPlaybackのイベントを使いこなしたい</title>
    <link rel="alternate" type="text/html" href="http://www.2nd-pla.net/flash-is-hail/2008/03/flvplayback.html" />
    <id>tag:www.2nd-pla.net,2008:/flash-is-hail//2.30</id>

    <published>2008-03-26T16:31:56Z</published>
    <updated>2008-08-08T15:40:45Z</updated>

    <summary>今日は仕事でFLVPlayBackを使ったFLV再生用のFlashに対して、こん...</summary>
    <author>
        <name>dIke</name>
        
    </author>
    
        <category term="FLVPlayback" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.2nd-pla.net/flash-is-hail/">
        <![CDATA[今日は仕事でFLVPlayBackを使ったFLV再生用のFlashに対して、こんな要望が入ってきた。<br /><ol><li>初期状態は一番最後のコマで停止させておく</li><li>再生が押されたら通常通り再生</li><li>再生が完了したらリピートさせずに最後のコマで停止させる</li></ol>いやー、最初どうやろうかと悩んだね（笑）<br /><br />最終的には次のようなやり方でそれぞれ解決しました。<br /> ]]>
        <![CDATA[<font style="font-size: 1.25em;"><b>1. 初期状態で最終コマに再生ヘッダを持っていく方法<br /></b><font style="font-size: 0.8em;">使用したメソッド：<br />　FLVPlayback.seekPercent()： 指定したFLVPlaybackインスタンスの再生ヘッダを引数で指定した値（単位:％）の位置に移動させる<br /><br />使用したイベント：<br />　</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">FLVPlayback.</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">ready</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">： FLVの読み込みが完了したタイミングに送出されます</font></font><br /><font style="font-size: 1.25em;"><font style="font-size: 0.8em;"><br />説明：<br />　ご覧のとおり、このメソッドでは引数に指定した値通りの割合の位置へ再生ヘッダを移動してくれます。例えば50秒のFLVを扱う「myFLV」というFLVPlaybackインスタンスがあり、それに対してmyFLV.</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">seekPercent(50)と指定すると50秒の50％である25秒</font></font>の位置に再生ヘッダを移動してくれます。<br />　今回の要件では、「最終コマに移動させたい」ということになるので、autoPlayをfalseにした上でFLVの読み込み完了を示すreadyをイベントとして登録し、<font style="font-size: 1.25em;"><font style="font-size: 0.8em;">seekPercent(100)を指定してあげればよいわけです。<br />　ちなみにこの時点でのFLVの状態を示すstatusプロパティは「seeking」になります。複雑な処理をする場合にはこの状態を判別することが多くなるのかなぁという気がしたので補足しておきます。<br /><br />関連：<br />　FLVPlayback.seekPercent()<br />　<a href="http://livedocs.adobe.com/flash/8_jp/main/00003600.html">http://livedocs.adobe.com/flash/8_jp/main/00003600.html</a><br /><br /></font></font><font style="font-size: 1.25em;"><b>2. </b></font><font style="font-size: 1.25em;"><b>再生ボタンが押されたら再生</b><br /></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">使用したプロパティ：<br />　FLVPlayback.playheadTime： 再生ヘッダがいる位置の秒数を示す値<br />　</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">FLVPlayback.totalTime： FLV全体の秒数を示す値</font></font><br /><font style="font-size: 1.25em;"><font style="font-size: 0.8em;"><br />使用したイベント：<br />　</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">FLVPlayback.</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">playheadUpdate： FLV再生中、0.25秒ごとに送出される<br /></font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;"><br />説明：<br />　ここの考え方が今回いちばん悩んだところ。最初</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">は単純にFLVPlayback.play()で再生スタートすればよいと思っていました。ところが前述のとおり最終コマにヘッダを移動させた状態でplayすると再生ヘッダは最初のコマの位置に移動し終了します。。。</font></font>よくよく考えると当然といえば当然ですね。通常FLVはリピートがオフのとき最後まで再生したら再生ヘッダを最初のコマに移動させます。つまり最後のコマを越えたplayが終了の条件であり、今回のようにseekPercent(100)で最後のコマに移動させた位置からplayしても一度playが実行されこの終了条件に当てはまり再生ヘッダが最初に戻るだけで処理が終了するんですね。<br />　じゃ、どうしようかと悩んだ挙句、注目したのがplayheadTimeプロパティとtotalTimeプロパティ。これは再生ヘッダの位置の秒数を教えてくれるplayheadTimeとFLV全体の秒数を教えてくれるtotalTimeが同じ値なら現在再生ヘッダが終了地点にいることがわかり、これらを使ってFLVを操作するスキンの再生ボタンに処理を加えればいい感じに行くのでは？？と。<br /><font style="font-size: 1.25em;">が</font>、うまくplayheadTimeの値が取得できず、0となってしまう。seekPercent(30)としてみたりしても0となるのです。どうやら、<b>playheadTimeはstatusがplay中じゃないと取得できない</b>ようです。前述のとおりseekPercentで再生ヘッダを動かすとstatusは<b>seeking</b>となります。これが起因しているようでした。<br />　statusプロパティはリードオンリーのプロパティのため強引にやることもできず、さらにプロパティやメソッドを調べてみるのですがいい感じのものが見つからない。そこで視点を変えてイベントをよーく見渡してみました。そこで見つかったのが、<b>playheadUpdate</b>です！これのおかげで光明が差しました。<br />　playheadUpdateは再生中の0.25秒ごとに発生するイベントです。つまりseekPercent(100)の位置からplayして再生ヘッダが最初に戻ったタイミングで必ず起こるイベントなのです。そこで取った方法はというと、<b>playheadUpdateのイベントの中でplayheadTimeを取得してその値が0且つstateがplaying以外のときに強制的にstartメソッドを実行させる</b>というやり方です。これで見事に最終コマからのスタートが実現されました。<br /><br />関連：<br />　VideoPlayer クラス<br />　<a href="http://livedocs.adobe.com/flash/8_jp/main/00003644.html#849900">http://livedocs.adobe.com/flash/8_jp/main/00003644.html#849900</a><br />　FLVPlayback.state<br />　<a href="http://livedocs.adobe.com/flash/9.0_jp/main/00003077.html">http://livedocs.adobe.com/flash/9.0_jp/main/00003077.html</a><br /><br /><font style="font-size: 1.25em;"><b>3. 再生が完了したらリピートさせずに最後のコマで停止させる方法<br /></b><font style="font-size: 0.8em;">説明</font>：<br />　<font style="font-size: 0.8em;">いよいよラストの処理です。ここで使用するプロパティやイベントはすべて前述のものです。<br />　使用したイベントはplayheadUpdateです。この0.25秒ごとに発生するイベントの中で<b>playheadTimeとtotalTimeプロパティを観察しplayheadTimeの値がtotalTime以上になったらseekPercent(100)に再生ヘッダを移動させる</b>形です。<br /><br />こんな感じでこの要望をクリアさせました。<br /><br />ところが帰宅前に再生中に一時停止が気かないというバグが...。原因は2のところの処理でstateがplaying以外のときに強制的にstartさせているのが原因かと。これは条件判定ひとつなので明日対応しようと思います。<br /><br />やってみた感じ、FLVPlaybackを使用する際はイベント、特にplayheadUpdateが肝になる予感がします。複雑になるとこの0.25秒にラグが生じることもありそうで頼りすぎるとはまりそうなので注意が必要かもしれません。<br /><br /><b>【サンプル】</b><br /><font style="font-size: 0.8em;"><b>※スクリプトは会社にあるためちょっと違うかもしれず...。明日、バグの件とあわせアップします。</b></font><br />import mx.video.*;<br />my_FLVPlybk.autoPlay = false;<br />var listenerObject:Object = new Object();<br />listenerObject.</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">ready</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;"> = function(eventObject:Object):Void {<br />&nbsp;&nbsp; </font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">my_FLVPlybk.</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">seekPercent(100);<br />};<br /></font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">listenerObject.</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">playheadUpdate</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;"> = function(eventObject:Object):Void {</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;"><br />
</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">&nbsp;&nbsp;&nbsp; </font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">if(my_FLVPlybk.playheadTime&gt;=my_FLVPlybk.totalTime)</font><br />
</font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">&nbsp;&nbsp;&nbsp; &nbsp; </font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">my_FLVPlybk.</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">seekPercent(100);</font></font><br /><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">
&nbsp;&nbsp;&nbsp; else if(my_FLVPlybk.playheadTime==0 &amp;&amp; my_FLVPlybk.state == 'rewinding')<br />&nbsp;&nbsp;&nbsp; &nbsp; </font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">my_FLVPlybk.play();</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;"></font></font><br /><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">
};</font></font><br /><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">my_FLVPlybk.addEventListener("ready", listenerObject);<br />my_FLVPlybk.addEventListener("playheadUpdate", listenerObject);<br /><br /><br />結局、</font></font><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">else if(my_FLVPlybk.playheadTime==0 &amp;&amp; my_FLVPlybk.state == '<b>rewinding</b>')としました。</font></font><br /><font style="font-size: 1.25em;"><font style="font-size: 0.8em;">再生ヘッダがseekPercent(100)の位置から再生された際に一番初めのコマに戻るのですがそのときのstateがrewindingだったためこうしました。<br /><br /></font></font>]]>
    </content>
</entry>

<entry>
    <title>ExternalInterfaceのaddCallbackが効かない</title>
    <link rel="alternate" type="text/html" href="http://www.2nd-pla.net/flash-is-hail/2008/03/externalinterfaceaddcallback.html" />
    <id>tag:www.2nd-pla.net,2008:/flash-is-hail//2.20</id>

    <published>2008-03-20T12:24:24Z</published>
    <updated>2008-03-20T12:26:43Z</updated>

    <summary>                          ActionScriptとJ...</summary>
    <author>
        <name>dIke</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.2nd-pla.net/flash-is-hail/">
        <![CDATA[
            
            ActionScriptとJavascriptで連携するために用意されているExternalInterfaceですが、本日はこれに3時間ほどはまりました（汗）<br />事象としては、Firefoxで「○○is not a function.」というエラーが返ってきてActionScriptで定義した関数がコールできないという症状です。 ]]>
        <![CDATA[
            
            ▼参照<br /><i>Adobe - デベロッパーセンター : 外部APIを使用したFlashとJavaScriptの接続<br /><a href="http://www.adobe.com/jp/devnet/flash/articles/external_interface_06.html">http://www.adobe.com/jp/devnet/flash/articles/external_interface_06.html</a></i><br />こちらでExternalInterfaceの使用方法が参照できます。<br /><br /><i>【解決！】ExternalInterfaceにハマる (Nega Diary)<br /><a href="http://www.ironhearts.com/diary/archives/2007/03/uoeuexternalinterfaceeeieee.html">http://www.ironhearts.com/diary/archives/2007/03/uoeuexternalinterfaceeeieee.html</a></i>
<br />最初はこれかなとも思ったけど、以前から参照させてもらっていた情報だったのでこの誤りでもなく。<br /><br />▼原因<br />スタイルシートでdisplay:noneしたブロック内にFlashを配置したのですが、どうやらdisplay:noneしてしまうとJavaScriptがFlashを見失ってしまうらしい。<br />コールする前にdisplay:blockにも当然してみましたがどうやら駄目。<br /><br />▼解決策<br />仕方がないのでdisplay:noneは使わずにleft:-9999pxでいったん吹っ飛ばして、コールする前に正規の位置に移動させることにしました。<br />もともとabsoluteで配置する要素だったのでこれでもよいかなぁと。]]>
    </content>
</entry>

</feed>
