HSPLet版FAQ

01.配置の仕方が分からない

02.ブラウザ上での動作速度が遅い

03.どの命令が使用できる?

04.標準以外の命令を使うには?

05.エラーが表示される

06.ファイルの読み書きについて

07.start.ax以外のオブジェクトファイルを指定するには?

08.HTML,HSPLet.zip,オブジェクトファイルを異なるディレクトリに置きたい

09.同じHSPLet.zipを使う利点

10.コマンドラインを使いたい

11.開始時の灰色が気になる

12.テスト時は表示されていたテキストの一部が表示されないことがある


 

01.配置の仕方が分からない

  ブラウザで動作させるには下記の手順を追ってください。
  その通り(階層や保持方法)でなくてもいけるのですが設定を行わなければなりません。
  デフォルトの手順だと特に何もしなくてよいです。

1.動かしたいプログラム(AS)のオブジェクトファイル(AX)を作成する
2.出てきた「*.ax」と「HSPLet.zip」を任意のディレクトリにアップロードする
 画像や音楽も使用している場合は同じ階層にアップロードしてください
3.アプレットを表示させるページ(HTM)を同じ階層にアップロードする

  アプレットを動かすために最低限(※)必要なHTMファイルは下記になります。
  ※正規(W3Cによる定義)の書き方でなくてよい場合はDOCTYPE,<html>,<head>等は省略しても動きますけどね。
   また最低限、ですのでコレで動かされるオブジェクトファイルは「start.ax」のみです。

<?xml version=1.0 encoding=Shift_JIS ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4.01 frameset//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns=http://www.w3.org/1999/xhtml lang=ja xml:lang=ja> <head> <meta http-equiv=Content-Type content="text/html; charset=Shift_JIS" /> </head> <body> <applet code=HSPLet archive=HSPLet.zip width=幅 height=高さ> </applet> </body> </html>

  本当の最低限の場合は下記の通りです(笑)。これ以外の<html></applet>等はなくても動きます…。
  ただしIEの場合では、の話です(IE6.0 , Operaで動作確認済み)。
  またアプレットの初期サイズが指定されていないので100×100程度(未計測)のウィンドウとなります。

<applet code=HSPLet archive=HSPLet.zip>

TOPへ戻る

 

02.ブラウザ上での動作速度が遅い

  ローカルであってもブラウザ上で動かすと速度が激減します。
  特にアプレットの全画面に画像を表示させると…ものすごく遅いです^^;
  中でもgmodeの3又は4の半透明合成コピーを使ったフェードイン・アウトは「え〜」ってくらい遅かったです。
  全画面書き換えずに一部だけを書き換える等のアイデアでカバーする他ありませんので、
  軽快に動作するグラフィカルなものを作るには相当な技術を要します。技術があっても出来ないものが多いですが。
  ウェイト命令にしても作者HIROMIさんの環境で50ミリ秒(「wait 5」相当)しか出なかったそうです。

TOPへ戻る

 

03.どの命令が使用できる?

  HSPLetはHSP2.55にあった命令しか使えません。しかもいろいろな制約等で全部使えるわけではありません。
  また使用できるものであっても微妙に仕様が変わっているものがあります。使える命令一覧を下記に挙げます。
  青色は拡張された仕様、赤色は制限された使用です。

