Actionscript 3 在两个不同的类AS3中测试两个电影剪辑之间的冲突
我需要测试两个电影剪辑之间的冲突,使用air for android动作脚本3 它是一个物体和几个障碍物之间的碰撞 我的结构如下: 基本FLA文件链接到名为baseCode.as的操作脚本文件。 在这个AS文件中,我使用以下代码创建障碍: baseCode.as: 在基本FLA文件中,我创建了将与使用Mc_Mc和Mc_MC2创建的所有障碍物碰撞的主对象。我使用以下代码创建它: 佛罗里达州 考虑到移动的Mc_Mc/Mc_MC2与我的对象来自不同的AS文件,如何测试它们之间的冲突Actionscript 3 在两个不同的类AS3中测试两个电影剪辑之间的冲突,actionscript-3,flash,air,Actionscript 3,Flash,Air,我需要测试两个电影剪辑之间的冲突,使用air for android动作脚本3 它是一个物体和几个障碍物之间的碰撞 我的结构如下: 基本FLA文件链接到名为baseCode.as的操作脚本文件。 在这个AS文件中,我使用以下代码创建障碍: baseCode.as: 在基本FLA文件中,我创建了将与使用Mc_Mc和Mc_MC2创建的所有障碍物碰撞的主对象。我使用以下代码创建它: 佛罗里达州 考虑到移动的Mc_Mc/Mc_MC2与我的对象来自不同的AS文件,如何测试它们之间的冲突 我是AS的新手,因
我是AS的新手,因此任何帮助都将不胜感激 如果您希望能够对来自不同类/父代的对象进行碰撞测试,那么您需要以一种可以获得对所述对象的引用的方式设置项目 从外观上看,您的两个对象实际上已经在同一个类中,因为您的主时间线代码和文档类代码共享相同的范围,所以您在其中一个中声明的内容应该在另一个中可用 您唯一缺少的是对您的障碍/Mc\u Mc的顶级引用。目前,您将其分配给作用域为makeSymbol函数的var,因此在该函数中只有对它的引用 解决方案 在您的文档类baseCode.as中,创建一个顶级var来保存对该障碍的引用:作为引用,您有一个名为t的顶级var,将此行置于该障碍之上或之下
private var obstacle:Mc_MC;
稍后在实例化新Mc_Mc makeSymbol的函数中,将实例分配给该顶级变量:
obstacle = new Mc_MC(1 + Math.random() *10, loc);
addChild(obstacle);
现在,您可以访问主时间线或文档类中的任何其他位置
if(my_obj.hitTest(obstacle)){
}
另一方面,如果您有一个文档类,那么在主时间轴的第一个框架上放置代码是没有意义的,因为该代码在文档类中的工作方式相同,尽管它必须包含在函数中。以下是移动主时间线代码的示例:
public class Main extends MovieClip {
public function Main():void {
//listen for the added to stage event prior to do anything display oriented
this.addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event):void {
//this is the best place to put the equivalent of timeline code (not including vars or functions, put those in the class root NOT nested here)
}
}
为什么不将时间线代码移动到baseCode.as?您的代码很难阅读。到底哪个物体应该与其他物体碰撞?代码注释和有意义的变量名对代码的清晰性有很大帮助。my_obj和Mc_Mc不是很有意义的名称,因为它们根本不表示这些对象的用途。另外,你到底想在哪里进行碰撞?我的问题是@Badfeelingabout这是主类my_obj与另一个类的Mc_Mc的碰撞。。这就是我的目标,我如何做SOI是你问题中最后一段代码,在根/主时间线上标记为Main.fla?还是在子项的时间线上?
obstacle = new Mc_MC(1 + Math.random() *10, loc);
addChild(obstacle);
if(my_obj.hitTest(obstacle)){
}
public class Main extends MovieClip {
public function Main():void {
//listen for the added to stage event prior to do anything display oriented
this.addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event):void {
//this is the best place to put the equivalent of timeline code (not including vars or functions, put those in the class root NOT nested here)
}
}