
<?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-2014 XWorker.org 版权所有