2009年11月10日

Rubyの勉強17補足(画面のちらつき解決)

やっぱり自分はまだまだ初心者です(汗)
昨日の記事の訂正と補足です。

サンプルの 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)

__________________________

マウスを動かすと座標が表示されます。

zahyou_tes1.jpg
(画面の見本です。動きません)

今回もどこか間違ってたら暖かいツッコミをお願いいたします


人気ブログランキングに参加してます。
ポチッ!としてくださると嬉しいです。
にほんブログ村 IT技術ブログ プログラム・プログラマへ
にほんブログ村

 
posted by Hol_nice at 18:04| Comment(0) | TrackBack(0) | プログラム | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください

この記事へのトラックバック