HSPLet版FAQ
07.start.ax以外のオブジェクトファイルを指定するには?
08.HTML,HSPLet.zip,オブジェクトファイルを異なるディレクトリに置きたい
12.テスト時は表示されていたテキストの一部が表示されないことがある
01.配置の仕方が分からない
ブラウザで動作させるには下記の手順を追ってください。
その通り(階層や保持方法)でなくてもいけるのですが設定を行わなければなりません。
デフォルトの手順だと特に何もしなくてよいです。
1.動かしたいプログラム(AS)のオブジェクトファイル(AX)を作成する
2.出てきた「*.ax」と「HSPLet.zip」を任意のディレクトリにアップロードする
画像や音楽も使用している場合は同じ階層にアップロードしてください
3.アプレットを表示させるページ(HTM)を同じ階層にアップロードする
アプレットを動かすために最低限(※)必要なHTMファイルは下記になります。
※正規(W3Cによる定義)の書き方でなくてよい場合はDOCTYPE,<html>,<head>等は省略しても動きますけどね。
また最低限、ですのでコレで動かされるオブジェクトファイルは「start.ax」のみです。
本当の最低限の場合は下記の通りです(笑)。これ以外の<html></applet>等はなくても動きます…。
ただしIEの場合では、の話です(IE6.0 , Operaで動作確認済み)。
またアプレットの初期サイズが指定されていないので100×100程度(未計測)のウィンドウとなります。
02.ブラウザ上での動作速度が遅い
ローカルであってもブラウザ上で動かすと速度が激減します。
特にアプレットの全画面に画像を表示させると…ものすごく遅いです^^;
中でもgmodeの3又は4の半透明合成コピーを使ったフェードイン・アウトは「え〜」ってくらい遅かったです。
全画面書き換えずに一部だけを書き換える等のアイデアでカバーする他ありませんので、
軽快に動作するグラフィカルなものを作るには相当な技術を要します。技術があっても出来ないものが多いですが。
ウェイト命令にしても作者HIROMIさんの環境で50ミリ秒(「wait 5」相当)しか出なかったそうです。
03.どの命令が使用できる?
HSPLetはHSP2.55にあった命令しか使えません。しかもいろいろな制約等で全部使えるわけではありません。
また使用できるものであっても微妙に仕様が変わっているものがあります。使える命令一覧を下記に挙げます。
青色は拡張された仕様、赤色は制限された使用です。
#deffunc #define #func HSPLetでは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 字数制限が出来ません。 mref PVAL構造体の読み込みのみ可能です。その他のBMSCR(VRAM)は取得できません。 noteadd notedel noteget notemax notesel objmode objprm objsel objsize onexit IE以外のブラウザだと正常に呼び出されないことがある可能性があります。 palcolor palcopy palette パレットを書き換えても既に描画されている色は変更できません。 peek pget picload JPG,GIF,BMP,MAG形式が読み込めます。 poke pos pset randomize redraw 画面を更新できるのはredraw直後ではなく、redraw後のウェイト時です。 repeat return rnd run screen IDが0で初期化されるだけ、p4が2で非表示、p4が4でサイズ固定、p4が32でユーザーが閉じられるウィンドウです。 sdim skiperr snd sndload IEだと標準でAU形式のみ再生できます。その他の形式はJavaPlug-Inが必要となります。 sndoff p1に値を指定すると、指定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)」「** (累乗)」「~ (ビット反転)」こういったものが使えるようになっています。
・配列の要素指定部分にカッコを使った式が使用できるようですので
指定する要素を一旦変数に入れるという作業は必要ありません。
04.標準以外の命令を使うには?
標準命令以外の命令を使用したい場合、拡張ライブラリ(*.class)ファイルを使用します。
HSPLetは指定ファイル名の拡張子を取り除いて「class」を付けたファイルを読み込むようです。
つまり「#uselib "ABC.xyz"」とすることで「ABC.class」を読み込みます。
利用の際はHSPLet.zipファイルにライブラリの追加圧縮を行い、
classファイルで指示されたファイルを通常のDLLと同じ様に#include命令で結合します。
別にHSPLet.zip以外でもappletタグのarchive属性に任意のファイルを指定すればいけますが
ブラウザ依存を考慮するとHSPLet.zipに追加圧縮することがお勧めされています。
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を代理公開させていただいておりますのでソチラでコンパイルしてください。
06.ファイルの読み書きについて
IEではセキュリティの都合でサーバ上のファイルのみ読み込めます。
JavaPlug-Inの使用により別サーバでも読み込めるようになるです。
CGIのパラメータを「xxx.cgi?abc=xyz」のようにすることでCGIにパラメータを渡せるようです。
bsaveで上記のCGIパラメータを指定するとデータを渡せますがアプレットと同じサーバでなければなりません。
データを渡すとrefstrにCGIの出力が、strsizeにそのサイズが入るようです。
Version1.0.3からクッキーの読み込みに対応し、付属のサンプルで動作するのを確認できましたが、
自分で組んだプログラムではうまく動かず、作者さんに尋ねたことが以前あったのですが、
どうやらまだ完璧ではないようなことを言われたような記憶があります。、
ご自分でも試されてうまく動作しないようでしたら別の手を考えてみてください。
07.start.ax以外のオブジェクトファイルを指定するには?
同じディレクトリに複数アップロードする場合等でstart.ax以外を指定する場合には、
下記のようにapplet開始タグから終了タグの間にparam要素タグを指定しましょう。
08.HTML,HSPLet.zip,オブジェクトファイルを異なるディレクトリに置きたい
HSPLet(zip)ファイルとオブジェクト(AX)ファイル、ページ(htm)ファイルの全てが同じであるとは限りませんし、
同じであっても別ディレクトリに置きたいと言う場合もあることでしょう。
その様な場合次のようにします。(HTMファイルはAとして,AXファイルはBに,ZIPファイルはCにあると仮定する)
09.同じHSPLet.zipを使う利点
HSPLet.zipをアプレット数分用意せずに1つのHSPLet.zipを共有すると次のようなメリットがあります。
・HSPLet.zipのサイズが1つ分(64KB)だけでよくなりスペースを圧迫しないただしローカルのテストではうまく動かないことがあるようです。
・ブラウザのキャッシュ機能が働き、アプレットの起動が早くなる
10.コマンドラインを使いたい
システム変数cmdlineを使うには、appletの開始・終了タグ間に次のparam要素タグを追加します。
11.開始時の灰色が気になる
起動時の灰色表示が浮いてしまい気になる。そういう方は他の背景色にあわせて変更しましょう。
下記のparam要素タグをapplet開始・終了タグ間に置くのです。
色の指定はHTMLタグの16進数による「RRGGBB」形式で行います。
コレを行った所で灰色に表示されることが完全になくなるというわけではありません。
灰色に表示される時間が短くなる、程度にお考えください。
12.テスト時は表示されていたテキストの一部が表示されないことがある
何かテキストの一部が欠けていることが何度か見かけました。
その様なプログラムを組んだわけではないのですが一部が表示されないことがありました。
しかしリロードすれば直りました。原因はわかりません。
またページをスクロールしていると表示がおかしくなってしまうことがよくありました。
コレばかりはどうしようもありませんね。スクロールできないようにするなどで対処してください^^;