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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1103
ふぁるクリック時の背景16解決


ふぁる

リンク

2012/11/3(Sat) 03:05:00|NO.50424

クリックしたときに、する度に一度背景が変わってしまいます。
そのときに表示している背景の前に表示していた背景画像がクリックするときだけ表示されてしまうのですが、
どうやったら背景をクリック時に変えずに済むでしょうか?

ソースは長いので省略します。
何処が問題かすらわからないです。

画像は全てselloadで読み込んでいます。


日本語文だけで申し訳ありません。



この記事に返信する


@key

リンク

2012/11/3(Sat) 03:18:06|NO.50425

プログラムを省略するのは仕方ないとして質問の日本語が行方不明で理解不能です
書きなおしてちゃんとわかるように言って下さい



ふぁる

リンク

2012/11/3(Sat) 03:23:20|NO.50426

>>@keyさん

申し訳ありません。
日本語が苦手なもので…

クリックによってゲームを進める仕組みにしています。
問題のところでは、ゲームを進めるために画面をクリックすると、
背景が、その前に表示していた背景に1秒より短い時間の間だけですが変わってしまいます。

どこが問題なのかわかりません。
可能性のある部分のご指摘お願いします。



ふぁる

リンク

2012/11/3(Sat) 03:26:04|NO.50427

画像の読み込みはcelloadで行っています。
クリックの判定?はonclickで行っています。



@key

リンク

2012/11/3(Sat) 03:34:30|NO.50428

まず背景画像はcelloadじゃなくてgcopyを使おう
celloadは半透明、回転処理も入ってるので大きい画像になると重い

あまりonclickは信用出来ないのでやめたほうがいいかも
getkey click,1で左クリックしてるか毎回監視してクリックされたら画像を表示、というのがいい



暇人

リンク

2012/11/3(Sat) 03:40:11|NO.50429

>そのときに表示している背景の前に表示していた背景画像がクリックするときだけ表示されてしまうのですが、
意味が分からない
背景が二枚あって奥と手前に重ねて表示してて
クリックすると奥のが手前に表示される?
一瞬手前に表示されるだけなら redraw をヘルプで検索
違うならもっと詳しく

>まず背景画像はcelloadじゃなくてgcopyを使おう
> celloadは半透明、回転処理も入ってるので大きい画像になると重い
ちゃんと拡大縮小や回転半透明など無い時はgcopyと同等の処理になるようになってる
ヘルプにも書いてあるでしょ(後celloadじゃなくてcelput)

>zoomx,zoomy,angleの指定を省略するか、等倍の設定(1,1,0)になっている場合は、
>自動的に高速なコピーが内部で実行されます。



ふぁる

リンク

2012/11/3(Sat) 03:55:40|NO.50430

>>@keyさん
onclickはあまり信用できないのですね。
今回はもう変えられない(時間がない)ので、
次回からそうさせていただきます

>>暇人さん
そのような感じというか…
問題の場面ではその前の場面と背景が異なります。
その問題の場面でクリックすると、その前の場面で表示させていた背景が一瞬出てきます
redrawを使ってみましたが、どうにもうまくいきません…
入れる場所が悪いのかとは思いますが…



暇人

リンク

2012/11/3(Sat) 04:05:12|NO.50431

もっと詳しくと・・・
前の背景とかじゃなくて背景AとかBにして
問題の場面とかじゃなく処理の流れとかも書いて
スクリプト書けないならもっと伝える努力を・・・

スクリプト全部は出せなくても流れを書いて
クリックした後の画面を完成させる部分ぐらいは出せるでしょ



ふぁる

リンク

2012/11/3(Sat) 04:25:54|NO.50432

申し訳ありません。
私の日本語の力では伝えられそうにありませんので、
長いですがソースを出しました。
宜しくお願いします



