Flash as3 将一个类中的方法调用到另一个放在舞台上的类。

Posted

技术标签:

【中文标题】Flash as3 将一个类中的方法调用到另一个放在舞台上的类。【英文标题】:Flash as3 Calling methods in one class to another class which is placed on stage. 【发布时间】:2015-02-24 09:58:21 【问题描述】:

我的主类添加了两个孩子,一个是画布,第二个是面板。

画布类:

在这个类中添加了一个对象,即文本字段,并在此处添加了一个方法“doBold”,因此该方法会将文本字段对象加粗。

面板类:

在面板类中,我有一个添加了鼠标事件侦听器的按钮。

现在我想通过单击放置在面板类中的按钮来调用 doBold 方法。我知道可以使用自定义事件来完成,但是可以使用界面吗?如果是的话,那会是怎样的......

提前致谢。

【问题讨论】:

请向我们展示您的代码 sn-p.. 最好我们帮助您提供实际代码... 【参考方案1】:

实际上有多种方法可以做到这一点,具体取决于您的课程设置方式。

我假设你至少有一些类似的东西:

public class Canvas

   ...
    public function doBold()  
       //some stuff
    
   ...


-------

public class Panel 

    ....
    var myButton:Sprite = //definition details. 
    myButton.addEventListener(MouseEvent.CLICK, onMouseClick);
    ....


------

public class Main

   var canvas:Canvas = //instance of your canvas class
   var panel:Panel = //instance of your panel class

选项 1:调度自定义事件

设置自定义事件类 在初始化画布对象后为该自定义事件设置监听器 甚至从 Panel 类中的 onClickEvent 调度它。

这是一个关于设置细节的精彩教程: http://code.tutsplus.com/tutorials/as3-101-events-basix--active-10018

选项 2:最简单的方法,但扩展性不强 您可以在主类中分配它,而不是在 Panel 类中为您的按钮设置事件侦听器。这将要求 myButton 是 Panel 类中的公共变量。

所以在 Main 你会有类似的东西:

panel.myButton.addEventListener(MouseEvent.CLICK, onMouseClick);
...
private function onMouseClick(evt:MouseEvent) 
    canvas.doBold(evt.target);

【讨论】:

以上是关于Flash as3 将一个类中的方法调用到另一个放在舞台上的类。的主要内容,如果未能解决你的问题,请参考以下文章

flash as3.0中的arguments是啥意思

AS3 - 在类之间调用方法

flash as3 图片展示将鼠标移到图片上就显示文字,然后再点击文字后移除并且显示下一张图片

Flash AS3.0 - 错误 1180 调用可能未定义的方法 gotoAndPlay?

Flash AS3 动态添加子项。命名它们并调用每个分开的问题

如何使用 Flash (AS3) 从远程域调用 Flex SWF?