首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Actionscript3 / LCCS:如何访问属性父类受保护的变量?

Actionscript3 / LCCS:如何访问属性父类受保护的变量?
EN

Stack Overflow用户
提问于 2011-08-19 12:02:36
回答 2查看 459关注 0票数 0

我想给父类中的一个受保护的定时器变量分配一个事件侦听器。

我正在使用Adobe LCCS,并创建了一个实现BatonBatonProperty

现在,Baton有一个像这样声明的受保护的计时器变量,由于某种原因,我无法从BatonProperty实例访问这个_autoPutDownTimer。

代码语言:javascript
复制
  public function Baton()
          {
              super();

              _autoPutDownTimer = new Timer(_timeout*1000, 1);
              _autoPutDownTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
              invalidator.addEventListener(Invalidator.INVALIDATION_COMPLETE,commitP roperties);
          }

我很想像这样给它附加一个事件监听器,但似乎我做不到,任何提示都是非常感谢的:

代码语言:javascript
复制
    public var mybatonprop:BatonProperty;
    mybatonprop= new BatonProperty();
    mybatonprop.sharedID = "myBaton";
    mybatonprop.subscribe();

    mybatonprop.baton._autoPutDownTimer.addEventListener(TimerEvent.TIMER,countDown);   

这会产生错误:"actionscript尝试通过静态类型的引用访问不可访问的属性“,但该属性似乎不是私有的,而是受保护的,因为它是这样声明的

代码语言:javascript
复制
    /**
     * @private
     */
    protected var _autoPutDownTimer:Timer;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-19 16:30:19

如果BatonProperty扩展了Baton,那么只需更改行:

代码语言:javascript
复制
mybatonprop.baton._autoPutDownTimer.addEventListener(TimerEvent.TIMER,countDown);

代码语言:javascript
复制
mybatonprop._autoPutDownTimer.addEventListener(TimerEvent.TIMER,countDown);

否则,将_autoPutDownTimer公之于众,或者遵循@雅各布的回答。

或者对于第三个建议,由于Baton是一个Adobe类,您不能对其进行编辑,因此可以创建自己的扩展Baton的类MyBaton,然后执行这两个建议中的任何一个。( Baton在任何地方都可以使用MyBaton)

票数 2
EN

Stack Overflow用户

发布于 2011-08-19 12:15:28

protected表示私有,除非是该类的后代。即从父类继承的类。看起来你的BatonProperty通过组合使用了指挥棒,而不是继承。而且,据我所知,您似乎正在尝试通过第三个类从Baton/BatonProperty访问_autoPutDownTimer。

不过,我的建议不是将事件侦听器直接添加到计时器中,而是在onTimerComplete函数中分派来自Baton的事件

代码语言:javascript
复制
protected function onTimerComplete(event:TimerEvent):void {
    ....
    dispatchEvent(new Event('putDownComplete'));
}

代码语言:javascript
复制
mybatonprop.baton.addEventListener('putDownComplete', onPutdownComplete);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7116814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档