#include "hsp3util.as" randomize screen 0,720,540 miss=0 nannido=70 mbox_id=7 mbox2_id=2 mbox22_id=3 kyoushitsu_id=4 opening2_id=5 opening3_id=6 sky_id=8 roka_id=9 celload "mbox.png",mbox_id celload "mbox2.gif",mbox2_id celload "mbox22.gif",mbox22_id celload "kyoushitsu.jpg",kyoushitsu_id celload "opening2.jpg",opening2_id celload "opening3.jpg",opening3_id celload "sky439.jpg",sky_id celload "roka.jpg",roka_id kyoushitsu_x=0 kyoushitsu_y=0 mboxpos_x=40 mboxpos_y=380 mbox2pos_x=640 mbox2pos_y=500 mespos_x=60 mespos_y=400 text_wait=40 *top_menu cls picload "truetitle.png" pos 275,400 objsize 120,40 objmode 2 font "HGS創英角ポップ体",25,0 button "スタート",*namaenyuuryoku stop *start cls buffer 1,720,540 celput opening2_id,0 gsel 0 repeat 257 redraw 0 color:boxf gmode 3,,,cnt pos 0,0 gcopy 1,0,0,720,540 wait 1 redraw 1 loop text 40 color 0,0,0 font "HG丸ゴシックM-PRO",20,1 sdim opening opening(0)="文章1" opening(1)="文章2" opening(2)="文章3" opening(3)="文章4" a=0 y=140 while (a<4) pos ginfo_winx/2-(strlen(opening(a))*(20/2))/2,y+20*a emes opening(a) pos 100 a=a+1 wend wait 30 repeat pos 440,380 font "HG丸ゴシックM-PRO",12,0 color 0,0,0 mes "画面をクリック!" onclick *jump wait 100 pos 389,354 celput opening3_id,0 wait 100 loop stop *jump click=0 if click<1{ if wparam&1{ click++ goto *main } } stop *fade1 buffer 1,720,540 pos 0,0 gcopy 0,0,0,720,540 gsel 0 repeat 257 redraw 0 color:boxf pos 0,0 gmode 3,,,256-cnt gcopy 1,0,0,720,540 wait 1 redraw 1 loop buffer 1,720,540 pos kyoushitsu_x,kyoushitsu_y celput kyoushitsu_id,0 pos mboxpos_x,mboxpos_y celput mbox_id,0 gsel 0 repeat 257 redraw 0 color:boxf gmode 3,,,cnt pos 0,0 gcopy 1,0,0,720,540 wait 1 redraw 1 loop return *fade2 buffer 1,720,540 pos 0,0 gcopy 0,0,0,720,540 gsel 0 repeat 257 redraw 0 color:boxf pos 0,0 gmode 3,,,256-cnt gcopy 1,0,0,720,540 wait 1 redraw 1 loop cls 4 buffer 1,720,540 pos kyoushitsu_x,kyoushitsu_y celput roka_id,0 pos mboxpos_x,mboxpos_y celput mbox_id,0 gsel 0 repeat 257 redraw 0 color:boxf gmode 3,,,cnt pos 0,0 gcopy 1,0,0,720,540 wait 1 redraw 1 loop return *main gosub *fade1 font "HG丸ゴシックM-PRO",25,1 ytxt(0)={" 文章 "} ytxt(1)={" 文章 "} mtxt(0)={" 文章 "} mtxt(1)={" 文章 "} mtxt(2)={" 文章 "} atxt(0)={" 文章 "} rtxt(0)={" 文章 "} rtxt(1)={" 文章 "} ・     ・     ・ rtxt(13)={" 文章 "} y=0 m=0 a=0 r=0 onclick goto *y1 *y1 pos kyoushitsu_x,kyoushitsu_y celput kyoushitsu_id,0 pos mboxpos_x,mboxpos_y celput mbox_id,0 wait 10 pos mespos_x,mespos_y text text_wait if y<3{ y+ split ytxt(y-1),"\n",sentence linemax=stat } if y=3{ y+ goto *m1 } if y>3{ goto *m1 } wait 40 b=0 while (b<linemax) emes sentence(b) wait 40 b=b+1 wend repeat pos mbox2pos_x,mbox2pos_y celput mbox2_id,0 wait 80 pos mbox2pos_x,mbox2pos_y celput mbox22_id,0 wait 80 loop stop *m1 pos kyoushitsu_x,kyoushitsu_y celput kyoushitsu_id,0 pos mboxpos_x,mboxpos_y celput mbox_id,0 wait 10 pos mespos_x,mespos_y text text_wait if m<4{ m+ split mtxt(m-1),"\n",sentence linemax=stat } if m=4{ m+ goto *a1 } if m>4{ goto *a1 } wait 40 b=0 while (b<linemax) emes sentence(b) wait 40 b=b+1 wend repeat pos mbox2pos_x,mbox2pos_y celput mbox2_id,0 wait 80 pos mbox2pos_x,mbox2pos_y celput mbox22_id,0 wait 80 loop stop *a1 pos kyoushitsu_x,kyoushitsu_y celput kyoushitsu_id,0 pos mboxpos_x,mboxpos_y celput mbox_id,0 wait 10 pos mespos_x,mespos_y text text_wait if a<2{ a+ split atxt(a-1),"\n",sentence linemax=stat } if a=2{ a+ gosub *fade2 ma+ goto *r1 } if a>2{ goto *r1 } wait 40 b=0 while (b<linemax) emes sentence(b) wait 40 b=b+1 wend repeat pos mbox2pos_x,mbox2pos_y celput mbox2_id,0 wait 80 pos mbox2pos_x,mbox2pos_y celput mbox22_id,0 wait 80 loop stop *r1 cls 4 pos kyoushitsu_x,kyoushitsu_y celput roka_id,0 pos mboxpos_x,mboxpos_y celput mbox_id,0 wait 10 pos mespos_x,mespos_y text text_wait if r<15{ r+ split rtxt(r-1),"\n",sentence linemax=stat } if r=15{ r+ goto *f1 } if r>15{ goto *f1 } wait 40 b=0 while (b<linemax) emes sentence(b) wait 40 b=b+1 wend repeat pos mbox2pos_x,mbox2pos_y celput mbox2_id,0 wait 80 pos mbox2pos_x,mbox2pos_y celput mbox22_id,0 wait 80 loop stop *f1


