aardio官方社区

 找回密码
 注册会员

!connect_header_login!

只需一步,快速开始

搜索
查看: 7428|回复: 6

改变值不能改变循环?

[复制链接]

2

主题

10

帖子

69

积分

一级会员

Rank: 2

积分
69
发表于 2011-8-26 06:16:59 | 显示全部楼层 |阅读模式
本帖最后由 qianmo717 于 2011-8-26 06:18 编辑

  1. import win.ui;
  2. import mouse;
  3. /*DSG{{*/
  4. var winform =
  5. win.form(parent=...; text="aardio Form";right=349;bottom=249 )
  6. winform.add(

  7. button={ bottom=103;right=186;left=39;top=46;font=LOGFONT(
  8. name="SimSun";h=-12 );z=1;text="开始";cls="button" };
  9. button2={
  10. bottom=212;right=187;left=38;top=145;font=LOGFONT( name="SimSun";h=-12
  11. );z=2;text="停止";cls="button" }
  12. )
  13. /*}}*/var ke;

  14. winform.button2.oncommand = function(id,event){
  15. //win.msgbox(
  16. winform.button2.text );
  17. ke=0

  18. }
  19. winform.button.oncommand =
  20. function(id,event){
  21. //win.msgbox( winform.button.text
  22. );
  23. ke=1
  24. while(ke){
  25.   mouse.click()
  26.   win.delay(100)
  27. }
  28.   


  29. }
  30. winform.show()
  31. win.loopMessage();
复制代码
我想通过改变ke的值停止循环,大家帮看看。

回复

使用道具 举报

16

主题

101

帖子

662

积分

三级会员

Rank: 4

积分
662
发表于 2011-8-26 08:15:37 | 显示全部楼层

ke的作用域问题。 在外面声明一下试试var ke = 0;

ke的作用域问题。
在外面声明一下试试var ke = 0;
回复

使用道具 举报

16

主题

101

帖子

662

积分

三级会员

Rank: 4

积分
662
发表于 2011-8-26 08:19:18 | 显示全部楼层

[color=#0000ff]import[/color][color=#000000] win.ui; [/color][color=#008000]/*D

import win.ui;
/*DSG{{*/
var winform = win.form(parent=...; text="aardio Form";right=349;bottom=249 )
winform.add(
button={ bottom=122;text=
"button";left=103;top=95;font=LOGFONT( name="SimSun";h=-12 );z=1;right=180;cls="button" };
button2={ bottom=198;text=
"button2";left=102;top=161;font=LOGFONT( name="SimSun";h=-12 );z=2;right=196;cls="button" }
)
/*}}*/

var ke;
winform.button2.oncommand = function(id,event){
   
//win.msgbox( winform.button2.text );
    ke=0
   
}
io.open()

winform.button.oncommand =
function(id,event){
   
//win.msgbox( winform.button.text );
    ke = 1
   
while(ke)
    {
        io.print(
"running")
        win.delay(100);
    }   
}


winform.show()
win.loopMessage();
return winform;

回复

使用道具 举报

36

主题

172

帖子

1107

积分

四级会员

Rank: 6Rank: 6

积分
1107
发表于 2011-8-26 09:22:06 | 显示全部楼层

当进入循环以后,只有在循环里面改变while的判别值才行,循环外就不行,因为执行不到。如果定义成全局变量,应该可以

当进入循环以后,只有在循环里面改变while的判别值才行,循环外就不行,因为执行不到。如果定义成全局变量,应该可以
回复

使用道具 举报

5

主题

441

帖子

2420

积分

五级会员

Rank: 8Rank: 8

积分
2420
发表于 2011-8-26 09:48:42 | 显示全部楼层

[i=s] 本帖最后由 神码 于 2011-8-26 09:52 编辑 [/i] 你的代码没有错误,只不过你使用 [code]mouse.click()[/c

本帖最后由 神码 于 2011-8-26 09:52 编辑

你的代码没有错误,只不过你使用
  1. mouse.click()
复制代码
就会产生一个戏剧性的后果, mouse.click有三个参数
mouse.click(x坐标,y坐标,是否绝对坐标)
x坐标默认为0,y坐标也默认为0,相对坐标默认为false.

你省略所有的参数,也就等于在原地连点.
结果你是点了一次按钮,再疯狂的点击此按钮, 所以此函数被不断的触发,堆栈也不断的迭加.
最后产生爆炸式的后果.


import mouse;
import win.ui;

/*DSG{{*/
var winform =
win.form(parent=...; text=
"aardio Form";right=349;bottom=249 )
winform.add(
button={ bottom=103;right=186;left=39;top=46;z=1;text=
"开始";cls="button" };
buttonStop={
bottom=212;right=187;left=38;top=145;z=2;text=
"停止";cls="button" }
)
/*}}*/

var runing;
winform.buttonStop.oncommand =
function(id,event){
    runing =
false;
}

winform.button.oncommand =
function(id,event){
    runing=
true
   
while(runing){
        
//mouse.click() //这是重复点击当前按钮
        win.delay(100)
    }
}

winform.show()
win.loopMessage();




在论坛发代码, 可以在aardio中右键点编辑器, 选择"复制全部到HTML"
然后切换到论坛编辑器的"高级模式", 不然你的代码都是错乱的

回复

使用道具 举报

2

主题

10

帖子

69

积分

一级会员

Rank: 2

积分
69
 楼主| 发表于 2011-8-26 12:42:34 来自手机 | 显示全部楼层

那么如楼上所说将开始设为组合键即可,停止可以多次点击,手机发贴没试。

那么如楼上所说将开始设为组合键即可,停止可以多次点击,手机发贴没试。
回复

使用道具 举报

2

主题

10

帖子

69

积分

一级会员

Rank: 2

积分
69
 楼主| 发表于 2011-8-27 19:49:58 | 显示全部楼层

[color=#0000ff]import[/color][color=#000000] win.ui; [/color][color=#0000ff]imp

import win.ui;
import mouse;
import key;
/*DSG{{*/
var winform = win.form(parent=...; text="aardio Form";right=349;bottom=249 )
winform.add(
button={ bottom=103;right=186;left=39;top=46;font=LOGFONT( name=
"SimSun";h=-12 );z=1;text="开始";cls="button" };
button2={ bottom=212;right=187;left=38;top=145;font=LOGFONT( name=
"SimSun";h=-12 );z=2;text="停止";cls="button" }
)
/*}}*/

var ke;
hkid = winform.reghotkey(
function(id,mod,vk){
    winform.button.oncommand();
   
}
,0x2
/*_MOD_CONTROL*/,'D'#);

hkid2 = winform.reghotkey(
function(id,mod,vk){
    winform.button2.oncommand();
   
}
,0x2
/*_MOD_CONTROL*/,'X'#);


winform.button2.oncommand =
function(id,event){
   
//win.msgbox( winform.button2.text );
    ke=0
   
}

winform.button.oncommand =
function(id,event){
   
//win.msgbox( winform.button.text );

    ke=1
   
while(ke){
        mouse.click()
        key.press(
" ")
        win.delay(50)
    }
     
   
}

winform.show()
win.loopMessage();
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2021-9-25 01:51 , Processed in 0.055905 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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