找回密码
 点一下
查看: 1343|回复: 7

连接线——有角度的图片对话框项 弄不懂

[复制链接]
发表于 2014-1-21 13:08:41 | 显示全部楼层 |阅读模式
创建线条对话框项
    选项:函数
    返回类型:对话框项
    参数
        线条附着对话框 = 无对话框 <对话框>
        起点对话框 = 无对话框 <对话框>
        终点对话框 = 无对话框 <对话框>
    语法文本: 创建线条对话框项:在对话框(线条附着对话框)中,从起点对话框(起点对话框)到终点对话框(终点对话框)画一条线
    提示文本: (无)
    自定义脚本代码
    局部变量
        起点对话框位置X = 0.0 <实数>
        起点对话框位置Y = 0.0 <实数>
        终点对话框位置X = 0.0 <实数>
        终点对话框位置Y = 0.0 <实数>
        线条长 = 0.0 <实数>
        角度 = 0.0 <实数>
        线条 = 无对话框项 <对话框项>
    动作
        变量 -设置起点对话框位置X = (起点对话框的X偏移)
        变量 -设置起点对话框位置Y = (起点对话框的Y偏移)
        变量 -设置终点对话框位置X = (终点对话框的X偏移)
        变量 -设置终点对话框位置Y = (终点对话框的Y偏移)
        变量 -设置线条长 = ((点(起点对话框位置X,起点对话框位置Y))和(点(终点对话框位置X,终点对话框位置Y))之间的距离)
        综合 -If (条件) then do (动作) else do (动作)             ""不让线条与对话框重叠
            If
                起点对话框位置X==终点对话框位置X
            Then
                变量 -修改线条长:-40.0
            Else
                变量 -修改线条长:-60.0
        UI -为(所有玩家)将{线条长:(具有普通 位小数点的文本 (线条长) (执行使用分隔符, 精度值上限: 5 to 0))}显示到聊天区域
        对话框 -为对话框 线条附着对话框 创建一个图片, 其维度为((整数(线条长)), 5), 锚点在 中心, 偏移(0, 0), 并将说明条设为 "" 同时使用普通类型的图片Assets\Textures\zhakuldasobeliskdiffuse.dds, 贴图设为 真, 染色颜色为 白色, 混合模式为 普通
        对话框 -为(所有玩家)将(上一次创建的对话框项)移动到相对于对话框中心的((((整数(起点对话框位置X))+(整数(终点对话框位置X)))/2),(((整数(起点对话框位置Y))+(整数(终点对话框位置Y)))/2))
        变量 -设置角度 = ((点(起点对话框位置X,起点对话框位置Y))到(点(终点对话框位置X,终点对话框位置Y))之间的角度)
        对话框 -为(所有玩家)将(上一次创建的对话框项)旋转设为(整数(角度))
        综合 -返回(上一次创建的对话框项)

想实现的效果,就是天赋树里面的按钮之间的线条。
线条是出来了,但是位置和角度老是不对,改了很多遍了都不行。有时 线条长 还会出现负值,是衡量的单位不一样?求高手,该怎么弄。

发表于 2014-1-21 16:25:33 | 显示全部楼层
            If
                起点对话框位置X==终点对话框位置X
            Then
                变量 -修改线条长:-40.0
            Else
                变量 -修改线条长:-60.0

你是想X相等的时候减掉对话框的一个高的长度然后Y相等的时候减掉一个对话框的长度吗0 0
但是你这么写的意思是只要X不相等线条就减60吧。。。
你要不用If Then Else Multiple吧,
      If Then Else Multiple
        If
                起点对话框位置X==终点对话框位置X
           Then
                变量 -修改线条长:-40.0
        If
                起点对话框位置Y==终点对话框位置Y
           Then
                变量 -修改线条长:-60.0
回复

使用道具 举报

发表于 2014-1-21 17:32:31 | 显示全部楼层
天赋树的各个按钮应该是在同一个对话框里吧,这样把他们都单独创建为对话框是不是不太好的。

点评

本来是应该用对话框项的,但是每个按钮又附加图片,附加选中的效果图,还在旁边附加了文本,为了移动时方便,就变成对话框了,这应该不是主要问题吧?难道是有bug?还是要特别注意什么问题?  详情 回复 发表于 2014-1-21 20:25
回复

使用道具 举报

 楼主| 发表于 2014-1-21 20:25:41 | 显示全部楼层
