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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
1016
玲亜画像がうまく表示できません。4解決


玲亜

リンク

2006/10/16(Mon) 01:40:13|NO.2992

はじめまして。いきなりですが、質問します・・・
フェードインアウトのサブルーチンを呼び出し、その後に画像を呼び出しているのですが、
どう試行錯誤しても黒い画面にしかならないのです。
問題のスプリクトが下です。
#include "hsp3util.as"
buffer 2,350,190 : picload "AstreinLogo.jpg"
gsel 0
title "" : chgdisp 1 : bgscr 0,640,480,0,0,0
cls 4
wait 100
pos 160,128 : gcopy 2,0,0,350,190
gosub *fadein_b : wait 300 : gosub *fadeout_b
*select_gamen
#define SEL_MAX 3
buffer 4,640,480 : picload "titlebg.jpg"
gsel 0
pos 0,0
font "AR PPOP4B",40,1 : color 255,255,255
mmplay 0
gcopy 4,0,0,640,480
pos 150,100 : mes "〜タイトル〜"
*hazime
sdim sel_name,30
sel_name = "はじめから"," 続きから "," 終了する "
sel_stat = 0
*draw
if sel_stat<0 : sel_stat=0
if sel_stat>=SEL_MAX : sel_stat=SEL_MAX-1
pos 280,300
repeat SEL_MAX
color 0,70,200
if sel_stat=cnt : color 0,255,255 : mmplay 1
mes sel_name.cnt
loop
*sel_loop
stick a
if a&2 : sel_stat-- : goto *draw
if a&8 : sel_stat++ : goto *draw
if a&(16+32) : goto *sel_enter
await 10
goto *sel_loop
*sel_enter
if sel_stat=0 : goto *newgame
if sel_stat=1 : goto *roadgame
if sel_stat=2 : goto *gameend
goto *sel_loop
*newgame
mmplay 2
stop
*roadgame
mmplay 2
stop
*gameend
mmplay 2
end
*fadein_b
repeat 17 : redraw 2 : gsel 0 : color 0,0,0 : boxf
x=cnt*16
gmode 3,640,480,x
gcopy 2,0,0,640,480
redraw 1 : wait 5
loop
return
*fadeout_b
repeat 17 : redraw 2 : gsel 0 : color 0,0,0 : boxf
x=(16-cnt)*16
gmode 3,640,480,x
gcopy 2,0,0,640,480
redraw 1 : wait 5
loop
buffer 2
return
フェードイン・アウトへのサブルーチンを消すと、
きちんとタイトル画面の背景が表示されるのですが・・・
上のスプリクトで実行すると、文字だけが表示され、背景は真っ黒になってしまいます。
どう見直しても、自分では間違いが見つける事ができません。
お答えいただける方がいらっしゃれば幸いです><



この記事に返信する


ハトサブレ

リンク

2006/10/16(Mon) 09:30:31|NO.2994

gmode 3,640,480,x
<−−ここにpos 0,0をいれてください。
gcopy 2,0,0,640,480

多分それででます。



玲亜

リンク

2006/10/16(Mon) 13:38:43|NO.2997

ハトサブレさん、返信有難うございました><
申し訳ないのですが、pos 0,0 にしてしまっては、ロゴも0,0の座標に来てしまうのです。
今日返信を見て実行してみたわけですが、それでもできなかったので・・・
試行錯誤をして、いろいろなところに命令を入れたり省いたりした結果
事故解決する事ができました><
こんなことで悩んでる方もいるかもしれませんので一応載せます。
*fadeout_b//フェードアウトのところに余計なものが…
repeat 17 : redraw 2 : gsel 0 : color 0,0,0 : boxf
x=(16-cnt)*16
gmode 3,640,480,x
gcopy 2,0,0,640,480
redraw 1 : wait 5
loop
buffer 2←除去//この間違いは他の方はしないでしょう(汗
return
一番の問題がこっちだと思いました…↓
//7行目にgmodeでロゴ画像を持ってきて、下のサブルーチンでフェードインアウトしてる
わけですが・・・
画面を初期化できれば表示されるのではと思って、
サブルーチンが終了しセレクト画面ラベルの1つ上に処理が戻ってきたところで
cls命令を使ったところ・・・
8 |gosub *fadein_b : wait 300 : gosub *fadeout_b
cls 4 //画面を黒で初期化
9 |*select_gamen
10|#define SEL_MAX 3
11|buffer 4,640,480 : picload "titlebg.jpg"
12|gsel 0
これでなんとか、タイトル画面がきちんと表示できました><
これからはもっと考えて、それでもできなかったらここに質問しに来たいと思います。
本当に有難うございました。



kz3

リンク

2006/10/16(Mon) 13:39:32|NO.2998

質問の前に書き込みフォームの直ぐ上を読んで実行してください。
インデントも何もかも左揃えで読みにくいのです...。

>肝心のタイトル画面の背景が映されず真っ黒のままです。

基本的に、文字を表示したり、画像をコピーしたりするときは、その時点の描画モードを確認すれば自分で出来るはずです。
ですから、どこかでgmodeを使ってコピーモードを変更するようなプログラムを書くときは、
常にgcopyの際にコピーモードがどうなっているのか、注意を払ってください。

これを頭に置いたうえで再度自分のスクリプトを読めば、
「フェードイン->フェードアウト->ロゴ描画」という流れの中で、
「ロゴが描画されない」のは何故だろう、とプログラムを追っていけば分かるはずです。

ある時点で思い通りにならないのは、それまで処理してきた中に原因があるからです。

>フェードインアウトを抜かすと表示されるのは、ウィンドウIDやらバッファの問題なのでしょうか…

HSPを疑う前に、抜かしたコードの中に原因があるんじゃないか?と疑ってデバッグに取り掛かってください。



ハトサブレ

リンク

2006/10/16(Mon) 14:06:25|NO.2999

ハトサブレはまとはずれでした。

もっとよくみてから回答します。



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