いつもiGoogleにおっぱいを

Google Developer DayのガジェットセッションでFlashをガジェットに貼り付ける例が出てました。こんなん。

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs title="Fish">
  </ModulePrefs>
  <Content type="html">
    <![CDATA[
      _IG_EmbedFlash('fish.swf', 'fish', {width: 280, height: 200});
    ]]>
  </Content>
</Module>

ふむ、思いのほか簡単っすね。これは個人的お約束のアレをガジェットにするしかあるまい。


てことで、初ガジェットのソース

<?xml version="1.0" encoding="UTF-8" ?> 
<Module>
  <ModulePrefs title="Oppai Simulator">
    <Require feature="flash" />
  </ModulePrefs> 
  <UserPref name="size" display_name="Size (0-628)" required="true" default_value="314" />
  <UserPref name="pressure" display_name="Hardness (0-)" required="true" default_value="1000" />
  <UserPref name="damping" display_name="Damping (0-100)" required="true" default_value="95" />
  <Content type="html">
    <![CDATA[ 
    <div id="oppai-container"></div>
    <script type="text/javascript">
      _IG_EmbedFlash(
        "http://blog.technohippy.net/OppaiGadget.swf?p=" + __UP_pressure__ + 
          "&amp;s=" + __UP_size__ + "&amp;d=" + __UP_damping__, 
        "oppai-container", 
        {width: 280, height: 200}
      );
    </script>
    ]]>
  </Content> 
</Module>


結果


ご自由にお取り下さい
Add to Google
http://www.google.co.jp/ig/directory?url=blog.technohippy.net/oppaigadget.xml


で、だ。簡単なはずのガジェット作成だったんだけど、実は思いのほか激しくはまった。気になった点をメモ。

  • Googleさんのキャッシュが強力すぎて?、ガジェットを更新してもそれが反映されません。いちいちファイル名変えて無理やり作業してたけど、これ設定で何とかなったりするんだろうか??
  • GDDのセッションで使ってたコードはそのままじゃ動かない・・・と思う。環境によるのかな?
    • Flash呼ぶ時はModulePrefsタグの中に が必要
    • FlashのコンテナにするDIV要素がCDATA内に必要(上の例では <div id="oppai-container"></div>)
    • _IG_EmbedFlashはscriptタグの中にいれないと解釈されない
    • ガジェットのXMLとSWFを同じディレクトリに格納した場合でも、SWFはドメイン名つきのURLを使わないといけない?実際どうかしらないけど、上の例だと単に OppaiGadget.swf だけを指定するとわけの分からないJSエラーが発生。一番はまった。


まぁ慣れてないせいでちょこちょこと面倒くさい部分もあったけど、使うのは基本的にJSとHTMLだけで新しく覚えることもほとんどない。ちょっとしたものをさくっと作って公開するのはなかなか楽しいから、いずれまたなんか作るかも。