设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3078|回复: 5
打印 上一主题 下一主题

[已经解决] 如何將對話圖像顯示在右邊?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
90 小时
注册时间
2016-1-17
帖子
5
跳转到指定楼层
1
发表于 2016-3-7 20:33:23 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
請問一下,該如何將對話圖像顯示在右邊?

擷取.PNG (128.23 KB, 下载次数: 5)

擷取.PNG

Lv1.梦旅人

梦石
0
星屑
50
在线时间
81 小时
注册时间
2016-1-6
帖子
150
6
发表于 2016-3-9 13:19:11 | 只看该作者
本帖最后由 seedj13 于 2016-3-9 13:21 编辑





评分

参与人数 1星屑 +60 收起 理由
king + 60 精品文章

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
81 小时
注册时间
2016-1-6
帖子
150
5
发表于 2016-3-9 13:13:07 | 只看该作者
今天又学了一点脚本,把昨天发的那个代码加了几句话,现在你可以自由切换头像在左或在右,只要你在对话内容里面加上<right>就行,最好把<wrap>也加上,这样的话能够自动换行,不至于出现头像被文字覆盖的情况。
该脚本原型是YED的Word Wrap,我只是添加了几句代码。
  1. /*:
  2. * Yami Engine Delta - Word Wrap
  3. *
  4. * @plugindesc This plugin provides word wrap feature, so that a long text
  5. * will be properly broken down into lines.
  6. * @author Yami Engine Delta [Dr.Yami]
  7. *
  8. * @param Break Word
  9. * @desc Allows unbreakable words to be broken.
  10. * @default true
  11. *
  12. * @param Right Face
  13. * @desc 允许对话框头像可以左右切换。(默认值改不改其实都起效。)
  14. * @default false
  15. *
  16. * @help
  17. * The word wrap isn't enabled by default. To activate word wrap in any text,
  18. * for example in Message, you have to put following code into the text:
  19. *
  20. * ------------
  21. *   <wrap>
  22. * ------------
  23. *
  24. * The word wrapper will nullify the break lines in editor, so that you have
  25. * to manually break line by using following code in text:
  26. *
  27. * ------------
  28. *   <br>
  29. * ------------
  30. *
  31. * 新添加的左右头像对话效果,需要在文本开头输入以下字符:
  32. * 如果不输入则默认头像在左侧。
  33. *
  34. * ------------
  35. *   <right>
  36. * ------------
  37. *
  38. * ============================================================================
  39. */

  40. /**
  41. * @namespace WordWrap
  42. * @memberof YED
  43. */

  44. var YED = YED || {};

  45. // init WordWrap module
  46. YED.WordWrap = {};

  47. YED.WordWrap.BreakWord
  48.     = PluginManager.parameters('YED_WordWrap')['Break Word'];
  49. YED.WordWrap.RightFace
  50.     = PluginManager.parameters('YED_WordWrap')['Right Face'];
  51.        
  52. (function($WordWrap) {
  53.     var _Window_Base_processNormalCharacter
  54.         = Window_Base.prototype.processNormalCharacter;
  55.     var _Window_Base_convertEscapeCharacters
  56.         = Window_Base.prototype.convertEscapeCharacters;
  57.                
  58.     var breakWord = eval($WordWrap.BreakWord);

  59.         Window_Message.prototype.drawMessageFace = function() {
  60.                 if (this._rightFace){
  61.                         this.drawFace($gameMessage.faceName(), $gameMessage.faceIndex(), Graphics.boxWidth-216, 0);//rightface
  62.                 }else{
  63.                         this.drawFace($gameMessage.faceName(), $gameMessage.faceIndex(), 0, 0);//leftface
  64.                 }
  65.         };

  66.         Window_Message.prototype.newLineX = function() {
  67.                 if (this._rightFace){
  68.                         return $gameMessage.faceName() === '' ? 0 : 0;//rightface
  69.                 }else{
  70.                         return $gameMessage.faceName() === '' ? 0 : 168;//leftface
  71.                 }
  72.         };
  73.        
  74.     Window_Base.prototype.textAreaWidth = function() {
  75.         return this.contentsWidth();
  76.     };

  77.     Window_Base.prototype.needWrap = function(textState) {
  78.         var c = textState.text[textState.index],
  79.             w = this.textWidth(c),
  80.             nextSpaceIndex = 0,
  81.             nextWord = "",
  82.             nextWidth = 0,
  83.             text = textState.text;

  84.         if (!this._wordWrap) {
  85.             return false;
  86.         }
  87.                
  88.                 if (this._rightFace){
  89.                         if (breakWord && (textState.x + w * 2) >= this.textAreaWidth()-144) {//rightface
  90.                                 textState.index--; // hack for missing character
  91.                                 return true;
  92.                         }
  93.                 }else{
  94.                         if (breakWord && (textState.x + w * 2) >= this.textAreaWidth()) {//leftface
  95.                                 textState.index--; // hack for missing character
  96.                                 return true;
  97.                         }
  98.                 }

  99.         if (!breakWord && c === " ") {
  100.             nextSpaceIndex = text.indexOf(" ", textState.index + 1);

  101.             if (nextSpaceIndex < 0) {
  102.                 nextSpaceIndex = text.length + 1;
  103.             }

  104.             nextWord = text.substring(textState.index, nextSpaceIndex);

  105.             nextWidth = this.textWidth(nextWord);
  106.                        
  107.                         if (this._rightFace){
  108.                                 if (textState.x + nextWidth >= this.textAreaWidth()-144) {//rightface
  109.                                         return true;
  110.                                 }
  111.                         }else{
  112.                                 if (textState.x + nextWidth >= this.textAreaWidth()) {//leftface
  113.                                         return true;
  114.                                 }
  115.                         }
  116.         }

  117.         return false;
  118.     };

  119.     Window_Base.prototype.convertEscapeCharacters = function(text) {
  120.         text = _Window_Base_convertEscapeCharacters.call(this, text);
  121.         text = this.convertWordWrapEscapeCharacters(text);

  122.         return text;
  123.     };

  124.     Window_Base.prototype.convertWordWrapEscapeCharacters = function(text) {
  125.         text = this.enableWordWrap(text);
  126.         
  127.         if (!!this._wordWrap) {
  128.             text = text.replace(/[\n\r]+/g, '');
  129.             text = text.replace(/\<br\>/gi, '\n');
  130.         }

  131.         return text;
  132.     };

  133.     Window.prototype.enableWordWrap = function(text) {
  134.         this._wordWrap = false;
  135.                 this._rightFace = false;

  136.         if (!!text.match(/\<wrap\>/i)) {
  137.             this._wordWrap = true;
  138.         }
  139.                 if (!!text.match(/\<right\>/i)) {
  140.             this._rightFace = true;
  141.         }

  142.         text = text.replace(/\<wrap\>/gi, '');
  143.                 text = text.replace(/\<right\>/gi, '');

  144.         return text;
  145.     };

  146.     Window_Base.prototype.processNormalCharacter = function(textState) {
  147.         if (this.needWrap(textState)) {
  148.             return this.processNewLine(textState);
  149.         }

  150.         _Window_Base_processNormalCharacter.call(this, textState);
  151.     };
  152. }(YED.WordWrap));
