SelfAction

     self变量是事物执行自己的行为时把自己放入变量上下文的,因此当前self变量往往不是动作自己,因此如果动作需要self变量是自己,那么可以把自己定义成SelfAction。

While

    以While为例,While类似于编程语言中的控制语句while。

    编辑While的截图:

   

    如图While继承了SelfAction,While的run的实现代码是:

package xworker.lang.actions;

import org.xmeta.Action;
import org.xmeta.ActionContext;
import org.xmeta.Thing;
import org.xmeta.World;

public class WhileCreator {
 static World world = World.getInstance();
    
 public static Object run(ActionContext actionContext) throws Exception{
        Thing self = (Thing) actionContext.get("self");
        
        actionContext.peek().isVarScopeFlag = true;
        Object result = "success";        
        while((Boolean) self.doAction("condition", actionContext, null, false)){
         Thing childActions = self.getThing("ChildAction@0"); 
         for (Thing child : childActions.getChilds()) {
    Action action = world.getAction(child);
    if (action != null) {
     result = action.run(actionContext, null, true);
    }

    int sint = actionContext.getStatus();
    if (sint != ActionContext.RUNNING) {
     break;
    }
   }

   //判断循环的状态
   if (actionContext.getStatus() == ActionContext.BREAK) {
    actionContext.setStatus(ActionContext.RUNNING);
    break;
   } else if (actionContext.getStatus() == ActionContext.CONTINUE) {
    actionContext.setStatus(ActionContext.RUNNING);
    continue;
   } else if (actionContext.getStatus() != ActionContext.RUNNING) {
    break;
   }
        }
            
        return result;      
    }

}

 

Copyright ©  2007-2014 XWorker.org  版权所有

沪ICP备08000575号