0

sketchupでダイアログを表示するクラスを作ったのですが、Web ダイアログには 、 show、などのメソッドがありcloseます。このinitializeメソッドでは、Web ダイアログ オブジェクトを返し、次を呼び出します。

$loginUI=LoginUI.new
$loginUI.show # it tell me no this method

WebDialogメソッドを次のように書き換えないと、メソッドにアクセスして戻り値としてオブジェクトを取得できないのはなぜですか?

class LoginUI
  @@me=nil
  def initialize()
    @@me=intiLoginDlg()
    @@me.show()
    return @@me
  end
  def intiLoginDlg()
    @dl = UI::WebDialog.new("aaa", true, "bbb", 50, 50, 0, 0, false);
    #...do something
    return @dl
  end
  ################################# I must add this method to trigger it??
  def isShow()
    return @@me.visible?
  end
  def show()
    @@me.show
  end
  def close
    @@me.close
  end
end
4

1 に答える 1

1

あなたが何をしようとしているのか正確にはわかりませんが、あなたが探している魔法は単にこれだと思います:

class LoginUI < UI::WebDialog
  # initialize() and intiLoginDlg
end

これを行うと、次のようになります。

$loginUI=LoginUI.new
$loginUI.show

...期待どおりに動作するはずです。

サブクラス化の代わりにカプセル化を使用する別のはるかに高度な (そしておそらく過度に設計された!) ソリューションは、 を試すことmethod_missingです。

于 2013-11-12T04:15:14.937 に答える