找回密码
 点一下
查看: 4127|回复: 6

[醒目]常见JASS问题之Q来A去

[复制链接]
发表于 2007-12-2 11:54:36 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007-12-2 12:31:58 | 显示全部楼层

Q:怎样在jass中直接获取时间?

RT
是否只能用TimerGetElapsed ?
回复

使用道具 举报

发表于 2007-12-3 12:44:51 | 显示全部楼层
ExecuteFunc还是素很有用的,并且以上没提到的一点,ExecuteFunc中能够传递TriggerUnit等环境参数。也因此,其效率是很低的。
一般用到该函数有这么几种情况:

1. 类似以下必须要调用在其之后的函数的情况:
[codes=jass]
function A takes nothing return nothing
    if xxx then
        xxx
    else
        call ExecuteFunc("B")
    endif
endfunction

function B takes nothing return nothing
    call A()
endfunction
[/codes]

2. 无等待连续运行的代码过多,触发会直接中断,这时可以使用ExecuteFunc
    以下函数C由于运行的代码过多,会在运行一定量代码后自动中断,而函数D则不会
[codes=jass]
function C2 takes nothing return nothing
    local integer b=0
    loop
        set b=b+1
        exitwhen b>1000
        call BJDebug("xxx")
    endloop
endfunction

function C takes nothing return nothing
    local integer a=0
    loop
        set a=a+1
        exitwhen a>100
        call C2()
    endloop
endfunction

function D takes nothing return nothing
    local integer a=0
    loop
        set a=a+1
        exitwhen a>100
        call ExecuteFunc("C2")
    endloop
endfunction
[/codes]

3. 将一批函数名作为string储存,那么就可以很方便的调用这些函数,比如将每个英雄的技能触发初始化函数名绑定到该英雄类型,那么在选择英雄之后就可以很方便的调用该英雄的初始化函数
这也是ExecuteFunc最有用的地方

4. 使用Condition代替Action的触发写法,Condition中是不能使用等待的,一般我们使用Timer运行需要延时的函数,有时为了方便也可以使用ExecuteFunc,ExecuteFunc所调用的函数中可以使用等待,并且像TriggerUnit之类的环境变量也可以正常使用,这种方法不能泛用,否则就失去了Condition写法的意义了,ExecuteFunc的效率并不比Action好

A:差不多,反正不可能获取系统时间的
Q:Jass有几个native函数?
回复

使用道具 举报

发表于 2007-12-3 13:17:50 | 显示全部楼层
Q:Jass有几个native函数?
A:   不知道.
回复

使用道具 举报

 楼主| 发表于 2007-12-3 13:19:25 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2007-12-14 18:14:37 | 显示全部楼层
不是"进程"不同,是"线程"不同.
回复

使用道具 举报

发表于 2007-12-15 08:06:32 | 显示全部楼层
Q:JASS是什么?
A:JASS就是爵士乐。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 21:35 , Processed in 0.047018 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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