2016-12-19 6 views
2

Renpyは、say statementを使用して画面に表示されるテキストを表示するために、多くのPythonとカスタム作成のコードを使用します。レンピーで印刷するテキストの高さを事前に計算することはできますか?

renpyでnvl modeで問題が発生した後、自然にフォントサイズとテキストウィンドウのサイズを考慮して、いくつの行が表示されるのかを知る必要があります。

だから私の質問:私はそれに関してのドキュメントには何も見つかりませんでしたとして任意のコマンドまたはあるテキストの高さを事前計算するために、他の可能性がある場合、私は思ったんだけど

表示するには?

+0

仮想テキストサイズがあるようです。この[コミット](https://github.com/renpy/renpy/commit/7462532a77bc218ffe369990a28f86f1ee173599)は何らかの形で役に立ちますか? – rocksteady

+0

@rocksteadyは、get_virtual_layoutを呼び出すことによって使用されますか? – Thomas

+0

そうだと思います。その上で '.width'や' .height'を使うことができます。私が理解する限り、それはそれを印刷する前にテキストサイズを計算するために使用されます。 – rocksteady

答えて

0

get_virtual_layout()は、class Textの部分がtext.pyである。

私はtext.pyからこれをコピー:

# Find the virtual-resolution layout. 
virtual_layout = self.get_virtual_layout() 
# The laid-out size of this Text. 
vw, vh = virtual_layout.size 

これは有望に見える、私は思います。

仮想テキストサイズ(幅、高さ)を使用すると、テキストウィンドウのサイズ(幅、高さ)を使用してテキスト行を計算できます。

pseudo code: 
lines = int(vw/text_window.width) 
#the text height would then be 
text_height_needed = int(lines*vh) 
# does it fit in completely 
complete_text_in_window = text_window.height >= text_height_needed 
# visible lines 
visible_lines = int(text_window.height/vh) 

また、virtual_layoutの使用を知ってもらうために、text.py(例えばdef render(self, width, height, st, at))でより深く見てみる価値があります。

何とかして助けてくれることを願っています。

更新

def render(...)のでget_virtual_layout()もうなしておりません、仮想レイアウトを初期化するが、スケーリングされた幅と高さLayout()のインスタンスを表します。

+0

get_virtual_layoutだけでは十分ではありません($ r = x.get_virtual_layout()$ 15 = $ rv = rv.size – Thomas

+0

'def – rocksteady

+0

Yeppのステップは次のとおりです:$ x = Text( "blah")#$ x.render(300,300,0,0) #$ rv = x.get_virtual_layout()レンダリング(...) #$ vw、vh = rv.size – Thomas

関連する問題