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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0729
けものhsp3dishやgcopyについて6解決


けもの

リンク

2017/7/29(Sat) 11:30:28|NO.80731

hsp3dishのmmstatについて

・includeしなくてもできてしまいます。
・hsp3dish.asをincludeして、buffer命令をすると「サポートされていない機能:21」と怒られます。



gcopyについて

どうやっても特定の場所でのスプライト描画ができません。ずっとやってるのですが原因不明です。
buffer 1,,,0
picload "test1.png",2

buffer 2,,,0
picload "test2.png",2

// ここが表示できません.(画像を変えても同じです)
gmode 4,15,15,255
pos 0,0
gcopy 1,0,0,15,15

// ここから下は表示できます.
color 255,255,255
pos 100,100
print "おっけー!"

gmode 4,100,100,255
pos 300,200
gcopy 2,0,0,100,100

なぜか冒頭のスプライト表示ができません。
画像を変えても何も出なかったり、真っ黒だったりとトラブル続きです。
picload"",2で真っ黒なウインドウにpngを格納しているので透明部分が黒になるのは
承知しています。なので、透明でない部分は描画されるはずですが、なぜか何も表示されない。
もしくは真っ黒。しかし、他は表示できている。解像度が低いからpicloadで認識できないのかと
思い、もっと高い解像度の画像にしても結果はダメでした。


一言すみません。
私はHSP v2.4の時に知りやり始めました。なのでHSPの歴史も17年ほどになります。
それなりに歴史がある言語かと思うのですが、何か初歩的なバグが目立つような気がします。
私の技術不足や勘違いもあるかもしれませんが、上記のように周りのスプライトやテキストは
表示されているのに、一部が出ないとか明らかに「おかしい」と思うような現象が17年経過しても
発生するのかと思うと、正直うんざりな気分です。



この記事に返信する


けもの

リンク

2017/7/29(Sat) 11:50:15|NO.80732

すみません、自己解決しました。
よくわからないのですが、

buffer 1,,,0
picload "test1.png",2

buffer 2,,,0
picload "test2.png",2




buffer 2,,,0
picload "test2.png",2

buffer 1,,,0
picload "test1.png",2


と順番を変えたら描画されました。
わけがわかりません。



掘木

リンク

2017/7/29(Sat) 14:20:00|NO.80737

提示されたコードを実行しても何一つ表示されません。
これは仕様通りの動作ですので特に問題ないでしょう。提示されている入れ替えを行っても同じです。
どのようにおかしいのでしょうか?逆にその考えを聞かせて頂きたい。

>私はHSP v2.4の時に知りやり始めました。なのでHSPの歴史も17年ほどになります。
こちらはv2.5の頃なのであまり変わらないくらいなのでしょうかね。
仕様書に関しては開発陣のマンパワーが言語の拡張速度に追いついておらず、
精度の良くない点はありますが…まぁその辺を受け入れつつ見守っていくような言語でしょうに。



しまくろねこ

リンク

2017/7/29(Sat) 15:23:40|NO.80738

こんにちは。

Dishでは描画対象のウィンドウIDは「0」番のみとなります。
(※buffer命令+picload命令やcelload命令で画像を読み込む場合のみ、「0」番以外のウィンドウIDも使用可能です)

なので、buffer命令を使用した後の描画先のウィンドウIDが「0」番以外の番号になっているので、描画直前でも良いのでgsel命令で「0」番にしてあげる必要があります。
(※好みもあるかと思いますが、buffer+picloadの代わりにcelloadで画像を読み込むでもOKです)

#include "hsp3dish.as" buffer 1,,,0 picload "test1.png", 2 buffer 2,,,0 picload "test2.png", 2 gsel 0 repeat redraw 0 color 0, 0, 0 : boxf gmode 4, 15, 15, 255 pos 0, 0 gcopy 1, 0, 0, 15, 15 color 255, 255, 255 pos 100, 100 print "おっけー!" gmode 4, 100, 100, 255 pos 300, 200 gcopy 2, 0, 0, 100, 100 redraw 1 await 16 loop
また、Dishは通常のHSPと仕様が異なる場合があるので「HSP3Dish プログラミングマニュアル・基本仕様ガイド」を少しでも目を通しておくと解決が早くなると思います。
既に目を通されていたらごめんなさい。

「HSP3Dish プログラミングマニュアル・基本仕様ガイド」
doclib\hsp3dish_prog.htm

「HSP3Dishサポート済みコマンド」
doclib\support_cmds.txt



けもの

リンク

2017/7/30(Sun) 12:12:18|NO.80751

>しまくろねこさん

アドバイスありがとうございます。仕様・・そうですか・・・。
hsp3dish.asを使いたかったのは、mmstatを使いたかっただけなんです。
それだけのために、既存のbuffer + picloadを使おうとするとエラーになるのは
個人的にやめてもらいたい仕様ですね。

いずれにしましても、アドバイスありがとうございました。



>掘木さん

//(注釈)に書かせて頂いたとおりなのですが、描画されるテクスチャとされないテクスチャが
あったので、掲示板に書かせてもらったんです。buffer,picload,gmode,gcopyで上から順番に
描画されるのが普通だと思いますが、上のソースのtest1.pngだけが描画されなかったんですね。
それで画像ファイルが不具合なのかなと思って、違うものに差し替えても同じ、不思議なことに
picload"test1.png",2 を picload"test2.png",2 に置き換えてやってもtest2.pngが
描画されなかったんです。(※ちなみにhsp3dish.asはincludeしない状態でやっているので無関係です)

そこでbuffer + picloadの順番を入れ替えたらなぜか両方とも描画できたので、「何だ?」という
感じになったんです。もう一度逆にすると、やはりtest1.pngは描画されずtest2.pngだけが
出てくるような状態になりました。順番を逆にするとなぜが両方が描画されます。
理由もわからず逆にして組んでますが、腑に落ちません。本当にわけのわからない現象です。



すみません。
解決済みのチェックボックスにチェックいれたはずなんですが、それでもコメント
できてしまうのでしょうか?



あり

リンク

2017/7/30(Sun) 13:36:47|NO.80753

提示されたスクリプトはおそらく省略されたものなので
とりあえず以下のスクリプトで試したところ特に問題なく表示できましたが
これでも同じ症状が出ますでしょうか?

buffer 1,,,0 picload dir_tv + "\\hsptv_img.png",2 buffer 2,,,0 picload dir_tv + "\\king_knight.png",2 gsel 0,1 gmode 4,64,64,255 pos 0,0 gcopy 1,0,192,64,64 color 0,0,0 pos 100,100 print "おっけー!" gmode 4,128,128,255 pos 300,200 gcopy 2,0,0,128,128



掘木

リンク

2017/7/30(Sun) 13:57:19|NO.80755

あれこれ書き込もうと文章校正してたらありさんの書き込みがあったので、それに任せます。
結局掲題のコードで本当に掲題の状況が発生するなら、HSPの再インストールを試すべきでしょう。

>けものさん
動作の挙動としての意図は合っているかと思います。ただ、
掲示されたコードと実行結果があまりに不一致なうえ、実行結果推測が言語仕様と齟齬があり過ぎたので
念のための確認でした。
かいつまんで言うと、提示されたコードを以って、けものさん本人が動作の再現ができるものだったのかを知りたかった。



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