【问题标题】:How to access class functions during events from currentTarget object in AS3如何在 AS3 中的 currentTarget 对象的事件期间访问类函数
【发布时间】:2014-11-21 22:37:08
【问题描述】:

我已将movieClip 加载到舞台上,并在该movieClip 上执行一些事件。影片剪辑有自己的公共函数和变量,它们不能通过事件中的 currentTarget 对象访问。

这是示例类:

package {
    import flash.display.MovieClip;
    import flash.display.Shape;
    public class SampleClass extends MovieClip {
        var str:String;
        public function SampleClass() {
            str="Some string";
            /* draw just a sample rectangle to click on it */
            var rectangle:Shape=new Shape  ;
            rectangle.graphics.beginFill(0x000000);
            rectangle.graphics.drawRect(0,0,100,100);
            rectangle.graphics.endFill();
        }
        public function getStr():String {
            return str;
        }
    }
}

这里正在加载舞台并创建事件:

package {
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    public class MainClass extends MovieClip {
        var a:SampleClass;
        public function MainClass() {
            a=new SampleClass();
            addChild(a);
            a.addEventListener(MouseEvent.CLICK,clickEvent);
        }
        function clickEvent(evt:MouseEvent):void {
            var Obj=evt.currentTarget;
            trace (Obj.getStr());
        }
    }
}

跟踪将返回null 而不是string 值,因为currentTargetObject,而不是Class(movieClip)。知道如何解决这个问题吗?

【问题讨论】:

  • 看来你需要先投:var Obj=SampleClass(evt.currentTarget);

标签: actionscript-3 flash event-handling


【解决方案1】:

//使用这个代码就可以了

 function clickEvent(evt:MouseEvent):void {
        var Obj:SampleClass = evt.currentTarget as SampleClass;
        trace (Obj.getStr());
 }

【讨论】:

    【解决方案2】:

    我不知道您的问题现在是否已解决,但您在问题中发布的代码对我来说可以正常工作..

    我做了什么来测试它..

    1. 在一个新的空白文档中,打开 Library (ctrl+L) 并右键单击以制作符号 (MovieClip)
    2. linkage 部分,勾选 Export for Actionscript 并将其命名为 SampleClass
    3. 现在在库列表中添加了右键单击符号项,然后选择编辑类选项
    4. 在那个 SampleClass 中,我将所有代码替换为粘贴您的代码 但请注意: 在该行 rectangle.graphics.endFill();.. 之后线addChild(rectangle);
    5. 现在,当我测试时(调试:Ctrl+Shift+Enter).. 我看到一个黑色方块,每次单击时都会显示“Some string”..

    您的 MainClass.as 已作为文档类附加到 FLA(请参阅 Properties 使用 Ctrl+F3)

    我希望这对您或其他尝试这种代码的人有用。任何问题只需添加评论。谢谢。

    【讨论】:

      猜你喜欢
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多