AS3 游戏库存页面

AS3 Game Inventory Pages

我是 AS3 的新手,决定制作一个简单的拖放装饰游戏来开始。我的问题是,当我点击箭头时,我无法弄清楚如何制作另一页项目;还浏览项目类别。

这是游戏示例SWF

还有一个问题。我正在为每个项目使用此代码。有没有办法让这段代码更紧凑,而不是为每个项目复制和粘贴代码?

var Clone1:MovieClip;

Ground01.addEventListener(MouseEvent.MOUSE_DOWN, GroundPressed);
function GroundPressed(event:MouseEvent):void
{
    Clone1 = new ground01();
    Clone1.x = 132;
    Clone1.y = -123;
    addChild(Clone1);
    Clone1.startDrag();
    Clone1.addEventListener(MouseEvent.MOUSE_DOWN,onClonedPlusPressed1);
}

function onClonedPlusPressed1(event:MouseEvent):void
{
    Clone1 = MovieClip(event.currentTarget);
    Clone1.startDrag();
}

stage.addEventListener(MouseEvent.MOUSE_UP, onStageReleased1);

function onStageReleased1(event:MouseEvent):void
{
    if(Clone1 != null){
        Clone1.stopDrag();
    }
            if(Clone1.hitTestObject(Trashcan)) {
        removeChild(Clone1); 
        Clone1 = null;
    }
}

假设您是 action script 3 和编程的新手,在任何编程语言中您总是可以重复使用函数,以克隆 GroundPressed() 函数为例:

function GroundPressed(event:MouseEvent):void
{
    Clone1 = new ground01();
    Clone1.x = 132;
    Clone1.y = -123;
    addChild(Clone1);
    Clone1.startDrag();
    Clone1.addEventListener(MouseEvent.MOUSE_DOWN,onClonedPlusPressed1);
}

您可以随时重复使用此功能并应用于您的每个影片剪辑

像这样:

Ground01.addEventListener(MouseEvent.MOUSE_DOWN, GroundPressed);
Ground02.addEventListener(MouseEvent.MOUSE_DOWN, GroundPressed);
Ground03.addEventListener(MouseEvent.MOUSE_DOWN, GroundPressed);

如果你想让你的代码更紧凑并节省编写额外的 EventListener() 你可以将 Ground01、Ground02、Ground03 组合成一个巨大的动画片段应用一个 EventListener()。要指向右侧 child,您需要 e.target()。我不记得实际的语法,但您的代码如下所示:

function GroundPressed(event:MouseEvent):void
{
    cloneItem = event.target;
    cloneItem.x = 132;
    cloneItem.y = -123;
    addChild(cloneItem);
    cloneItem.startDrag();
    cloneItem.addEventListener(MouseEvent.MOUSE_DOWN,onClonedPlusPressed1);
}

您可以阅读更多关于 event.target here