图形循环往复移动的问题

我想做一个皮带机运行时的动态效果,在一个矩形里面等距离放了一些小矩形,把这些小矩形合成一个组,让这个组往右移动5次后返回原地,这样循环形成一个动态的效果。我在全局脚本里面编了一下,可是发现激活项目的时候,动态效果什么的都正常,如果在图形编辑器界面再次点激活按钮,运行画面中的小矩形组就错位了。譬如小矩形组静态X坐标是100,我让他每250ms,X轴的坐标加5,移动5次后回到坐标100,可是在图形编辑器界面再次点激活按钮,运行画面中的小矩形组的X轴坐标会错位到100以前,不知道为什么?我对C动作不熟悉,请大家指教,全局脚本如下(其中的一条皮带机):
long a;     //PL-1皮带X轴坐标
static int a1;
BOOL a2;
a2=GetTagBit("temp_1");  //temp_1皮带机运行反馈信号
if(a2==1)
{
a=GetLeft("主画面.pdl","组8");  //组8就是要循环移动的小矩形组
if(a1<5)
{a=a+5;a1=a1+1;}
else
{a=a-25;a1=0;}
SetLeft("主画面.pdl","组8",a);
}

问题补充:
谢谢满!!
在激活状态下点激活,怎样才能让我的计数器a1清零呢?
或者还有其他更好的办法实现这个动态吗?下面是我用另一种方法实现的,不会出现错位的情况,但是需要一个参照物。
long a;    //PL-1
long a1; 
a=GetLeft("主画面.pdl","组8"); //Return-Type: long int 
a1=GetLeft("环烧主画面20.pdl","矩形121");  //我把这个固定的矩形当参照物
if (a<a1-10+25)
a=a+5;
else
a=a1-10;  //小矩形组的起始位置在参照物矩形的左边10的位置
SetLeft("环烧主画面20.pdl","组8",a);

最佳答案

因为每次激活的时候都是读a1和小矩形组静态X坐标值。问题出在从新激活时的小矩形组静态X坐标值是固定的(100),但是 a1值不一定是0,因此矩形不一定移动5次,所以在减去-25后矩形组的X轴坐标会错位到100以前。
  如果每次直接激活的话出现你说的问题,如果取消激活后再次激活的话不会出现上述问题。

提问者对于答案的评价:
谢谢了!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc264662.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