昨日の記事の訂正と補足です。
サンプルの def self_mousemove 内の処理(画像の変更)で画面がちらつくということを書きましたが、
self.refresh の扱いが原因でした。
vrubyのプログラムって基本的にそれ自体が無限ループしてるようなものですから
常にマウスポインタの座標をチェックするような命令の中に漠然とself.refreshなんて書いたら
高速で毎回画像を描画しなおしちゃいますもんね。
たぶんこれが原因かと。
で、以下のように書き換えて(一部追記)してみました。
確実に画像が変更された場合のみ self.refresh します。
__________________________
def self_mousemove(shift,x,y)
a = @bmpc
if 20 < x and x < 100 and 40 < y and y < 120
@bmpc = 1
else
@bmpc = 0
end
self.refresh if a != @bmpc
end
__________________________
実行してみたところちらつきが無くなりました。
自分のせいでした、ごめんなさい(滝汗)
ついでに、def self_mousemove(shift,x,y) のx,yがマウスのポインタから座標情報を得ているというのを
視覚的に認識したくて書いたものを示します。
__________________________
#! ruby -Ks
require'vr/vruby'
require 'vr/vrcontrol'
require 'vr/vrhandler'
class ZhForm < VRForm
include VRMouseFeasible
def construct
self.caption = 'zahyou_test'
@font = @screen.factory.newfont('MS Pゴシック', 12)
addControl(VREdit,'zh_areas','0',30,10,100,20)
@zh_areas.setFont(@font)
end
def self_mousemove(shift,x,y)
@zh_areas.text = "x #{x} ,y #{y}"
end
end
VRLocalScreen.start(ZhForm,100,100,200,300)
__________________________
マウスを動かすと座標が表示されます。
(画面の見本です。動きません)
今回もどこか間違ってたら暖かいツッコミをお願いいたします
人気ブログランキングに参加してます。
ポチッ!としてくださると嬉しいです。
にほんブログ村