HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0407
Φ?-K容量を控えて画像や音楽を使いたい。24解決


Φ?-K

リンク

2012/4/7(Sat) 11:20:32|NO.45902

PNGは容量が少ないので使えると思ったんですが、
imgloadはIE9がインストールされた環境では使えないと聞きました。
実行ファイルにしても同じことだろうと思います。
では、どうしたら容量を控えて画像を使うことができますか?

また、音楽ファイルの方で
dmmplayでもoggファイルが使えなかった気がします。
音楽ファイルもどうしたら容量を控えて使うことができますか?



この記事に返信する


hexa.hemi

リンク

2012/4/7(Sat) 11:53:53|NO.45904

PNGはArtlet2D(GDI+)を使って読み込んでみればいいと思います。

oggは、実行ファイル以外にファイル(dll)が増えてもいいなら、
ds_play.dll(http://www.binzume.net/software/forhsp.html)
を使用して鳴らすことができます。



Φ?-K

リンク

2012/4/7(Sat) 12:22:48|NO.45905

すみません、あまりPCに詳しくないもので・・・
GDIって何ですか?
ヘルプにはGDIが導入されていない環境だと使えないとありますが



hexa.hemi

リンク

2012/4/7(Sat) 12:48:49|NO.45906

少しは検索もしましょう。
http://www.google.co.jp/search?q=gdi%2B
一番上にwikipediaが出ると思います。そこに書いてあります。



Φ?-K

リンク

2012/4/7(Sat) 13:12:24|NO.45907

なるほど、GDIはWindowsPCの描写に欠かせないものなんですね!


つづけて・・・
ds_playを使ってみましたがどうも上手く動作しません。
以下のスクリプトに何か問題はありませんか?

//================================================// //------------------------------------------------// //----DirectSoundを用いたogg,wavファイルの再生----// //------------------------------------------------// //================================================// #include "ds_play.as" ;ds_init ; Directoundの初期化 ;ds_open p1,p2 ; p1・・・0~15のID ; p2・・・はサウンドファイル ;ds_close p1 ; p1・・・指定サウンドID開放 ;ds_play p1,p2 ; p1・・・サウンドID ; p2・・・0=通常・1=ループ ;ds_stop p1,p2 ; p1・・・サウンドID ; p2・・・0=一時停止状態・1=再生位置を先頭 ;ds_setvol p1,p2 ; p1・・・サウンドID ; p2・・・ボリューム(0〜10000) //〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜// //〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜// ;初期化 ds_init ;ファイル選択 ;dialog "ogg|wav",16 ;選択されたファイル名 ;filename=refstr filename="E:\\600-K's Folder\\音楽\\【素材】迫り来る.wav";テスト mes filename ;ファイルロード ds_open 0,filename ;サウンド開放 ds_close 0 ;音量 ds_setvol 0,0 ;再生 ds_play 0,0



Φ?-K

リンク

2012/4/7(Sat) 13:14:29|NO.45908

ちなみに、asファイルとdllはきまったフォルダに
入れておいたので、インクルードは正しくできているはずです。

音がなりません



Φ?-K

リンク

2012/4/7(Sat) 13:39:21|NO.45912

連続投稿すみません。

ファイル名がいけないのかなと思って、
名前を変えようとしたら、「HSP3によって開かれています」というエラーが
でて名前を変更できません。
HSPエディタは閉じたはずだしタスクトレイにも入っていません。
タスクマネージャーから閉じれると思いますが
なぜHSP3はまだ起動しているのでしょうか?
以前はこんなことありませんでした。



ZAP

リンク

2012/4/7(Sat) 13:40:27|NO.45913

ファイルを開いて、すぐにクローズしてるからじゃないのですか?

クローズする=その読み込んだモノを破棄すると言うことなので、
その曲を鳴らす必要がなくなったときにクローズするのが正解だと思いますが。

それにその後のds_setvol 0,0
で、ボリューム(音量)をゼロにしちゃってるじゃないですか。
これじゃ再生されてても聞こえませんよ。



Φ?-K

リンク

2012/4/7(Sat) 13:45:14|NO.45914

dmmvolの-10000〜0が
ひっくり返ったかんじですか?
ちょっと試してみます。



暇人

リンク

2012/4/7(Sat) 14:11:59|NO.45917

・ds_free
DirectSoundを開放します.
終了時に自動的に呼ばれるので,自分で実行する必要はありません.


HSPのバージョンによる不具合か相性かは分からないが呼ばれてない感じ
終了前にds_freeを実行するとプロセスは残らなくなった



Φ?-K

リンク

2012/4/7(Sat) 14:22:27|NO.45918

暇人さん、ありがとうございます。
ds_free・・・確かにありました!そんな説明が。


つづいて、GDIを使った描写ですが・・・またしても上手くいきませんでした。

#include "a2d.hsp" ;イメージID1に描写 alCreateImageByFile 1, "RGB図.png" //buffer 1 ;コピーモード初期化 alResetCopyMode ;画像コピー(Image→HSPscreenの場合) alCopyImageToScreen 1, dID, 0,0, 256,192, 0,0 //gsel //gcopy 1,0,0,256,192



暇人

リンク

2012/4/7(Sat) 14:33:29|NO.45919

redrawしないとウィンドウに表示されない
ヘルプにサンプル逆引きあるんだから活用を



Φ?-K

リンク

2012/4/7(Sat) 14:45:31|NO.45920

できました!
・・・、これを2Dゲームに取り入れようと思うのですが、
バッファに書き出すことはできますか?
コピーモードの中にimage→バッファみたいなのがないので。



暇人

リンク

2012/4/7(Sat) 15:04:33|NO.45921

>コピーモードの中にimage→バッファみたいなのがないので。
ん?

> ;画像コピー(Image→HSPscreenの場合)
> alCopyImageToScreen 1, dID, 0,0, 256,192, 0,0
dIDに指定するのはHSPのスクリーンバッファのIDでscreen、bufferの区別は無い



Φ?-K

リンク

2012/4/7(Sat) 15:09:39|NO.45922

じゃあArtlet2Dはゲームに使うにはちょっと厳しいんですね。
それではArtlet2Dは僕の使用目的には適さない・・・

バッファへの書き出しができて、PNGが使えるものってありませんか?



暇人

リンク

2012/4/7(Sat) 15:22:49|NO.45923

ん?
ゲーム開始時に必要な分読み込んでHSPのbufferにコピーすれば良いんじゃないの?
mod_imgのimgloadも同様の事してる



Φ?-K

リンク

2012/4/7(Sat) 15:30:06|NO.45924

imgloadは僕のPCの環境じゃ使えないですし、
Artlet2Dではバッファへの書き込みはできないみたいですし・・・



暇人

リンク

2012/4/7(Sat) 15:42:17|NO.45926

バッファへの書き込みって何のバッファ?



Φ?-K

リンク

2012/4/7(Sat) 15:59:25|NO.45927

gcopyとかでコピーできるbufferのバッファです。
・・・?



暇人

リンク

2012/4/7(Sat) 16:14:02|NO.45929

だったらNO.45923でも言ってるように
alCreateImageByFileで読み込んでalCopyImageToScreenでbufferにコピーすれば良いだけでしょ
何か問題でもあるの?



Φ?-K

リンク

2012/4/7(Sat) 16:44:07|NO.45933

>alCopyImageToScreen sID, dID, dx, dy, w, h, sx, sy
>sID : コピー元 Image ID
>dID : コピー先 HSP スクリーン ID
>...
(ヘルプ引用)
とあって、HSPスクリーンIDでbufferを指定することはできるんでしょうか?


あ、そういえばbufferとscreenの区別は無いって言ってましたよね。
先にbuffer 7とかで仮想画面を作っておけば、7を指定して
さきほど作ったbuffer 7に描写されるんですか!

bufferとscreenを別物と考えていました。
何かすいません(汗)



Φ?-K

リンク

2012/4/7(Sat) 16:50:34|NO.45935

問題なく使えました。(PNGとOGGファイルが)
みなさんの協力に感謝します。

どうもありがとうございました。



暇人

リンク

2012/4/7(Sat) 16:51:08|NO.45936

>先にbuffer 7とかで仮想画面を作っておけば
そう言う事
screenはオンスクリーン
bufferはオフスクリーン
両方スクリーンバッファに変りは無い
見えるウィンドウを持ってるかどうか



Φ?-K

リンク

2012/4/7(Sat) 16:53:09|NO.45937

しっかり覚えておきます。



check

リンク

2012/4/7(Sat) 17:02:41|NO.45938

HSPで標準でPNGファイルが扱えるようにしてくださいと開発者に頼んだらどうだ。
需要はだいぶあると俺は思うけれど。
どうやら開発者の目はそちらには向いていないようだけれどな。



ONION software Copyright 1997-2023(c) All rights reserved.