我想制作一个简单的游戏,其中“光盘”从屏幕顶部掉落,用户必须抓住它们。我有一个MovieClip,我希望将其调整为随机选择的三种尺寸之一。
在我看来,有四件事情必须要做。
创建并调整MovieClip的大小
定位MovieClip
使MovieClip失效
确定何时完成“摔倒”并查看用户是否“抓住”了它。
我的问题是:如何创建,调整MovieClip的大小和位置?我给它一个“光盘”的标识符。怎么办?我是否参加ENTER_FRAME
活动并在那里创作?如何向下移动光盘?我是否使用补间,还有其他什么?
我主要是将此视为理智检查。
答案 0 :(得分:1)
我会使用某种工厂类来负责从舞台顶部丢弃随机光盘。
除了你正确提到的内容之外,你还需要:
定义下降速度是否恒定,您可能需要一些加速补间。要向下移动对象,可以使用本机补间方法,您需要将其应用于每个被删除的磁盘。
定义磁盘开始下降的位置,它可以是随机的,也可以始终来自同一个地方。
您可以使用属于DisplayObject
类的AS3 hitTestObject
方法判断两个对象是否发生冲突。
您的工厂类可以使用start()
和stop()
方法。触发start()
后,将启动无限或ENTER_FRAME
循环并且磁盘开始下降。如果要以特定速率创建磁盘,可以将循环与timer组合以在定义的时间间隔内运行代码。例如,每3秒创建10个磁盘(使用主循环)并将它们放到舞台上。
答案 1 :(得分:0)
您可能希望查看编程粒子。
http://r3dux.org/2010/01/actionscript-3-0-particle-systems-3-rain-effect/
在很高的水平上,你会做的是。
您需要创建一个光盘类。
你可以给这个类一些变量属性,比如width,height,x等。
在主类的输入框架中,您将添加一个enterframe函数,该函数创建新的光盘实例,为每个属性传递随机值。
每个光盘实例也可以有自己的entframe,它会增加y位置,直到到达屏幕底部。然后光盘将自己从舞台上移开。您可以使用缓动函数传递一个随机数来确定其下降的速率。
如果其y位置大于舞台高度,请移除光盘。如果用户捕获它(可能使用命中测试)也将其删除。
我真的建议您查看我发布的链接。
答案 2 :(得分:0)
假设你有名为'disc'的电影剪辑& 'userHand'导出到actionscript中,我将按照以下方式进行总结:
var n:int = 30; //Total no of Discs for(i:int=0;i<n;i++) { var mc:disc = new disc(); mc.x=Math.random()*stage.width(); //to scatter the discs across the stage mc.y=-mc.height; //initially hide out a disc addchild(mc); }