2007年4月アーカイブ

InternetExplorerにおいてShockwaveコンテンツがアクティブになっているにもかかわらず、
バックスペースキーを押すと前のページに戻ってしまう不具合についての解決策。

objectタグにIDをつけ、それに対してfocus()を実行する。
例:
■dcr_embed.js

document.write("<object classid=\"clsid:166B1BCA-3F9C-11CF-8075-444553540000\"");
document.write(" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0\"");
document.write(" ID=myMovie width=640 height=480>");
///中略///
document.write("</object>");
myMovie.focus();

上記だけでは、Shockwaveコンテンツ外をクリックしてしまうと問題が再発するので下記Lingoを記述しておく。
on startmovie
the mouseDownScript ="mousedown_func"
end
on mousedown_func
goToNetPage "javascript:myMovie.focus()"
end

つまりクリックでアクティブにしただけではフォーカスが移ってないので、
Javascriptのfocus()を使って明示的にフォーカスを移す必要があるということ。
たぶん、これで大丈夫じゃないかな。

■2007/4/30追記
上記、goToNetPageを使うとIEのリンク時に鳴るカチッという音が発生してしまう。
なのでgoToNetPageではなくexternalEventでJavascriptを呼ぶことにする。
例:
◆Shockwaveを表示するHTMLに下記を記述

<script language="JavaScript">
function dcr_focus() {
myMovie.focus();
}
</script>
<script language="vbscript">
sub myMovie_ExternalEvent(byVal aCommand)
call dcr_focus()
end sub
</script>

◆Shockwave内のムービースクリプトに下記を記述
on startmovie
the mouseDownScript ="mousedown_func"
end
on mousedown_func
externalEvent("dcr_focus()")
end

注:太字myMovieの部分は、objectタグのIDと一致させる。

■2007/5/2追記
Shockwaveエリアがブラウザウィンドウ内に入りきっていない状態でfocus()を行うとShockwaveエリアがウィンドウ上端にくるよう勝手にスクロールされてしまう。
なので、スクロール前(focusする前)のscrollTopを保持しておき、その位置へscrollTo()を使って戻す。
強制的にスクロール位置を調整すると一瞬ちらつく。
onFocus,onBlurで状態を見張り、フォーカスが外れている場合のみfocus()を行うようにしたほうがよい。

Shockwave 10.2.0.021

| コメント(0) | トラックバック(0)

インストールの挙動が相変わらず不安定だったり再起動がかかったりするけど、年齢認証(とその文字化け)は無くなって良かった。
がしかし、バックスペースキーを押すと前ページに戻る!
これは、最新のPlayerとIEの組み合わせで発生する。

チャットにとって致命的だよ~。
前のバージョンから今回のリリースまでは7ヶ月かかった。
次に修正されるのはいつだろう?

Lingoで書いたサーバサイドスクリプトをNebulae Server用にJAVAで書き直してるんだけど、けっこう面倒。
分からない箇所をTabuleiroのサポートにメールしたら、親切に教えてくれた。まだ購入してもいないのに。

サーバサイドでのDBApplication.getAttributeの取得方法は、下記のような感じ。
レスポンスはincomingMessageハンドラで受け取る。

MUSMessage mymsg = new MUSMessage();
mymsg.m_errCode = 0;
mymsg.m_timeStamp = serverObject().timeStamp();
mymsg.m_subject= new MUSMsgHeaderString("subject");
mymsg.m_senderID= new MUSMsgHeaderString(this.name());
mymsg.m_recptID = new MUSMsgHeaderStringList();
mymsg.m_recptID.addElement(new MUSMsgHeaderString("system.DBApplication.getAttribute"));
LList attributelist = new LList();
attributelist.addElement(new LSymbol("my_attribute"));
LPropList pl = new LPropList();
pl.addElement(new LSymbol("application"), new LString("my_movie"));
pl.addElement(new LSymbol("attribute"), attributelist);
mymsg.m_msgContent = pl;
postMessage(mymsg);

OpenPNE

| コメント(0) | トラックバック(0)

試したいことがあったのでOpenPNEをインストールしてみた。
設置は簡単で、一通り機能が揃っているので悪くない。
ただ思うのは、同じ機能のSNSサイトが乱立してもユーザーにとってはうれしくないよな。
そういう意味ではSNS同士の連携を考えたwawawaの試みは面白そうだったけど、プロジェクト自体消失したっぽいね。

なんだかんだ言っても手軽に構築できるのはありがたいので
独自コンテンツの基本インフラとして使ってみようかな。

SW3D + FMS

| コメント(0) | トラックバック(0)

RICE GRAIN MEN
Flash Media Serverを使ったデモ。
いつから公開しているか知らないけど、開発が進むといいなぁ。

ポートチェック【外部からポート開放確認】

自宅サーバだと外部から接続できてるのか確認しづらいので
こういうサービスは助かる。

3Dチャット

| コメント(0) | トラックバック(0)

Shockwaveを使った3Dチャットを新しく見つけた。Havok使ってるっぽい。
http://3d-yococho.ddo.jp/
すごいねー、隠しアイテムとかあって面白い。

球根3Dチャットも負けてられないのでそろそろバージョンアップしたいな。

Shockwave Multiuser Serverは楽ちんだけど、WindowsとOS9でしか動かないのがちょっと...、ということでNebulae Multiuser Serverに手を出した。
まず普通に起動すると、日本語(マルチバイト文字)が扱えない。
解決方法は、「-Dfile.encoding=ISO-8859-1」を付けて起動すれば大丈夫。

Windowsなら

cd c:\Nebulae
java -Dfile.encoding=ISO-8859-1 -cp Nebulae.jar;C:\Nebulae net.tabuleiro.nebulae.Nebulae

Linuxなら
cd /usr/local/nebulae
java -Djava.compiler=NONE -Dfile.encoding=ISO-8859-1 -cp Nebulae.jar net.tabuleiro.nebulae.Nebulae &

Nebulaeの情報自体ほとんどないし、JavaやLinuxの知識不足で一苦労。

お試し版よりだいぶ使いやすくなってる。

気づいた点
・デフォルトの表示サイズが変わった。お試し版より狭くなった。
ツールバー表示中 800×528pixel (4:3モード) 800×396pixel (16:9モード)
ツールバー非表示 800×628pixel (4:3モード) 800×472pixel (16:9モード)
・Aボタン連打が効かない不具合が直った。

MUS server-side lingo

| コメント(0) | トラックバック(0)

サーバサイドでsystem.group.joinを使おうとしても正しく機能しないので
ユーザをグループに参加させる時は下記のやり方を使う。

--グループオブジェクトの参照
GroupRef = pMovie.serverGroup(pRoomName)
--グループ存在しないなら作成
if GroupRef =void then
GroupRef = pMovie.createServerGroup(pRoomName)
end if
--ユーザオブジェクトをグループに追加
GroupRef .addUser(pUser)


マニュアルに載ってないサーバサイドLingo

アーカイブ