プログラムを実行して、進めていくと、
場面A→場面Bとなり、
場面Bで背景がroka.jpgになります。
しかし、場面Bでくりっくすると
場面Aの背景であるkyoushitsu.jpgが一瞬表示されます…



@key

リンク

2012/11/3(Sat) 04:57:45|NO.50433

まずそのスクリプトを実行すると233行目に全角があるのでエラー
それをとってもエラー
52行目のbuttonで指定したラベルがありません ていうか記述方法間違っている

それをとってもエラー
    一番の問題。こちらに画像ファイルはない


大方予想通りなのでプログラムを略するのはしょうがないと最初に言ったのですが、
画像を晒すきがあるなら画像込でどこかにzipをアップロードしてリンク貼りましょう

そうでなければ問題部分だけを貼るとか問題の部分の行を言うとか
自己解決するとかなにかしらしてくれないとこの見るだけでやる気が失せる長いスクリプト
を解決する気にはなれません



暇人

リンク

2012/11/3(Sat) 05:13:40|NO.50434

>進めていくと、
こうじゃなく具体的にクリック何回目とか
スクリプト側にこのcelputで画像が表示される前にこれが表示されるとか
画像も無くて直ぐに実行できないスクリプトなんだからさ・・・

先に*y1のcelput kyoushitsu_id,0で描画されてからgoto *m1で飛んでるのが原因

*y1 pos kyoushitsu_x,kyoushitsu_y celput kyoushitsu_id,0 pos mboxpos_x,mboxpos_y celput mbox_id,0 wait 10 pos mespos_x,mespos_y text text_wait if y<3{ y+ split ytxt(y-1),"\n",sentence linemax=stat } if y=3{ y+ goto *m1 } if y>3{ goto *m1 }
色々ややこしい事になってるから一度よく整理した方が良いかも
後デバッグの方法を考えた方が良い

今回使ったのは各ラベルの下に

title "ここに上行のラベルを書く"
って追加してみただけで、原因が分かった



ふぁる

リンク

2012/11/3(Sat) 05:46:48|NO.50435

>>@keyさん、暇人さん

申し訳ありませんでした。
もうちょっとちゃんと日本語を増やすべきでした。

そんな中でも教えてくださりありがとうございます。



ANTARES

リンク

2012/11/3(Sat) 10:39:44|NO.50436

>そうでなければ問題部分だけを貼るとか問題の部分の行を言うとか
 質問者の予想なんか見当違いに決まっているのに(そうでなければ質問なんかしない)、
何でそういう要求をするかなあ?
スクリプト全体を貼るのが解決の早道です。



KA

リンク

2012/11/3(Sat) 11:11:20|NO.50437

>>スクリプト全体を貼るのが解決の早道

いや、デバッグの方法を身につけると言う意味でも、部分的に確認出来
るスクリプトに出来る事が重要だと思いますが・・・。

逆に出来ないと言う事は、自分の作ったスクリプトの動作を理解してい
ないと言う事です。

それじゃいくら説明しても、その場限りの対処にしかならず、質問者の
ためにもならないでしょう。



check

リンク

2012/11/3(Sat) 14:14:40|NO.50438

じゃあ300行以上あるスクリプトでもANTARES氏は貼れっていうのか。
まずはどこが問題か自分で考えてみることが大切だろう。
質問しようとすることで、問題が整理できて解決しやすくなるかもしれないのだから。

まあ、あくまでこれは俺個人の意見だが。



ミント

リンク

2012/11/3(Sat) 19:49:24|NO.50452

んー物によると思うけど、症状だけを再現するスクリプトだけで300行とかいくのならいいと思う。
けど、一部の動作を見るだけのために、全て載せちゃうとよくわかんなくなっちゃう原因になるね。


例えば・・・「敵の配置を効率化したいです」っていうときに、
関係ない敵弾のソースがあると読みづらくなる。
もしかしたらその「敵弾」が原因で動かない場合があるので、必要最小限にとどめるとわかりやすいです。


自分も昔、質問したときはよくやってました。
理解するためにも部分的に見ると新しい発見があったり、読みやすくなるのでオススメです。
後はコメントを入れた方がいいかな。ぱっと見何の動作なのかわからないところあったのでコメント書くといいです。
画像に関しては「color 255,, : mes ""」みたいにすればわかりやすくなります。

けれどいっぺんにはできないはずなので、ゆっくりステップアップしましょう。



ふぁる

リンク

2012/11/4(Sun) 20:18:54|NO.50470

皆様、申し訳ありませんでした。
自分のプログラムへの理解度をあげるためにも、
質問時に丁寧に答えてくださる方々のためにも、

・デバッグの方法を身につける
・部分的に確認できるスクリプトにする(部分的に見る)
・コメントを書く

などを頑張っていこうと思います。
ご迷惑おかけしました。



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