#deffunc
#define
#funcHSPLetではDLLの代わりにJAVA言語のコンパイルされたCLASSファイルを読み込みます。 [参考]
#global
#include
#module
#uselib
alloc
await作者さんの環境で50ミリ秒が限界速度のようです。 [参考]
bcopy
bgscr
bloadセキュリティレベルが高いとアプレットのあるサーバのファイルしか読み込めません。 [参考]
boxf
break
bsave
buffer
button
chdir
chkbox
clrobj
cls
color
combox
continue
dialogファイル選択ダイアログは使用不可です。カラーダイアログもJavaPlug-Inが必要です。
dim
dup
end
exec別ページを開くためだけのものです。「exec "開くアドレス",,"ターゲットフレーム(_blank等)"」
exist
font機種依存しない Monospaced(等幅),Serif(明朝),SansSerif(ゴシック) 等を指定しましょう。
gcopy
getkey
getpal
getstr
gettime
ginfoパラメータが0の時mousex,mouseyと同じ値に、パラメータが2だと常に0を返します。
gmodeモード5はRGB全てがp4以下で透過、モード6,7でディザリング(疑似色数増加)モードになります。
gosub
goto
gsel
gzoom
if
input数値型であっても文字列の入力が出来ます。字数制限はできません。
instr
int
line
listbox
loop
memcpy
memset
mes水平タブ「\t」が使用可能となっています。
mesbox字数制限が出来ません。
mrefPVAL構造体の読み込みのみ可能です。その他のBMSCR(VRAM)は取得できません。
noteadd
notedel
noteget
notemax
notesel
objmode
objprm
objsel
objsize
onexitIE以外のブラウザだと正常に呼び出されないことがある可能性があります。
palcolor
palcopy
paletteパレットを書き換えても既に描画されている色は変更できません。
peek
pget
picloadJPG,GIF,BMP,MAG形式が読み込めます。
poke
pos
print
pset
randomize
redraw画面を更新できるのはredraw直後ではなく、redraw後のウェイト時です。
repeat
return
rnd
run
screenIDが0で初期化されるだけ、p4が2で非表示、p4が4でサイズ固定、p4が32でユーザーが閉じられるウィンドウです。
sdim
skiperr
snd
sndloadIEだと標準でAU形式のみ再生できます。その他の形式はJavaPlug-Inが必要となります。
sndoffp1に値を指定すると、指定IDのサウンドのみ停止します。
stick「2048」でマウスの真ん中ボタンが取得できます。
stop
str
strlen
strmid
sysfont
text
title対象ウィンドウIDが0の時、ステータスバーに表示されます。
wait[参考]
width
wpeek
wpoke

  命令ではありませんが下記のように文法拡張がされています。配列は特に便利!?
    ・演算子に「*= (X=X*Y)」「/= (X=X/Y)」「\= (X=X\Y)」「&= (X=X&Y)」
     「|= (X=X|Y)」「^= (X=X^Y)」「** (累乗)」「~ (ビット反転)」こういったものが使えるようになっています。
    ・配列の要素指定部分にカッコを使った式が使用できるようですので
     指定する要素を一旦変数に入れるという作業は必要ありません。

TOPへ戻る

 

04.標準以外の命令を使うには?

  標準命令以外の命令を使用したい場合、拡張ライブラリ(*.class)ファイルを使用します。
  HSPLetは指定ファイル名の拡張子を取り除いて「class」を付けたファイルを読み込むようです。
  つまり「#uselib "ABC.xyz"」とすることで「ABC.class」を読み込みます。
  利用の際はHSPLet.zipファイルにライブラリの追加圧縮を行い、
  classファイルで指示されたファイルを通常のDLLと同じ様に#include命令で結合します。
  別にHSPLet.zip以外でもappletタグのarchive属性に任意のファイルを指定すればいけますが
  ブラウザ依存を考慮するとHSPLet.zipに追加圧縮することがお勧めされています。

TOPへ戻る

 

05.エラーが表示される

  既出のエラーを挙げておきます。
  これ以外で発見された方はどういった時にどんなメッセージが出たかを教えてくださいませ。

ステータスバーに「load: class XXX not found」と出る
appletタグの「code」属性値がとなっていない、又は省略されている時
若しくは「archive」属値が「HSPLet.zip(デフォルト名)」となっていない時に表示されます。
 
ステータスバーに「exception java.lang.IllegalArgument.Exception」と出る
謎です…。何度かリロードを繰り返していると普通に表示されます。正規の書き方でないのが問題?
 
ダイアログ「Error java.lang.Exception: XXX.ax was not found.」が出る
paramタグで指定したオブジェクトファイル(*.ax)が指定ディレクトリにない
又は指定なしの場合は「start.ax」が見つからない時に表示されます。
 
ダイアログ「java.lang.ArthmeticException: / by zero at code XXX」が出る
0で除算された時に出ます。こういったバグはアップロード前のテスト段階で直しておいてください。
 
ダイアログ「Error in XXX: error code = YY」が出る
XXXをしている箇所でHSPのエラー(コードがYYのもの)が発生したときに出ます。
 
ダイアログ「Error java.lang.Exception: Fail to read code.」が出る
オブジェクトファイル(AX)が壊れています。
「Fail to read source code file header」と出ている場合はヘッダーが不正です。
 
