赞 | 170 |
VIP | 6 |
好人卡 | 208 |
积分 | 230 |
经验 | 137153 |
最后登录 | 2024-11-18 |
在线时间 | 8639 小时 |
Lv5.捕梦者
- 梦石
- 0
- 星屑
- 22973
- 在线时间
- 8639 小时
- 注册时间
- 2011-12-31
- 帖子
- 3367
|
本帖最后由 tseyik 于 2019-7-5 11:21 编辑
http://ktnhmv.jugem.jp/?eid=21
2016.03.19 Saturday
マップ上に常に情報ウィンドウを表示する
文章中的附件己失
InfoWindow.zip
(1005 Bytes, 下载次数: 198)
■補足説明
13~33行目
// マップ上に表示する宣言/地圖上顯示的宣言
var Scene_map_start = Scene_Map.prototype.start;
Scene_Map.prototype.start = function() {
Scene_map_start.call(this);
this._InfoWindow = new Window_Info();
this.addWindow(this._InfoWindow);
};
// ウィンドウ内の情報を更新するタイミングを宣言/何時更新窗口中的信息宣言
var _Scene_Map_update = Scene_Map.prototype.update;
Scene_Map.prototype.update = function() {
_Scene_Map_update.call(this);
this._InfoWindow.setText();
};
// ウィンドウを定義/定義窗口
function Window_Info() {
this.initialize.apply(this, arguments);
}
Window_Info.prototype = Object.create(Window_Base.prototype);
Window_Info.prototype.constructor = Window_Info;
この部分は全く変更する必要はありません。
上のJavascriptさんの返事でいうと(1)~(3)の部分にあたります。
たとえば「addWindow」という語がありますよね。addは追加、Windowはそのままウィンドウ、なので「Scene_Map」「start」「addWindow」という三つの語を拾い出せば、「マップが開始されたらウィンドウを画面上に追加する」という様な意味合いになる事は分かると思います。
ちなみに赤字の_Infoは全て共通にすれば変更しても問題無いです。Window_Otakaraとかでも構いません。
以上部分沒有必要改變。
它對應於上述Javascript答案中的(1)至(3)部分。
例如,有“addWindow”這個詞。 add是添加,Window是一個窗口,
所以如果你選擇三個單詞“Scene_Map”,“start”和“addWindow”,
這意味著“我將在地圖啟動時在屏幕上添加一個窗口”的意義 相信很清楚了。
36~42行目
Window_Info.prototype.initialize = function() {
var x = 20;
var y = 20;
var width = 180;
var height = 108;
Window_Base.prototype.initialize.call(this, x, y, width, height);
};
ここで、情報ウィンドウの位置調整と、大きさ調整です。
var x = 20、var y = 20は、「画面上のx座標20、y座標20の位置にウィンドウを表示するよ」という意味です。単位はピクセルです。つまり、こういう事ですね。
這是信息窗口的位置調整和大小調整。
“var x = 20,var y = 20”表示“在x坐標20的位置顯示窗口,在屏幕上顯示y坐標20”。 單位是像素。
“width = 180;var height = 108“;窗口180×108
通過拍攝遊戲畫面的屏幕截圖,將其粘貼到繪圖軟件上,
然後實際繪製想要創建的窗口,可以輕鬆計算出所需的位置,寬度和高度。
然後它飛了一點,49-56線。
最後,我們將研究如何製作信息窗口的內容。
Window_Info.prototype.refresh = function() {
this.contents.clear();
this.changeTextColor(this.textColor(16));
this.drawIcon(210, 1, 1);
this.drawText("拾った宝箱",40, 1);
this.resetTextColor();
this.drawText($gameVariables.value(2) + " 個",0,this.lineHeight());
};
首先,
this.contents.clear();
最初にこれ書かないと、更新前の文字が残ったままになります。カウントアップさせる場合だと「1」の字の上に「2」が重なったりして、ものすごい事になります。
如果您不先寫入此內容,則會保留更新前的字符。 在在那情況下,“2”會疊加在“1”字符上,這將是大問題
this.changeTextColor(this.textColor(16));
這意味著將文本從下一個更改為第16個顏色(淺藍色)。
如果默認顏色沒問題,可以不需要此行。
t順便說一下,顏色值是項目文件夾中img / system / Window.png的右下方顏色組。
例如,如果你想要橙色,his.textColor(2)です。
this.drawIcon(210, 1, 1);
アイコンを表示させます。210番のアイコンをx座標1、y座標1の位置に表示させよという意味です。
上の例では宝箱のアイコンを表示させていますが、宝箱アイコンはアイコン群のID210番です。
イベント「文章の表示」で、入力ウィンドウ内を右クリックするとアイコンビューアが出せますが、そこでアイコンを選択した時にIDが下に表示されると思います。その数値です。
this.drawText("拾った宝箱",40, 1);
「拾った宝箱」というテキストをx座標40、y座標1の位置に表示させよという意味です。
なぜ40かと言うと、すぐ手前で表示させたアイコン分の幅と少しの余白分を入れたものです。
これを1にすると宝箱アイコンと位置がかぶってしまいますからね。
アイコンの幅を変数で自動取得するという事も可能ですが、手動で数値を入れて色々いじってもらった方が感覚がつかみやすいと思いましたので、カットします。
this.resetTextColor();
16番の色で表示させていた配色を、デフォルトの色に戻す時に使います。これを入れればウィンドウの途中で変えていた色を元に戻せます。たとえば3行のテキストで、1行ごとに色が変わる場合は、this.resetTextColor()を2回書かなくてはいけません。
this.drawText($gameVariables.value(2) + " 個",0,this.lineHeight());
再び、drawTextが出て来ましたね。
これが今回の情報ウィンドウの肝です。
最初のdrawTextが1行目であれば、次のdrawTextは2行目。
2行目に $gameVariables.value(2)+「個」という文字列を、x座標0、y座標は1行分空けた位置に表示させよという意味です。
$gameVariables.value(2)は変数ID2番の値を取得するためのものです。
変数ID2には最初で説明しました、「宝箱の取得数」が格納されています。
宝箱の数値が入り、そのあとに「個」という文字が入る。
こうする事で1個とった時は「1個」と画面上に表示されるわけですね。
ちなみにこの$gameVariables.value(ID)の部分、
たとえば画面上に総プレイ時間を表示させたい場合は
$gameSystem.playtimeText()
と書きます。
|
评分
-
查看全部评分
|