七键守护神 发表于 2014-1-21 17:32
天赋树的各个按钮应该是在同一个对话框里吧,这样把他们都单独创建为对话框是不是不太好的。

本来是应该用对话框项的,但是每个按钮又附加图片,附加选中的效果图,还在旁边附加了文本,为了移动时方便,就变成对话框了,这应该不是主要问题吧?难道是有bug?还是要特别注意什么问题?

点评

为了移动方便你可以使用对话框项面板。  详情 回复 发表于 2014-1-23 08:32
回复

使用道具 举报

发表于 2014-1-22 10:27:43 | 显示全部楼层
本帖最后由 woaibusi 于 2014-1-22 10:30 编辑

用那么多对话框干啥~~~~
要用就用一个对话框
给你个我当时从项到项画线的函数吧,你自己应该会改,你把前4行设置起始和终点坐标的地方改为传入参数就好了,这是部分代码,你用不上的变量删掉即可,你主要学习下长度和角度的计算就好了,不明白问

        line_length = 0 <整数>
        from = src <整数>
        to = dst <整数>
        from_x = 0 <整数>
        from_y = 0 <整数>
        to_x = 0 <整数>
        to_y = 0 <整数>
        x_length = 0 <整数>
        y_length = 0 <整数>
        angle = 0.0 <实数>



        变量 -设置from_x = {ui_g_SeatData[from].SeatX+ui_width_height.play_width/2}
        变量 -设置to_x = {ui_g_SeatData[to].SeatX+ui_width_height.play_width/2}
        变量 -设置from_y = {ui_g_SeatData[from].SeatY+ui_width_height.play_height/2}
        变量 -设置to_y = {ui_g_SeatData[to].SeatY+ui_width_height.play_height/2}
        变量 -设置x_length = (to_x-from_x)
        变量 -设置y_length = (to_y-from_y)
        ------- 计算线长
        变量 -设置line_length = {x_length*x_length+y_length*y_length}
        变量 -设置line_length = (平方根((line_length/100)))
        变量 -设置line_length = (line_length*10)
        对话框 -UI-创建图片((组合("line_",(字符串((在0和9999之间的随机整数))))),GameUi,(整数(line_length)),5,左上,{(to_x-from_x)/2+from_x-line_length/2},{(to_y-from_y)/2+from_y},"blank.dds",普通,假,(91%, 72%, 9%),无文本)
        对话框 -为 (所有玩家) 将 (上一次创建的对话框项) 的渲染优先级设为 720
        对话框 -为(所有玩家)隐藏(上一次创建的对话框项)
        对话框 -为(玩家组(g_active_players[player_index].player_id))显示(上一次创建的对话框项)
        变量 -设置t = (上一次创建的对话框项)
        ------- 计算角度
        变量 -设置angle = (Atan2(x_length,y_length))
        对话框 -为(玩家组(g_active_players[player_index].player_id))将t旋转设为(整数(angle))

回复

使用道具 举报

发表于 2014-1-22 10:29:40 | 显示全部楼层
本帖最后由 woaibusi 于 2014-1-22 10:31 编辑

"对话框 -UI-创建图片"这个是我的函数...无视那个ID相关的就好

