【実験】HSP3Dish.jsでネット経由で画像を取得して利用する(失敗例)

更新:2022年8月6日   HSPトップへもどる


『 ネット画像を取得して利用 』 ◆ブラウザ上で動作するページ 

★このスクリプトは、失敗例です。
現状、 HSP3Dish.js でWebアプリとしては動作しません。
WebDishサービス にも登録できません。
各自のPC上では、  HSP3Dish プログラムとして実行できます。

なにかの参考になるかもしれないので、一応 公開しておきます

JavaScript や PHP などが得意な人で簡単な方法がわかるかたがいたら、ぜひHSPユーザーのみんなに教えてもらえたらうれしいです。

たぶん、HSP3Dish helper で .html に変換したあとで、
<script>と</script>
で命令を埋め込むカタチになるかと思いますが、
当サイトでは HSP の話題からすこしずれていくので今はあとまわし。

HSP公式のユーザー登録サービス「SoupSeed 」で各ユーザーに
Apple の Game Center や iCloudキーチェーン のような保存領域が
数KB 提供されるとうれしい気もします。

WordPress の会員ログインサービスプラグインを用意して、
Webアプリ起動時にそこへアクセスして継続データを取得させるのも手軽な気もします。
PHPで手軽なものを自作する場合は、セキュリティに注意を。

★自分が所有しているサーバ・スペースであれば、独自の外部ファイル(画像、音声、テキスト他)もアップロードして HSP3Dish.js から読み込むことができます。

サンプルスクリプト
自分のPCのHSPスクリプトエディタにコピー・ペーストして F5 実行 することができます。(ネット接続環境が必要です)

#include "hsp3dish.as"
#include "hspinet.as"

	// このスクリプトは 
	// 画像ファイルを自分で持たず、インターネット上から取得して、ローカルに保存し、
	// その画像を使用するアプリを作る実験スクリプト

	// このスクリプトは「WebDishサービス から WebDish素材 以外の画像を使う方法を模索する」
	// ために実験的に作成したスクリプトです。
	// 2022年8月時点では、このような方法は WebDishサービス および hsp3dish.js では使えません。 
	// (ファイルを作らず、取得したバイナリデータを直接描画できればできるかも??)
	// ブラウザ上でないPC上の hsp3dish プログラムとしては動作します。

	// 注意:他人のサイトの画像にひんぱんに直接アクセスするのはサーバを重くする可能性のある行為です。
	// 今回はHSPの学習目的で、公式HSPがサンプルスクリプトとして提供しているURLを利用しています

	gazouari=0	// 画像のダウンロード完了済みフラグ
	px = 10		// 犬画像の座標
	py = 150
	;
	;	ファイルの取得(バイナリファイルの取得)
	;
	netinit
	if stat : dialog "ネット接続できません。" : end

	neturl "http://hsp.tv/images/bbs/mascot3.jpg"
	netrequest_get ""

	mes "DOWNLOAD 開始"

	objsize 200,40
	pos 0,50 : button "画像を読み込んで表示", *putpic1

*main
	;	結果待ちのためのループ
	netexec res
	if res > 0 : goto *comp
	if res < 0 : goto *bad
	await 50
	goto *main

*bad
	;	エラー
	neterror estr
	mes "ERROR "+estr
	stop

*comp
	;	完了
	mes "DOWNLOAD 完了"

	// バッファを確保(実際に受信した量より多めに確保される)
	sdim buf, netgetv_size()
	// 受信データを代入
	netgetv_data buf
	// 実際に受信したサイズを取得
	title ""+netgetv_requestsize()+" bytes"
	//mesbox buf,640,400,1
	bsave "mascot8.jpg", buf, netgetv_requestsize()

	//メインループ
*main_loop

	stick key,15
	if key&128 : end		// ESCキーで終了
	
	redraw 0
	//----------------------------
	//ダウンロードが終わったとき表示される
	if gazouari=0 {
		pos 0 ,0 : mes "DOWNLOAD 完了"
	}
	//----------------------------
	//ボタンが押されたあと表示される
	if gazouari>0 {

		pos px,py : celput 1,0		//画像を描画

		if gazouari=2 : px++		//「よーいドン」ボタンが押されたら動きはじめる
		if px > 320 : px = -130		// 画面左はしにでたら、右端にもどす
	}
	//----------------------------
	redraw 1
	await 1000/60
	goto *main_loop
stop
//================================================================
//ダウンロードした画像を1体を表示
*putpic1

	gazouari=1	// 状況フラグ
	cls			// いま画面にでてるボタンとメッセージを消去
	
	buffer 1,130,90		// ID 1 (画像バッファ)を準備。読み込むセル画像サイズにあわせてある
	celload "mascot8.jpg",1	// セル画像をID 1 へ読み込む。 picload は ダメ!
	celdiv	1,130,90		// マップチップ1個の大きさを指定

	gsel 0
	//競走開始ボタンを表示
	objsize 200,40
	pos 0,250 : button "よーい ドン!", *putpic2

	goto *main_loop
stop
//================================================================
//画像がうごきだす
*putpic2
	gazouari=2
	cls			//いま画面にでてるボタンとメッセージを消去
	goto *main_loop
stop
//================================================================

// ★ このスクリプトは HSP公式が提供するHSP開発セット同梱の
// hsp37beta\sample\hspinet
// get_binary.hsp
// をお手本にしています

★ HSP公式サイトのサーバが重くなって迷惑になるような場合は、画像取得のアクセス先を変更します


   HSPトップへもどる