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。
我是 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。