【问题标题】:iMacros iimPlay javascriptiMacros iimPlay javascript
【发布时间】:2023-03-14 17:36:01
【问题描述】:

我创建了两个发挥不同 iimPlay 功能的变量。但是,代码总是执行第一个 if 语句并忽略第二个语句。

Main.js

var ReturnCode = iimPlay("win.iim");  
var returncode2 = iimPlay("lose.iim"); //
if (ReturnCode = 1) {         *//when returncode =1 means complete execute*
iimPlay("reset.iim");
} 

if (returncode2 = 1 ) {
iimPlay("double.iim");
}

Win.iim

IMAGESEARCH POS=1 IMAGE=C:\win.png CONFIDENCE=65 

无论是否匹配,imagesearch 都会一直执行

Lose.iim

IMAGESEARCH POS=1 IMAGE=C:\lose.png CONFIDENCE=65  

无论是否匹配,imagesearch 都会一直执行

HTML 标记

<div id="game-result" class="balance-change fail">
<span id="result-text">
LOST
</span> </div>

问题:每当 iimPlay("win.iim") 检测到赢或输图像时,它仍然执行第一个语句,因为输图像应该执行第二个 if 语句。

【问题讨论】:

  • 没有看到win.iim代码就无法理解你遇到的问题
  • 放警报("");每次 iimPlay 之后。当您收到提示时,您将能够在显示屏中看到错误消息。也许你有某种错误。
  • @Bestmacros 内容已更新。

标签: firefox if-statement imacros


【解决方案1】:

不要使用图像搜索尝试使用

TAG POS=1 TYPE=DIV ATTR=CLASS:image_you_are_looking_for CONTENT=EVENT:MOUSEOVER


TAG POS=1 TYPE=DIV  ATTR=CLASS:second_image_you_are_looking_for CONTENT=EVENT:MOUSEOVER

如果不存在,这种方式将返回错误代码。

这也是错误。

if (returncode2 = 1 ) { }

您将值 1 设置为 returncode2 而不是将其与 1 进行比较。正确的是

if (returncode2 == 1 ) { }

更好的是:

if (returncode2 > 0 ) { }

其他返回码也一样。修复这些并重试。

【讨论】:

  • 当我看到win的图片时,它并没有执行两个if语句,只是跳转到代码行的末尾。我已经使用了'=='和'>',但问题仍然存在。 win.iim 不显示错误,但 loss.iim 会。
【解决方案2】:

您需要始终小心EQUAL 符号。在 Javascript 中进行比较,您使用 =====。你的代码做了一个归属,并且永远是TRUE;这就是为什么它总是被执行。有关 javascript 平等的详细信息,请参阅this post

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    相关资源
    最近更新 更多