复制代码

点评

dwm
太感謝了!  发表于 2016-3-9 18:22

评分

参与人数 1星屑 +266 收起 理由
余烬之中 + 266 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
81 小时
注册时间
2016-1-6
帖子
150
4
发表于 2016-3-8 18:31:03 | 只看该作者

点评

难道楼主是想制作,两个人的对话,一个头在左边一个在右边,交替显示???  发表于 2016-3-8 19:56
哇....  发表于 2016-3-8 19:55
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
81 小时
注册时间
2016-1-6
帖子
150
3
发表于 2016-3-8 18:20:49 | 只看该作者
我也刚接触脚本,把YEP的Word Wrap改了一下,你把这个脚本打开后,在对话框的文本开头输入<wrap>,然后其他照旧,人物头像就显示在右边了。如果你左右都要使用的话,这个脚本还要改改,比如文本里插入一个关键字符,然后脚本识别为左边显示图片还是右边显示图片,我水平不够也不太会。
  1. /*:
  2. * Yami Engine Delta - Word Wrap
  3. *
  4. * @plugindesc This plugin provides word wrap feature, so that a long text
  5. * will be properly broken down into lines.
  6. * @author Yami Engine Delta [Dr.Yami]
  7. *
  8. * @param Break Word
  9. * @desc Allows unbreakable words to be broken.
  10. * @default false
  11. *
  12. * @help
  13. * The word wrap isn't enabled by default. To activate word wrap in any text,
  14. * for example in Message, you have to put following code into the text:
  15. *
  16. * ------------
  17. *   <wrap>
  18. * ------------
  19. *
  20. * The word wrapper will nullify the break lines in editor, so that you have
  21. * to manually break line by using following code in text:
  22. *
  23. * ------------
  24. *   <br>
  25. * ------------
  26. *
  27. * ============================================================================
  28. */

  29. /**
  30. * @namespace WordWrap
  31. * @memberof YED
  32. */

  33. var YED = YED || {};

  34. // init WordWrap module
  35. YED.WordWrap = {};

  36. YED.WordWrap.BreakWord
  37.     = PluginManager.parameters('YED_WordWrap')['Break Word'];

  38. (function($WordWrap) {
  39.     var _Window_Base_processNormalCharacter
  40.         = Window_Base.prototype.processNormalCharacter;
  41.     var _Window_Base_convertEscapeCharacters
  42.         = Window_Base.prototype.convertEscapeCharacters;

  43.     var breakWord = eval($WordWrap.BreakWord);

  44.         Window_Message.prototype.drawMessageFace = function() {
  45.                 this.drawFace($gameMessage.faceName(), $gameMessage.faceIndex(), Graphics.boxWidth-216, 0);//no -216
  46.         };

  47.         Window_Message.prototype.newLineX = function() {
  48.                 return $gameMessage.faceName() === '' ? 0 : 0;//168
  49.         };
  50.        
  51.     Window_Base.prototype.textAreaWidth = function() {
  52.         return this.contentsWidth();
  53.     };

  54.     Window_Base.prototype.needWrap = function(textState) {
  55.         var c = textState.text[textState.index],
  56.             w = this.textWidth(c),
  57.             nextSpaceIndex = 0,
  58.             nextWord = "",
  59.             nextWidth = 0,
  60.             text = textState.text;

  61.         if (!this._wordWrap) {
  62.             return false;
  63.         }

  64.         if (breakWord && (textState.x + w * 2) >= this.textAreaWidth()-144) {//no -144
  65.             textState.index--; // hack for missing character
  66.             return true;
  67.         }

  68.         if (!breakWord && c === " ") {
  69.             nextSpaceIndex = text.indexOf(" ", textState.index + 1);

  70.             if (nextSpaceIndex < 0) {
  71.                 nextSpaceIndex = text.length + 1;
  72.             }

  73.             nextWord = text.substring(textState.index, nextSpaceIndex);

  74.             nextWidth = this.textWidth(nextWord);

  75.             if (textState.x + nextWidth >= this.textAreaWidth()) {
  76.                 return true;
  77.             }
  78.         }

  79.         return false;
  80.     };

  81.     Window_Base.prototype.convertEscapeCharacters = function(text) {
  82.         text = _Window_Base_convertEscapeCharacters.call(this, text);
  83.         text = this.convertWordWrapEscapeCharacters(text);

  84.         return text;
  85.     };

  86.     Window_Base.prototype.convertWordWrapEscapeCharacters = function(text) {
  87.         text = this.enableWordWrap(text);
  88.         
  89.         if (!!this._wordWrap) {
  90.             text = text.replace(/[\n\r]+/g, '');
  91.             text = text.replace(/\<br\>/gi, '\n');
  92.         }

  93.         return text;
  94.     };

  95.     Window.prototype.enableWordWrap = function(text) {
  96.         this._wordWrap = false;

  97.         if (!!text.match(/\<wrap\>/i)) {
  98.             this._wordWrap = true;
  99.         }

  100.         text = text.replace(/\<wrap\>/gi, '');

  101.         return text;
  102.     };

  103.     Window_Base.prototype.processNormalCharacter = function(textState) {
  104.         if (this.needWrap(textState)) {
  105.             return this.processNewLine(textState);
  106.         }

  107.         _Window_Base_processNormalCharacter.call(this, textState);
  108.     };
  109. }(YED.WordWrap));
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
59 小时
注册时间
2016-2-13
帖子
86
2
发表于 2016-3-7 21:33:03 | 只看该作者
本帖最后由 CFRoo 于 2016-3-7 21:45 编辑

.............好吧,我也不晓得啦,刚才试验了一下,不是你要的

QQ截图20160307213202.png (48.3 KB, 下载次数: 10)

QQ截图20160307213202.png
我只是个热爱游戏的胖子
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-23 20:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表