我有一个基本的AS3问题,它涉及舞台上的对象与由AS3脚本创建和控制的对象之间的关系。这个问题已经被讨论了很多次了,我已经研究了好几个小时了,但是我发现了截然不同的答案,很多答案都非常复杂。我正在寻找这个问题最简单、最普遍的解决方案,这是可能的(或者我应该说是计算上的)。
我希望能够在不是主文档类的类中引用某个对象在舞台上的实例。在我尝试用我自己的术语解释之前,最好先看看其中的一篇文章,它涵盖了我困惑的确切主题。如果你们中的任何一个人理解这个问题,并理解其中一个帖子的解决方案,也许您可以为我将正确的答案之一转化为n00banese。与其只关注他们是如何做到的,你还可以解释为什么有必要这么做。如果有人能做那么多事情,我将非常感激,如果你能做到的话,就没有必要再读到这篇文章了。
AS3 - Access MovieClip from stage within a class
How do I access a MovieClip on the stage from the Document Class?
AS3 Modify stage Objects from a class
how do I make non-document-class classes 'aware' of stage components in Flash AS3?
Accessing ActionScript3 Nested Movie Clips from Class
由于上面提到的所有情况对我来说都太复杂的可能性很大,所以我以最简单、最一般的方式重现了这个问题,希望在这种情况下更容易解释。
我在舞台上有一个MovieClip,实例名为scene_mc。scene_mc除了把一个场景和另一个场景分开之外,什么也不做。它链接到一个名为场景的.as文件。嵌套在scene_mc内部有一个名为thing_mc的电影,链接到.as文件。我想把thing_mc移到现场。我可以很容易地通过更改主文档类中的坐标来做到这一点,如下所示:
thing_mc.x = thing_mc.x + 100;但是由于thing_mc是嵌套在scene_mc中的,所以我想控制thing_mc在场景类中的位置,以便坐标与该类中的其他嵌套符号相关。因为在更复杂的项目中,控制其父代码中的嵌套符号是有意义的。因此,在Scene.as内部,我可能创建以下方法:
public function moveThing() {
thing_mc.x = thing_mc.x + 200;
}这将导致此错误:"1120:对未定义属性thing_mc的访问。“
错误1120发生在任何时候,当你试图引用一个符号的阶段实例,一个不是主文档类的.as文件。
因此,为了重申我的问题,我如何让场景类知道什么是thing_mc?或者我如何让任何类知道任何阶段实例是什么?如何通过非文档类引用对象的阶段实例?
噢!这可能会有帮助。Actioscript3.0文档这样说--注意:放在Flash创作工具舞台上的子实例不能通过父实例的构造函数中的代码访问,因为在代码执行过程中它们还没有被创建。在访问子实例之前,父类必须通过代码创建子实例,或者延迟对一个回调函数的访问,该回调函数侦听子实例调度its Event.ADDED_TO_STAGE event。
所以我的意思是,我真的明白为什么我要做的事情会导致一个错误,但我仍然不知道如何解决这个问题。
任何读到我的胡言乱语的人,谢谢你。你是一个善良而有耐心的灵魂,哈哈。这个问题真的让我心烦意乱,所以任何试图帮助我理解这个工作原理的尝试都会受到极大的赞赏。:D
发布于 2016-05-25 11:29:03
...From我在通宵之后明白了什么(抱歉,如果这不是你想要的答案)
您需要将场景( Adobe中的库中的对象(或者Adobe动画中的对象)链接到您的类中。(为Actionscript导出),但是(这里是kicker),您还需要检查框架1的导出,并确保它已加载到框架1上。
当我没有注意的时候,我遇到了这样的问题。确保嵌套在你的主要电影中的电影唇,不知怎么,会被加载。不管是通过构造函数,还是在框架1。假设你的嵌套电影是在第2帧上。嗯,flash没有加载框架2。因此,它没有在框架2中构建任何东西。所以它不知道你在说什么。
有时,我不得不做一个gotoAndStop(2),然后回到1,这样框架2上的一个对象就可以命名,并准备在将来处理。

https://stackoverflow.com/questions/37407454
复制相似问题