骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 小黑盒加速器
查看: 750|回复: 5

[经验与教程] 【意!悟!】关于在presentation中的换行问题

[复制链接]

15

主题

139

回帖

151

积分

见习骑士

Rank: 3

UID
3048044
第纳尔
2026
精华
0
互助
17
荣誉
2
贡献
20
魅力
284
注册时间
2018-12-15
鲜花(30) 鸡蛋(0)
发表于 2023-6-13 19:46:30 | 显示全部楼层 |阅读模式
众所周知prsnt中想要实现文本换行一般需要通过两个渠道,一个是设置了scrollable的create_text_overlay,另一种情况需要在一个范围按照代码生成文本的情况下,会先text overlay设为container之后,再进行接下来的生成,但是(划重点),制造container之后,除了这个文本本体之外那些需要换行的文本,并不会直接换行,也就是说你还需要在container内部继续create有scrollable标签的create_text_overlay,但在创造这种带crollable标签的内容时,由于这个情况下,直接设置是不会在范围内自动换行的(疑似是边框不被视为边缘而不触发),因此我们实际上还需要创造一个overlay_set_area_size限制才能让这个东西在container内部完成换行。我一开始做的时候以为触及边缘是可以直接触发换行的导致大脑进行了多次0_o?之后想到用overlay_set_area_size,再然后对了一小会position之后才想起来这个areasize本质是从左下角算起的一个长方体,根据我的理解代码的运作应该达到以下效果
上一条文本
[areasize内部的文本开始(假设我们设置了50的范围,但文字只有一行)]


[areasize内部的文本结束(假设我们设置了50的范围,但文字只有一行)]
下一条文本

由于实际上这个从左下角开始计算的框架而不是左上角,因此实际上在container内部的记录应该areasize是多少就先减少多少的y轴变量而不是直接按照正常情况扣除每行之间的变量数值,不然你会得到堆重叠的文本,折腾了我整整半小时才想起来areasize是个从左下角算起的矩形。
不过说到现在我还是没搞懂为什么container设置了areasize和普通size之后文字触碰边缘不触发换行,意义不明了属于是

分享完小经验再发个便宜脚本,能有效降低各位写presentation中动脑量
  1. ("fix_position",
  2.   [
  3.   
  4.     (store_script_param, ":pos_x", 1),
  5.     (store_script_param, ":pos_y", 2),
  6.     (store_script_param, ":pos_t", 3),

  7.     (try_begin),
  8.       (eq,":pos_t", 1),
  9.       (position_set_x, pos1, ":pos_x"),
  10.       (position_set_y, pos1, ":pos_y"),
  11.      (else_try),
  12.       (eq,":pos_t", 2),
  13.       (position_set_x, pos2, ":pos_x"),
  14.       (position_set_y, pos2, ":pos_y"),
  15.      (else_try),
  16.       (eq,":pos_t", 3),
  17.       (position_set_x, pos3, ":pos_x"),
  18.       (position_set_y, pos3, ":pos_y"),
  19.      (else_try),
  20.       (eq,":pos_t", 4),
  21.       (position_set_x, pos4, ":pos_x"),
  22.       (position_set_y, pos4, ":pos_y"),
  23.      (else_try),
  24.       (eq,":pos_t", 5),
  25.       (position_set_x, pos5, ":pos_x"),
  26.       (position_set_y, pos5, ":pos_y"),
  27.      (else_try),
  28.       (eq,":pos_t", 6),
  29.       (position_set_x, pos6, ":pos_x"),
  30.       (position_set_y, pos6, ":pos_y"),
  31.      (else_try),
  32.       (position_set_x, pos0, ":pos_x"),
  33.       (position_set_y, pos0, ":pos_y"),
  34.      (else_try),     
  35.     (try_end),
  36.      ]),
复制代码

槽位觉得不够可以自行添加

评分

参与人数 1第纳尔 +10 魅力 +1 收起 理由
agjib + 10 + 1 您的帖子很有价值!

查看全部评分

29

主题

690

回帖

551

积分

骑士

Rank: 4Rank: 4

UID
3322408
第纳尔
1738
精华
0
互助
67
荣誉
0
贡献
0
魅力
4
注册时间
2022-2-3
鲜花(55) 鸡蛋(0)
发表于 2023-6-13 22:36:51 来自手机 | 显示全部楼层
蛮怪的,我以前怎么没碰到过这种area设了又设的情况。来自: Android客户端

16

主题

586

回帖

326

积分

见习骑士

Rank: 3

UID
3102512
第纳尔
2380
精华
0
互助
29
荣誉
0
贡献
0
魅力
63
注册时间
2019-9-6

骑砍中文站APP会员勋章战团正版勋章霸主正版勋章

鲜花(51) 鸡蛋(0)
发表于 2023-6-13 23:39:37 来自手机 | 显示全部楼层
有个叫宇宙人的小子一直在发你的帖子,刚刚被我超市了来自: Android客户端

15

主题

139

回帖

151

积分

见习骑士

Rank: 3

UID
3048044
第纳尔
2026
精华
0
互助
17
荣誉
2
贡献
20
魅力
284
注册时间
2018-12-15
鲜花(30) 鸡蛋(0)
 楼主| 发表于 2023-6-14 14:58:10 | 显示全部楼层
huagao 发表于 2023-6-13 23:39
有个叫宇宙人的小子一直在发你的帖子,刚刚被我超市了

cancanneed

78

主题

969

回帖

824

积分

子爵[版主]

中级术士

Rank: 7Rank: 7Rank: 7

UID
1439773
第纳尔
22533
精华
1
互助
34
荣誉
24
贡献
310
魅力
160
注册时间
2013-7-4

元老骑士勋章

鲜花(2368) 鸡蛋(2)
发表于 2023-6-14 16:17:44 | 显示全部楼层
其实 position 可以通过变量传递的,全部可以改为 (position_set_x,":pos_t",":pos_x"),(position_set_y,":pos_t",":pos_y"),

15

主题

139

回帖

151

积分

见习骑士

Rank: 3

UID
3048044
第纳尔
2026
精华
0
互助
17
荣誉
2
贡献
20
魅力
284
注册时间
2018-12-15
鲜花(30) 鸡蛋(0)
 楼主| 发表于 2023-6-15 11:31:43 | 显示全部楼层
V宁静de夜晚V 发表于 2023-6-14 16:17
其实 position 可以通过变量传递的,全部可以改为 (position_set_x,":pos_t",":pos_x"),(position_set_y,": ...

我只是单纯的懒()
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2024-4-30 20:01 , Processed in 0.081216 second(s), 25 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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