首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Flash CC/Action script3.0中创建自定义MovieClip边界?

如何在Flash CC/Action script3.0中创建自定义MovieClip边界?
EN

Stack Overflow用户
提问于 2015-12-20 13:33:49
回答 1查看 210关注 0票数 0

我正在做一个Flash CC的小游戏项目,我已经为一个玩家控制的角色做了一个移动地图。贴图( MovieClip)根据玩家(也是MovieClip)的移动方向进行置换。墙壁包围了透明的空间,由场景的颜色填充。

我想知道如何创建一个MovieClip边界,而不仅仅是将地图包围在一个矩形中,矩形既包围了墙壁,又包围了透明空间。基本上,我想要一个专门围绕实际图像本身的MovieClip边界。我不确定这是否在AS3或闪存本身是可行的。

如果我所描述的内容是不必要的/不可能的,我们也会非常感谢这个问题的任何变通方法。非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2015-12-20 22:20:25

最简单的方法就是创建一个新的类,比如说Wall,它扩展了一个雪碧图(你不需要一个MovieClip )。

您甚至可以在Flash CC中创建该类,而不仅仅是在代码中。

注意3件事:

1)墙可以有透明填充,没有轮廓。我选择保留它们,这样你就可以在照片上看到了。

2)你需要勾选“为ActionScript导出”复选框并给它一个类名(我选择了"Wall“)

3)您可以选择将默认基类从MovieClip更改为Sprite。不会有太大的不同,但这是更好的。

然后继续将这些墙对象放置在地图上,无论是在MovieClip中还是位图中-这都无关紧要。只需将库中任意数量的拖放到舞台上即可。您也不需要为它们提供实例名称,除非您想要特定墙的特定控制(例如,当玩家拿起钥匙或其他东西时,它会自动删除)

在游戏脚本中,您可以在游戏开始时获得所有的墙,如下所示:

代码语言:javascript
复制
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;

function getWallsInAHolder(holder:DisplayObjectContainer):Vector.<Wall>
{
    var wallArray:Vector.<Wall> = new Vector.<Wall>();

    var currentChild:DisplayObject;
    for ( var i:int = 0; i < holder.numChildren; i++ )
    {
        currentChild = holder.getChildAt( i );  
        if ( currentChild is Wall )
            wallArray.push( currentChild );
    }

    return wallArray;
}

trace(getWallsInAHolder(this).length );

关于代码的几个重要注意事项:

1)为了不花太多时间,它是在一个框架中编写的。

2)你仍然可以在你的类中使用getWallsInAHolder()方法,它是完全独立的。

然后很容易使用AABB (或任何其他)碰撞检测来实际检查角色是否与任何墙发生碰撞。这甚至更好,因为你不必在每一面墙的位置(和大小)编程-只需在Flash中拖放它们!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34378297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档