Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2009-04-30

マウスが乗った選択肢の色を変えるよ!

| 00:13

 マウスが選択肢に乗ったら、色が変わるようにしたいですよね!

 内容には直接かかわりませんが、見た目には大きく影響しますよね。

 これあると、ぐっとそれっぽくなるっていうか?

 ゲームに限らず、いろんなものでフツーに行われていますけど、実際のところどうやってんの?

 objにマウス乗った時~みたいなイベントがあるかと思いきや無かったので、マウス動かした時~を使うしかないね(たぶん)

 と言うわけで、とりあえずやっつけで作ったのがこんな感じ。

#------------------------------------------------------------
*マウス判定
  もし、マウス待ち=「オンならば
    母艦マウス移動した時は
      数を0から3まで繰り返す
        もし、(母艦のマウスX>選択板x)かつ
        (母艦のマウスY>選択板y+(選択板高さ+選択板隔)*数)かつ
        (母艦のマウスX<選択板x+選択板幅)かつ
        (母艦のマウスY<選択板y+選択板高さ+(選択板高さ+選択板隔)*数)ならば
#          もし、前マウス位置=数でなければ

            数で条件分岐
              0ならば
                番号色=$FFAAAA
              1ならば
                番号色=$AAAAFF
              2ならば
                番号色=$FFDDAA
              3ならば
                番号色=$AAFFAA
    
            塗り色は番号色。線太さは2
            母艦の選択板x,選択板y+(選択板高さ+選択板隔)*数から選択板x+40,選択板y+選択板高さ+(選択板高さ+選択板隔)*数へ 
            文字サイズは24。文字色白色。
            母艦の26,選択板y+4+(選択板高さ+選択板隔)*数へ数+1を文字描画。
            前マウス位置=数
            抜ける


        違えば
          もし、数=3ならば
            前マウス位置で条件分岐
              0ならば
                番号色=$BB0000
              1ならば
                番号色=$0000AA
              2ならば
                番号色=$EE8800
              3ならば
                番号色=$00AA00
   
            塗り色は番号色。線太さは2                
            母艦の選択板x,選択板y+(選択板高さ+選択板隔)*前マウス位置から選択板x+40,選択板y+選択板高さ+(選択板高さ+選択板隔)*前マウス位置へ 
            文字サイズは24。文字色白色。
            母艦の26,選択板y+4+(選択板高さ+選択板隔)*前マウス位置へ前マウス位置+1を文字描画。
#-------------------------------------------------------------

 なんだか分からんが、動作がおかしい~。

 とりあえず、マウスが乗ったときに色が変わるほうは、それらしく動いていますが・・・

 何で、直前で文字色やサイズを指定してるのに、違う色やサイズで数字が入りますか;

 あと、マウス押す前に、マウスが乗ってるだけで、あたりとか外れになっちゃうときもあるみたいだ。


 それと、本当は入ったときと出たときだけ判ればいいんだけど、これだとマウスが動きってるの全てイベント発生してしまうから、すっごく無駄に頑張っているんじゃないかな?

 選択肢の内部でマウスがちょっと動いたときも、きっと同じ色にわざわざ塗りなおしているんだよね?

 できれば必要ないときは何もしないようにしたいよね。。。


 汎用性のある関数を、作りたいトコですが・・・

 最初に考えていたように、イメージ部品などを配置してそれぞれのイベントをとるのがいいか、みたく母艦に全てコピーして母艦の座標で判断するのがいいのかも、考え中・・・

 

ゲスト



トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20090430