WEB/システム/IT技術ブログ

最近はFlashネタばかりですね。はまってしまったんでしょう。。。

Flashでよりクリエイティブなものを表現するのに、ランダムというのはとても重要な要素となってきます。PHPやJavascriptなど他の言語でもよく利用されますが、ActionScript3でも確認しておきます。

まず、Flashで0以上1未満の乱数を発生させるためには関数「Math.random()」を使用します。ランダム生成関数ではよく1を含むかどうかが議論されますが、AS3では1は含まないとされています。

ここからは数学の話になりますが、、、一般的な考えに沿うと0~5の中からランダムに数字を発生させたい場合に、まず6にMath.random()を掛けます。すると答えの範囲は0~5.99999になります。これの小数点を捨てると0~5になるわけです。

ブラウザのスクロールについてくるサイドメニューを見かけますよね。
今回、ある案件でjQueryを使ってそれを実装する機会がありました。複数サイトからのスクリプトダウンロードなど、少し煩雑だったのでメモを残しておきます。

まず、必要なライブラリをダウンロードします。

「jQuery 1.3.2」を以下の公式サイトからダウンロードします。
http://jquery.com/

「jQuery UI Core 1.7.2」を以下の公式サイトからダウンロードします。
http://jqueryui.com/

ダウンロードしたファイルにはいくつものjsを含んでいると思いますが、使用するのは「ui.core.js」のみです。

「jQuery Scroll Follow 0.4.0」を以下のサイトからダウンロードします。
http://kitchen.net-perspective.com/open-source/scroll-follow/

Flashコンテンツでローディングの実装は重要です。
特に容量の大きいコンテンツの場合、全てのコンテンツがロードされていない状態でFlashが再生されてしまうと、再生がカクカクしたり、途切れたりと、見苦しいものになってしまいます。
それらを防止するために、全てのコンテンツのロードが完了してからFlashを再生するしくみが必要なわけです。

通常では、タイムラインを用いて、初めのフレームのところでローディングのアクションを構築して、ActionScriptでローディング完了を判定して、次のメインのフレームへジャンプするという処理のようです。
プログラマ出身なので、タイムラインの操作はあまり得意ではありません。どうせActionScriptを記述するのならば、全部ActionScriptで完結させたいものです。

処理のステップとしては、

1.ローディングムービーを再生し、ローディング状態を監視するイベントを登録する
2.ローディングが完了したら、監視イベントとローディングムービーを排除し、通常コンテンツを呼び出す
3.通常コンテンツを再生

となります。

親画面からナビゲーションとなる子画面を開き、その子画面を操作することで親画面を切り替えるという処理は、たまに実装しますが、その都度「どうだったっけ?」と調べてしまいます。。。そういうわけで覚書です。

例えば親画面をYahooに切り替えたい場合は、子画面のリンクに以下のように記述します。

<a href="javascript: void(0);" onclick="opener.location.href='http://www.yahoo.co.jp/';">Yahoo! Japan</a>

hrefにvoidを入れるのは、リンクとしての動作を抑制する意味があります。つまり、子画面自信は遷移せずに、onclickのjavascriptを実行することになります。

本日、3/15にいよいよ「radiko.jp」のサービスが開始されました。
radiko.jp

「インターネットでラジオ」と聞くと、なぜ今までなかったんだろうという思いもありますが、今回、正式にサービス開始となったようです。「正式に」というのも、これまででも、ああやったり、こうやったりすることで、ネットでラジオを聴く方法があったようですが、やはり質に難ありの状況だったようです。

ラジオを聴く機器は安価な印象があるのですが、いざ買うとなると、今の時代ラジオ単体で買うのもどうかと思いますし、だからといってラジオの聞けるコンポに買い換えたりするほど大げさでもないし。ということで、聞きたい番組があるにもかかわらず、ラジオがない環境で過ごしてきました。

そんな中、今回のサービス開始ということで、個人的には待望の日がきたという、ちょっとした感動があります。

早速、今聞いているのですが、やっぱり公式だといいますか、音質は良いような気がします。
使い方は簡単、上の公式サイトを見れば分かります。必要な環境としてはFlashが動くブラウザ上で動作するので、特に何かをインストールする必要はないです。
あと、残念ながら、日本全国でサービス利用はできないようです。現時点では、東京、大阪を周辺とした地域限定のサービスで、全国実施は夏ごろになりそうです。

さて、j-waveでも聞きながら仕事しよう。

PHPで関数mb_send_mailを利用してメールを送信する場合に、メール本文に1つの改行が2つと解釈されてメールが送信されるケースがあります。

例えば、以下のような文章をフォームなどで入力します。

こんにちわ
こんばんわ
おはようございます

この内容をmb_send_mailにセットしてメールを送信し、受信側で確認すると以下のように表示されることがあります。

アンチIE6の私にとっては朗報です。
私が制作側の人間で、IE6対応に日々悩まされているので、過剰かもしれませんが。

IE6の葬儀はアメリカのコロラド州にあるデザイン会社が主催で行うようです。
Announcement | IE6 Funeral
現地時間3/4(木)の19:00に行われるそうです。
可能であれば、私の是非参加したかった。。。

3/1よりGoogleのサービスが段階的にIE6サポート対象外になるという表明もあるように、こういったクリエイティブな方々の積極的な活動で、枯れた技術を切り捨てることも今後の発展には必要ですよね。

話は少しそれますが、大規模な制作会社などが「勉強会」などと称して講演者を立て、技術者の交流を図ることがしばしば見受けられますが、それとは一味違う、「IE6の葬儀」のようにニッチな話題に便乗したイベントというのもおもしろいアイディアだと思いました。

RSSをPHPで読み込む場合に、要素「dc:date」を抜き出す方法です。
毎回忘れて調べなおすので、ここにメモとして残しておきます。

PHPでRSSを読み込み処理する場合に関数simplexml_load_file()を使います。

例えば以下のような内容のRSSを読み込む場合を考えます。

<item>
	<title>タイトルタイトルタイトル</title>
	<info>
		<link>http://blog.he-ron.jp</link>
		<description>概要概要概要概要</description>
	</info>
	<dc:date>2010-02-12T14:19:07+09:00</dc:date>
</item>
(繰り返し)

Smartyでテンプレートを作る場合に、どの部分までテンプレート化するか設計が重要になってきます。
可能な限りテンプレート化することによって、更新作業が楽にはなりますが、一方で柔軟性に欠けるサイトになったりします。急にテンプレートの一部を切り替えたいなど要望があると、テンプレート構成を見直すなど、大改修になることもしばしばです。
そこでSmartyでは、予めテンプレートを細分化し、テンプレートでテンプレートを読み込む構成を組むことができます。例えば、親となるテンプレートを以下のように記述します。

{include file='header.tpl'}
{include file='sidemenu.tpl'}
コンテンツコンテンツコンテンツ
{include file='footer.tpl'}

Monthly Archives