GameMaker 日本語掲示板

draw_text_ext()のワードラップを日本語に対応させたい! / 5

5 コメント
views
16 フォロー
5

公式が用意してくれるなら不要かもですが、昔作った自動改行(正確には文字列分割して、for文で draw_text() する想定) のスクリプトを添付しておきますね。

分割文字 (sep) が見つかればそれで改行 (分割) できますし、warpに文字の幅を指定すれば string_width() で文字幅を計算して改行するようにできます。

/// @description 文字列分割 (自動折返し).
/// @param str 分割する文字列
/// @param sep 分割文字
/// @param wrap 分割する幅
/// @return 分割された文字列 (array 1d)
function string_split2(argument0, argument1, argument2) {

	var str  = argument0; // source string.
	var sep  = argument1; // seperate string.
	var wrap = argument2; // wrap width.

	// 戻り値.
	var ret = [];
	var s = ""; // 切り出し中の文字列.
	var idx = 0; // 文字の位置.
	while(true) {
		var s2 = string_char_at(str, 1);
		if(s2 == sep) {
			// 分割文字.
			ret[idx] = s;
			idx++;
			s = "";
		}
		else if(string_width(s + s2) > wrap) {
			// 自動折返し.
			ret[idx] = s;
			idx++;
			s = s2;
		}
		else {
			s += s2;
		}
		str = string_copy(str, 2, 65535);
		if(string_length(str) <= 0) {
			// 終わり.
			if(string_length(s) > 0) {
				// 空文字でないので追加
				ret[idx] = s;
			}
			break;
		}
	}
	
	// 返却する.
	return ret;
}
通報 ...