ダイアログ「Error java.lang.Exception: HSPLet doesn't support HSP2.5 or below.」が出る
HSPのバージョン2.55以外でコンパイルされたオブジェクトファイル(AX)の場合に表示されます。
HSPLetのトップページにHSP2.55を代理公開させていただいておりますのでソチラでコンパイルしてください。

TOPへ戻る

 

06.ファイルの読み書きについて

  IEではセキュリティの都合でサーバ上のファイルのみ読み込めます。
  JavaPlug-Inの使用により別サーバでも読み込めるようになるです。
  CGIのパラメータを「xxx.cgi?abc=xyz」のようにすることでCGIにパラメータを渡せるようです。
  bsaveで上記のCGIパラメータを指定するとデータを渡せますがアプレットと同じサーバでなければなりません。
  データを渡すとrefstrにCGIの出力が、strsizeにそのサイズが入るようです。
  Version1.0.3からクッキーの読み込みに対応し、付属のサンプルで動作するのを確認できましたが、
  自分で組んだプログラムではうまく動かず、作者さんに尋ねたことが以前あったのですが、
  どうやらまだ完璧ではないようなことを言われたような記憶があります。、
  ご自分でも試されてうまく動作しないようでしたら別の手を考えてみてください。

TOPへ戻る

 

07.start.ax以外のオブジェクトファイルを指定するには?

  同じディレクトリに複数アップロードする場合等でstart.ax以外を指定する場合には、
  下記のようにapplet開始タグから終了タグの間にparam要素タグを指定しましょう。

<applet code="HSPLet" archive="HSPLet.zip" width="幅" height="高さ"> <param name="source" value="任意.ax" /> </applet>

TOPへ戻る

 

08.HTML,HSPLet.zip,オブジェクトファイルを異なるディレクトリに置きたい

  HSPLet(zip)ファイルとオブジェクト(AX)ファイル、ページ(htm)ファイルの全てが同じであるとは限りませんし、
  同じであっても別ディレクトリに置きたいと言う場合もあることでしょう。
  その様な場合次のようにします。(HTMファイルはAとして,AXファイルはBに,ZIPファイルはCにあると仮定する)

<applet code="HSPLet" codebase="B" archive="C/HSPLet.zip" width="幅" height="高さ"> <param name="source" value="任意.ax" /> </applet>

TOPへ戻る

 

09.同じHSPLet.zipを使う利点

  HSPLet.zipをアプレット数分用意せずに1つのHSPLet.zipを共有すると次のようなメリットがあります。

・HSPLet.zipのサイズが1つ分(64KB)だけでよくなりスペースを圧迫しない
・ブラウザのキャッシュ機能が働き、アプレットの起動が早くなる
  ただしローカルのテストではうまく動かないことがあるようです。

TOPへ戻る

 

10.コマンドラインを使いたい

  システム変数cmdlineを使うには、appletの開始・終了タグ間に次のparam要素タグを追加します。

<param name="cmdline" value="渡すパラメータ" />

  他のシステム変数も渡せるかな、と同じ様にしてみましたが渡せませんでした…。
  まぁstat,refstrにつきましてはTIPSの方法で変更できますが…。

TOPへ戻る

 

11.開始時の灰色が気になる

  起動時の灰色表示が浮いてしまい気になる。そういう方は他の背景色にあわせて変更しましょう。
  下記のparam要素タグをapplet開始・終了タグ間に置くのです。
  色の指定はHTMLタグの16進数による「RRGGBB」形式で行います。

<param name="color" value="背景色" />

  コレを行った所で灰色に表示されることが完全になくなるというわけではありません。
  灰色に表示される時間が短くなる、程度にお考えください。

TOPへ戻る

 

12.テスト時は表示されていたテキストの一部が表示されないことがある

  何かテキストの一部が欠けていることが何度か見かけました。
  その様なプログラムを組んだわけではないのですが一部が表示されないことがありました。
  しかしリロードすれば直りました。原因はわかりません。
  またページをスクロールしていると表示がおかしくなってしまうことがよくありました。
  コレばかりはどうしようもありませんね。スクロールできないようにするなどで対処してください^^;

TOPへ戻る