
<?xml version="1.0" encoding="utf-8"?>
<Screen name="SnakeGame" descriptors="xworker.libgdx.Screen">
<Resources>
<FileResource name="snakeTexture" type="texture" file="\data\bobargb8888-32x32.png"></FileResource>
</Resources>
<Actions>
<ActionPool name="moveLeftPool">
<MoveByAction name="moveLeft" amountX="-400" amountY="0" duration="5" interpolation="swingOut" time="5"></MoveByAction>
</ActionPool>
<ActionPool name="moveRightPool">
<MoveByAction name="moveRight" amountX="400" amountY="0" duration="5" interpolation="sine"></MoveByAction>
</ActionPool>
<ActionPool name="moveUpPool">
<MoveByAction name="moveUp" amountX="0" amountY="400" duration="5"></MoveByAction>
</ActionPool>
<ActionPool name="moveDownPool">
<MoveByAction name="moveDown" amountX="0" amountY="-400" duration="5"></MoveByAction>
</ActionPool>
<ActionPool name="moveToPool">
<MoveToAction name="moveTo" duration="5"></MoveToAction>
</ActionPool>
</Actions>
<Actors>
<ActorPool name="mousePool">
<Image name="mouse" _xmeta_id_="snakeActor1" constructor="texture" texture="snakeTexture" x="200" y="200"></Image>
</ActorPool>
<ActorPool name="snakeBodyPool">
<Image name="snakeBody" _xmeta_id_="snakeActor3" constructor="texture" texture="snakeTexture" x="200" y="200"></Image>
</ActorPool>
</Actors>
<Stages>
<Stage name="stage" constructor="default">
<Actors>
<TowGroup name="snakeActor" _xmeta_id_="snakeActor1">
<Image name="snakeActorBody1" _xmeta_id_="snakeActor" constructor="texture" texture="snakeTexture" x="200" y="200"></Image>
</TowGroup>
</Actors>
<Group name="mouseGroup" description="<p>存放老鼠的组。</p>"></Group>
<EventListeners>
<InputListener>
<actions>
<KeySwitch name="keyDown" _xmeta_id_="keyDown1" descriptors="xworker.libgdx.input.InputActions/@KeySwitch">
<Case name="up" key="Up">
<SetActorAction name="move" _xmeta_id_="moveUp" descriptors="xworker.libgdx.engine.2d.GameThingActions/@ActorAction" gameThing="snake" actor="snakeActor" action="moveUp"></SetActorAction>
</Case>
<Case name="down" key="Down">
<SetActorAction name="move" _xmeta_id_="moveUp" descriptors="xworker.libgdx.engine.2d.GameThingActions/@ActorAction" gameThing="snake" actor="snakeActor" action="moveDown"></SetActorAction>
</Case>
<Case name="right" key="Right">
<SetActorAction name="move" _xmeta_id_="moveUp" descriptors="xworker.libgdx.engine.2d.GameThingActions/@ActorAction" gameThing="snake" actor="snakeActor" action="moveRight"></SetActorAction>
</Case>
<Case name="left" key="Left">
<SetActorAction name="move" _xmeta_id_="moveUp" descriptors="xworker.libgdx.engine.2d.GameThingActions/@ActorAction" gameThing="snake" actor="snakeActor" action="moveLeft"></SetActorAction>
</Case>
</KeySwitch>
</actions>
</InputListener>
<ClickListener>
<actions>
<MoveActorToCurentPosition name="clicked" descriptors="xworker.libgdx.engine.2d.GameThingActions/@MoveActorToCurentPosition" gameThing="snake" actor="snakeActor" action="moveTo" speed="80"></MoveActorToCurentPosition>
</actions>
</ClickListener>
</EventListeners>
</Stage>
</Stages>
<World>
<thing name="snake" _xmeta_id_="sname">
<Scripts>
<ActorActions>
<ActorAction name="moveRight" actionPool="moveRightPool" nextActions="moveUp"></ActorAction>
<ActorAction name="moveUp" actionPool="moveUpPool" nextActions="moveLeft"></ActorAction>
<ActorAction name="moveDown" actionPool="moveDownPool" nextActions="moveRight"></ActorAction>
<ActorAction name="moveLeft" actionPool="moveLeftPool" nextActions="moveDown"></ActorAction>
<ActorAction name="moveTo" actionPool="moveToPool" nextActions="moveUp"></ActorAction>
</ActorActions>
</Scripts>
</thing>
<thing name="mouse" _xmeta_id_="mouseFactory">
<actions>
<GroovyAction name="act">
<code><![CDATA[import com.badlogic.gdx.math.MathUtils;
//如果老鼠数量少于5个,那么就创建5个
while(mouseGroup.getChildren().size < 5){
def mouse = mousePool.obtain();
mouse.setPosition(MathUtils.random(1000), MathUtils.random(600));
mouseGroup.addActor(mouse);
}]]></code>
</GroovyAction>
</actions>
<Scripts></Scripts>
</thing>
<Collides>
<Collide name="snakeEat">
<actions>
<GroovyAction name="checked">
<code><![CDATA[if(overlapList.size() > 0){
for(overlap in overlapList){
def mouse = overlap.target;
//移除这个老鼠
mouseGroup.removeActor(mouse);
//归还到池里
mousePool.free(mouse);
//蛇增加一个
snakeActor.addActor(snakeBodyPool.obtain());
}
}
//println("overlapList=" + overlapList.size() + ",unoverlapList=" + unoverlapList.size());]]></code>
</GroovyAction>
</actions>
<Sources>
<Actor name="snake" actor="snakeActorBody1"></Actor>
</Sources>
<Targets>
<ActorsInGroup name="mouseGroup" group="mouseGroup"></ActorsInGroup>
</Targets>
</Collide>
</Collides>
</World>
</Screen>
Copyright © 2007-2019 XWorker.org 版权所有 沪ICP备08000575号
