找回密码
 点一下
查看: 3360|回复: 8

在WE中就能实现RGB颜色代码!顺便帮忙优化下这几个函数

[复制链接]
发表于 2007-2-13 18:01:16 | 显示全部楼层 |阅读模式
[codes=jass]function NUM16 takes integer i  returns string
    if i<10 then
        return I2S(i)
    elseif i==10 then
        return "a"
    elseif i==11 then
        return "b"
    elseif i==12 then
        return "c"
    elseif i==13 then
        return "d"
    elseif i==14 then
        return "e"
    endif
        return "f"
endfunction                           
function NUM256 takes integer i returns string
    local integer a = ModuloInteger(i,16)
    local integer b = (i-a)/16
    return NUM16(b)+NUM16(a)
endfunction
function ColorString takes integer alpha,integer red,integer green,integer blue,string s returns string
    return"|c"+NUM256(alpha)+NUM256(red)+NUM256(green)+NUM256(blue)+s+"|r"
endfunction       [/codes]

评分

参与人数 1威望 +2 收起 理由
白银の游戏王 + 2

查看全部评分

发表于 2007-2-13 21:12:52 | 显示全部楼层
其实像这类不会短时间大量调用滴函数基本不用再优化料...
一定优化的话就是减少函数调用开销料...
回复

使用道具 举报

发表于 2007-2-13 21:32:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 发表于 2007-2-14 01:11:23 | 显示全部楼层
everguo的膜拜
好幸福哦...........
回复

使用道具 举报

发表于 2007-2-14 02:15:42 | 显示全部楼层
建议给于威望奖励
回复

使用道具 举报

发表于 2007-2-15 02:20:35 | 显示全部楼层
很好啊,应该不需要再优化了吧?
回复

使用道具 举报

 楼主| 发表于 2007-2-17 21:52:41 | 显示全部楼层

[拓展]在WE中就能实现RGB颜色代码!

上次写了个在WE中改变字符串颜色的函数,这次做了一些注释,
让新手看懂。并增加了一个函数:颜色渐变字符串
[codes=jass]
//====================================================
//=       以下为十进制与十六进制的转化
//====================================================
function NUM16 takes integer i  returns string
    if i<10 then
        return I2S(i)
    elseif i==10 then
        return "a"
    elseif i==11 then
        return "b"
    elseif i==12 then
        return "c"
    elseif i==13 then
        return "d"
    elseif i==14 then
        return "e"
    endif
    return "f"
endfunction

function NUM256 takes integer i returns string
    local integer a = ModuloInteger(i,16)
    local integer b = (i-a)/16
    if i >255 then
        return "ff"
    elseif i<0 then
        return "00"
    else
        return NUM16(b)+NUM16(a)
    endif
endfunction
//====================================================
//=       以下是改变字符串函数的代码
//====================================================
function ColorString takes integer alpha,integer red,integer green,integer blue,string s returns string
    return"|c"  + NUM256(alpha) + NUM256(red) + NUM256(green) + NUM256(blue) + s + "|r"
    //   以上分别是 标识符 alpha通道 红色通道 绿色通道 蓝色通道 字符串和结束符
endfunction
//====================================================
//=       以上为渐变颜色的字符串的代码
//====================================================
function MagicString takes integer A,integer a,integer R,integer r,integer G,integer g,integer B,integer b,string s returns string
    //大写的参数为起始数值,小写的参数为结束数值
    //没办法,参数太多了
    local integer alpha = A-a
    local integer red =R-r
    local integer green =G-g
    local integer blue=B-b
    //上面的变量为各个通道的起始差值
    local integer strlgth=StringLength(s)
    local integer i
    local string str
    loop
        set i = i+1
        exitwhen i>strlgth
        set str=str+ColorString((alpha*i/strlgth+A),(red*i/strlgth+R),(green*i/strlgth+G),(blue*i/strlgth+B),SubString(s,i,i)
    endloop
    return str
endfunction
[/codes]
家里的魔兽安装1.21坏掉了(郁闷中~~~~~~~~~~~)
,没的测试,有错提醒下
回复

使用道具 举报

发表于 2007-2-17 22:05:04 | 显示全部楼层
[s:5]  [s:5]
回复

使用道具 举报

发表于 2007-3-15 21:40:41 | 显示全部楼层
支持 [s:7]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 18:06 , Processed in 0.430058 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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