【问题标题】:activating a function of a parent as3激活父 as3 的功能
【发布时间】:2013-12-07 05:33:39
【问题描述】:

我正在尝试为我正在创建的 Flash 游戏设置保存和加载系统。目前,我决定尝试让我的新游戏菜单的保存文件选择部分工作,然后再继续进行。我在 Flash 中绘制了“DifficultySelect”屏幕(其中包含保存文件选择以及其他一些内容),然后将其转换为符号。我在其中制作了 10 个保存文件符号,并为它们创建了基本的动作脚本文件。一旦您继续通过标题屏幕,整个 'DifficultySelect' 将成为我的 'Main.as' 的子项。我试图在我的 Main.as 中保存我的保存文件数据,例如级别、健康、进度等,以及当前正在使用的保存文件。但是,我无法为我的 Main.as 创建一种方法来访问保存文件的 MouseClick 函数,因为我不能简单地在 Main.as 文件中有 Savefile0.MouseEvent.CLICK 事件,因为我没有创建将其添加到舞台的变量。

我想我的情况的 tl;dr 问题版本是:当单击 SaveFile0 时,如何让我的 Main.as 激活其功能之一?另外,如何引用父类中的孩子?

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

    你问如何从父母那里引用孩子,但由于孩子通常“知道”它的父母,我建议以下解决方案:

    您的孩子 (SaveFile) 应该监听事件 (MouseEvent)。调度事件后,您有两个选择。您可以在父级上调度自定义事件,也可以直接调用父级的公共函数。

    【讨论】:

      【解决方案2】:

      这是假设您的 SaveFile 是添加到 Main 的 MovieClip:

      SaveFile 内部:

      var _parentMC:MovieClip = this.parent as MovieClip;
      _parentMC.functionToCall();
      

      然而,最佳实践是在 SaveFile 中调度一个自定义事件,并在 main 中监听它:

      SaveFile 内部:

      var customEvent:Event = new Event("customEvent");
      this.dispatchEvent(customEvent);
      

      内部主要:

      saveFile.addEventListener("customEvent",functionToCall();
      
      functionToCall(e:Event):void{
      
      }
      

      【讨论】:

      • 问题是,我没有直接将SaveFile作为MC添加到Main,我的TitlePage将DifficultySelect添加到Main,而SaveFile是DifficultySelect的一部分,意味着flash不允许我使用'saveFile .add... etc' 作为 'saveFile' 是一个未知属性。有没有解决的办法?除了将所有添加的 MC 归入 Main.as 之外?
      • 有什么原因不能从 DifficultySelect 中添加 eventListener?你有错误吗?不看代码很难解决你的问题。
      • 我可以在 DifficultySelect 中设置事件侦听器,但是我希望保存的变量我想保留在 Main.as 中,以便以后通过角色和升级等轻松访问。但据我所知,我无法从 Main.as 访问 DifficultySelect,因为我从未创建一个 var 来将 DifficultySelect 添加到屏幕,我在 Main.as 中创建的唯一 var 是将标题页添加到屏幕和 titlepage本身增加了难度选择。我是否需要更改它以便 Main.as 通过 var 添加所有这些,以便我以后可以访问它们?
      猜你喜欢
      • 2011-02-03
      • 2017-01-12
      • 2021-05-05
      • 1970-01-01
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      相关资源
      最近更新 更多