找回密码
 点一下
查看: 2638|回复: 42

关于code参数类型如何被 timer的函数所调用 ?

[复制链接]
发表于 2009-11-8 14:42:44 | 显示全部楼层 |阅读模式
我本来想写个 UI 函数的  突然就发现这个问题
还有就是一个 多动作 问题
发现选取单位做都有一个
loop多动作  
我做的时候弄来弄去不行
WOW8上去发帖没人给我个好回答 知道GA高手多就来了
发表于 2009-11-8 14:52:12 | 显示全部楼层
蛋定围观
回复

使用道具 举报

发表于 2009-11-8 15:41:18 | 显示全部楼层
LZ能不能表达清楚点啊,我有点看不懂。
只能按我的理解来说了。

native TimerStart takes timer whichTimer, real timeout, boolean periodic, code handlerFunc returns nothing
TimerStart的具体使用格式如下:
call TimerStart(t,0.01,true,function MHS)

t为开始的计时器(这里是名为t的计时器变量)
0.01为触发计时器的秒数(这里是每0.01秒触发一次)
true为是否循环(false为只运行一次,这里是循环运行)
MHS是一个自定义函数(必须没有参数和返回值)

就是说CODE只有是一个没有返回值和参数的自定函数才能被调用(比如 要用一个名为SD的函数 就是 function SD)
要为一个计时器绑定一个数据,那就要用GC了

至于下面那个问题我就看不懂了
回复

使用道具 举报

发表于 2009-11-8 15:46:13 | 显示全部楼层
事实上LZ想做UI。可是我都不会。
回复

使用道具 举报

发表于 2009-11-8 15:47:44 | 显示全部楼层
唉,还是看不懂
回复

使用道具 举报

发表于 2009-11-8 15:59:06 | 显示全部楼层
我想可不可以这样,用某一自定义函数调用某code,然后用Timer调用那个自定义函数?
回复

使用道具 举报

发表于 2009-11-8 16:07:57 | 显示全部楼层
CODE 不就是 函数么??
回复

使用道具 举报

发表于 2009-11-8 16:09:10 | 显示全部楼层
code准确来说是一个函数指针而已。
回复

使用道具 举报

发表于 2009-11-8 16:48:36 | 显示全部楼层
[trigger]未命名触发器 001
    事件
    条件
    动作
        计时器 - 立即运行 t 时间设置: 0.03 秒,是否循环: 循环 ,运行函数: function xuanzhuan
        单位组 - 选取 g 内所有单位做动作
            Loop - 动作
                单位 - 杀死 (选取单位)[/trigger]

第一个问题可能是说在UI中写TimerStart 的code参数吧,这个夜天UI是支持的,LZ可以试一试。

第二个问题应该不是直接用loop,你在触发器动作--单位组 那一类里面可以找到“选取单位组做多个动作”,这里面就有loop
回复

使用道具 举报

发表于 2009-11-8 16:53:05 | 显示全部楼层
哇,light大人,您的脸……
回复

使用道具 举报

发表于 2009-11-12 21:53:35 | 显示全部楼层
前面楼层请无视...

不管怎么说,LZ写UI的精神是值得称道的,而且刚好你提到的这两个问题,我都遇到过

先说第一个罢,夜天UI里正如cctv1给出的,是加个code参数,但这样的写法,完全是闲的蛋疼——使用加强UI的都是不会JASS的人,如果他们会在这里填写 function xuanzhuan,那他们何不使用一句自定义代码:call  TimerStart(udg_t,0.03,true,function xuanzhuan),还需要使用新增的API么。况且,xuanzhuan这函数是哪里来的,是用户自己写的吗——如果一个用户会写自定义函数,却不会使用一句call调用,这可能么!

所以,鉴于用户是不会自定义代码和自定义函数,那么在写UI的时候,就尽可能地做到无J;台湾那边有个苹果UI,他们采用的方法,是将要执行的动作写到另外一个触发器的动作里,然后在参数这里调用类型为触发器的参数,让Timer去执行触发器——这样比直接用T里的计时器好的多,因为省去了触发事件响应时间,当然比起直接运行函数还是要慢些。只是,采用这种方法,你得新写一个自定义函数。苹果UI采用修改BJ函数,然后用程序将其注入地图;YDWE是打算在保存地图的时候注入函数库,目前这部分我搭档还在制作中。至于LZ你,是想写一个想ydwe的UI那样将自定义函数做成API,还是像以前的UI那样,仅仅将CJ函数封装,我就不得而知了。

当然,除了苹果UI那样的方法,我也想出了一个很YD的方法,就是把动作写进另外一个触发器,在夜天UI那里填写function Trig_xuanzhuan_Actions,这样虽然也是很蛋疼的写法,但好处是用户不用去写自定义函数xuanzhuan——这对依赖UI的人来说也是不可能完成的任务。

目前为止看来好像只有做成这样,但,YD是无止尽的,如果有办法能把触发器动作这个函数从触发器剥离出来,那么就可以完全地将Timer写到一个无J的环境中。
========================================YD的分割线=====================================
至于你提到的第二点,也是之前困扰我的问题——如果写入多个动作。我检查了“选取单位组动作”“循环For”“if then”等可以写入多个动作的语句,发现,这一部分是似乎是系统默认的,写死了的;没办法,JASS不像Lua那样开放,很多东西没法修改。

当然,我没办法,不代表你做不到,如果你能比我YD的话,应该能看到一丝曙光。

潜了   LZ加油罢   祝好运

                                                                                        ——everguo  留
回复

使用道具 举报

发表于 2009-11-12 22:50:16 | 显示全部楼层
果子大人确实很有钻研精神啊。不过我很纳闷像您这样高层次的人为什么反而对那些低俗的东西充满热情呢?
回复