UI-创建图片
    选项:动作
    返回类型:(无)
    参数
        ID = "" <字符串>
        对话框 = (上一次创建的对话框) <对话框>
        宽度 = 0 <整数>
        高度 = 0 <整数>
        附着到锚点 = 中心 <锚点>
        偏移X = 0 <整数>
        偏移Y = 0 <整数>
        图片 = "" <字符串>
        图形类型 = 普通 <图形类型>
        贴图 = 假 <布尔>
        颜色 = 白色 <颜色>
        提示条 = 无文本 <文本>
    语法文本: UI-创建图片(ID,对话框,宽度,高度,附着到锚点,偏移X,偏移Y,图片,图形类型,贴图,颜色,提示条)
    提示文本: (无)
    自定义脚本代码
    局部变量
    动作
        对话框 -为对话框对话框创建一个图形
        对话框 -为(所有玩家)将(上一次创建的对话框项)的尺寸大小设为(宽度,高度)
        对话框 -为(所有玩家)将(上一次创建的对话框项)移动到相对于对话框附着到锚点的(偏移X,偏移Y)
        综合 -If (条件) then do (动作) else do (动作)
            If
                Or
                    条件
                        (图片在任意位置包含"Assets/Textures/" (灵敏性 大小写))==真
                        (图片在任意位置包含"Assets\Textures\" (灵敏性 大小写))==真
            Then
                对话框 -为(所有玩家)将(上一次创建的对话框项)图片设为(图片文件(图片))
            Else
                对话框 -为(所有玩家)将(上一次创建的对话框项)图片设为(图片文件((组合("Assets/Textures/",图片))))
        对话框 -为(所有玩家)将(上一次创建的对话框项)图片类型设置为图形类型
        对话框 -为 (所有玩家) 将 (上一次创建的对话框项) 贴图标旗设为 贴图
        对话框 -为(所有玩家)将(上一次创建的对话框项)的颜色设为颜色
        综合 -If (条件) then do (动作) else do (动作)
            If
                (游戏正在运行手动测试)==真
            Then
                对话框 -为(所有玩家)将(上一次创建的对话框项)的说明条设为(文本(ID))
            Else
                对话框 -为(所有玩家)将(上一次创建的对话框项)的说明条设为提示条
        对话框 -为(所有玩家)将(上一次创建的对话框项)的说明条设为提示条

回复

使用道具 举报

 楼主| 发表于 2014-1-22 12:39:14 | 显示全部楼层
创建线条对话框项
    选项:函数
    返回类型:对话框项
    参数
        线条附着对话框 = 无对话框 <对话框>
        起点对话框项 = 无对话框项 <对话框项>
        终点对话框项 = 无对话框项 <对话框项>
    语法文本: 创建线条对话框项:在对话框(线条附着对话框)中,从起点对话框(起点对话框项)到终点对话框(终点对话框项)画一条线
    提示文本: (无)
    自定义脚本代码
    局部变量
        起点位置X = 0 <整数>
        起点位置Y = 0 <整数>
        终点位置X = 0 <整数>
        终点位置Y = 0 <整数>
        线条长 = 0 <整数>
        角度 = 0 <整数>
    动作
        变量 -设置起点位置X = (1的起点对话框项的X偏移)
        变量 -设置起点位置Y = (1的起点对话框项的Y偏移)
        变量 -设置终点位置X = (1的终点对话框项的X偏移)
        变量 -设置终点位置Y = (1的终点对话框项的Y偏移)
        变量 -设置线条长 = (整数(((点(起点位置X,起点位置Y))和(点(终点位置X,终点位置Y))之间的距离)))
        变量 -设置角度 = (整数(((点(起点位置X,起点位置Y))到(点(终点位置X,终点位置Y))之间的角度)))
        UI -为(所有玩家)将{<c val="FF0000">线条长:(文本(线条长))  角度:(文本(角度)) </c> <c val="80FF00">起点X(文本(起点位置X))  终点X:(文本(终点位置X))  起点Y:(文本(起点位置Y))  终点Y:(文本(终点位置Y))</c>}显示到聊天区域
        对话框 -为对话框 线条附着对话框 创建一个图片, 其维度为((整数(线条长)), 5), 锚点在 中心, 偏移(0, 0), 并将说明条设为 "" 同时使用普通类型的图片Assets\Textures\zhakuldasobeliskdiffuse.dds, 贴图设为 真, 染色颜色为 橙色, 混合模式为 普通
        对话框 -为 (所有玩家) 将 (上一次创建的对话框项) 的渲染优先级设为 720
        对话框 -为(所有玩家)将(上一次创建的对话框项)移动到相对于起点对话框项的中心(距离中心)的(((起点位置X+终点位置X)/2),((起点位置Y+终点位置Y)/2))
        对话框 -为(所有玩家)将(上一次创建的对话框项)旋转设为角度
        综合 -返回(上一次创建的对话框项)

听从建议,都改成对话框项了。
流程应该没问题了,就是好像获取不到对话框项的绝对位置(X和Y的值都是40、80、180,这都是我定位对话框项用的数,每一项都是根据上一项偏移的)。搞不定了。

回复

使用道具 举报

发表于 2014-1-23 08:32:04 | 显示全部楼层
flylicat 发表于 2014-1-21 20:25
本来是应该用对话框项的,但是每个按钮又附加图片,附加选中的效果图,还在旁边附加了文本,为了移动时方 ...

为了移动方便你可以使用对话框项面板。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 10:29 , Processed in 0.198241 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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