使用道具 举报

发表于 2009-11-12 23:04:33 | 显示全部楼层
先说第一个罢,夜天UI里正如cctv1给出的,是加个code参数,但这样的写法,完全是闲的蛋疼——使用加强UI的都是不会JASS的人,如果他们会在这里填写 function xuanzhuan,那他们何不使用一句自定义代码:call  TimerStart(udg_t,0.03,true,function xuanzhuan),还需要使用新增的API么。况且,xuanzhuan这函数是哪里来的,是用户自己写的吗——如果一个用户会写自定义函数,却不会使用一句call调用,这可能么!


哦,计时器是写给某开水用的,他T+J
你觉得是打满满一行TimerStart比较快还是点点鼠标直接改函数名比较快呢

至于UI,爱用不用,偶充其量也就是把TBA用的UI共享了出来而已,没必要说别人X疼吧
回复

使用道具 举报

发表于 2009-11-12 23:22:24 | 显示全部楼层
直接写jass显然要比到ui里去找来找去快得多,这是没什么可说的
而且这样的写法的确不如直接去写J………………
正如guo所说的,一个函数都写好了,仅仅一句调用却要去用ui,何必呢
回复

使用道具 举报

发表于 2009-11-12 23:24:03 | 显示全部楼层
不知可以这样理解不    某开水的比较懒     懒到不是用纯J而是用半T半J    然后你比较闲     闲到特意做个半T半J的API给他

如果是这样   那么的确是合情合理    蛋蛋也是比较健康的    一点也不疼

我一向口直心快     想什么就说什么    如果刚才有言语冒犯    那么    抱歉了     

至于UI     我不认为它是个低俗的东西    而技术也不存在所谓的高层次     只要你做的东西    可以帮助到别人     那么你做的东西就是由价值和意义的

末了   利用UI可以做很多东西东西    将很多问题简化    比如Script System电影系统就可以做成UI方便新手使用    或者它可以开启一个做图的新纪元
回复

使用道具 举报

发表于 2009-11-12 23:41:17 | 显示全部楼层
呃,其实不是的。
虽然我用的不太多,装了夜天UI之后只做了一点点东西,但是这个T+J还是很方便的,一方面T显示的比较直观,做演示的话很多人都看得懂,另一方面用J可以随意调用code、输入计算公式或者是自己用globals定义的变量。其实就算是上面说的调用function xuanzhuan,也有可能不是UI使用者自己写的东西呀,可能是他/她copy来的呗,而且打出来TimerStart和在计时器里面找出它来也说不说谁快谁慢,毕竟T里面一些参数都有默认设置的。



这些东西全用J的话当然可以,但是用T点来点去还是比较舒服的哈,啊哈哈。
回复

使用道具 举报

发表于 2009-11-12 23:54:00 | 显示全部楼层
额,现在的习惯是,在演示中只要用到不是原版ui的内容,全部使用自定义代码或直接写J完成,保证通用性
如果真的去做图,那么更多的会去采用J,毕竟更灵活,效率也更高
回复

使用道具 举报

发表于 2009-11-12 23:56:46 | 显示全部楼层
引用第14楼938于2009-11-12 23:24发表的 :
至于UI     我不认为它是个低俗的东西    而技术也不存在所谓的高层次     只要你做的东西    可以帮助到别人     那么你做的东西就是由价值和意义的  

呃……那个……您误会了,UI当然是一个很了不起的东西,我的意思是像您这样一位名牌大学的研究生竟然会对那些不健康的内容津津乐道,着实出人意料啊……
回复

使用道具 举报

发表于 2009-11-13 00:01:41 | 显示全部楼层

回 11楼(gason) 的帖子

再看遍发现我误会你意思了   你并不是说UI低俗    而是说我做的一些东西    比如《哥之回归》比较低俗   是吗

其实   我不会辛苦去学习电影系统然后做个《哥》这样低级趣味的东西    当时这么做的原因    是迫于无奈   因为辛苦做了两年的黄金甲   到了后面大场景那段就卡了   所以   我得做个简单的小电影练习电影系统的使用

于是《哥》诞生了    虽然剧情收到的抨击很多    但镜头的应用和面画还是得到了肯定    这也达到了我当初的目的

至于剧情    引用孙渣的说法    “那不过是个纯洁的软体动物罢了”

说到孙渣   多好的漫画人才啊    却一直被和谐    那些装B又无能的职业动漫人   只会做些“大耳朵图图”“大嘴巴嘟嘟”那样抄袭的作品   

这次《哥之回归》遭到很多谩骂    但我不后悔    因为当我加了孙渣的QQ      让孙渣看到他笔下的人物被做成MV      得到他的肯定   这一切都值得了

话说    火影里的自来也    不也写色情小说那样低俗的东西吗     只要人正直不就可以了么    如果你是纲手  你是选装B但腹黑的大蛇丸    还是虽然YD但心底很好的自来也

额 扯远了   希望你能明白我的意思   

至于緋桜    昨天我回帖的时候   说回帖是因为感觉到蛋疼    因此   蛋疼不是什么侮辱性的话    当然   每个人对词语的接受程度是不一样的   只是    我的确没有要侮辱你的意思    希望你见谅
回复

使用道具 举报

发表于 2009-11-13 00:02:00 | 显示全部楼层
引用第16楼zhuzeitou于2009-11-12 23:54发表的  :
额,现在的习惯是,在演示中只要用到不是原版ui的内容,全部使用自定义代码或直接写J完成,保证通用性
如果真的去做图,那么更多的会去采用J,毕竟更灵活,效率也更高


啊啊,这么说也是,UI的推广和兼容也是个问题呀。

之前写的点T都是直接贴论坛的,到没想这方面的问题。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-22 08:18 , Processed in 0.179393 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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