【问题标题】:Adobe ActionScript 3.0 and "this"Adobe ActionScript 3.0 和“这个”
【发布时间】:2014-09-07 16:46:27
【问题描述】:
private function onEnemigo(e:TimerEvent):void{

        var tiempoTranscurrido:int = getTimer() - ultimoEnemigo;

        if(tiempoTranscurrido > proximoEnemigo){

            ultimoEnemigo = getTimer();
            var enemigo: int = Math.floor(Math.random() * numeroDeEnemigos);

            this["enemigo"+enemigo+"_act"].play();
            proximoEnemigo = Math.floor(Math.random() * 2000);

            }

        }   

考虑到 numeroDeEnemigos = 4,我想在 enemigo0_act 和 enemigo4_act 之间播放随机场景。

为什么 "this["enemigo"+enemigo+"_act"]" 有效?它应该如何工作,但我不明白为什么,我的意思是,这个例子中“this”的功能到底是什么?

【问题讨论】:

    标签: actionscript-3 flash actionscript


    【解决方案1】:

    this 是 as3 中的保留关键字,表示类的实例。在这种情况下,this 指的是您的MovieClip 对象(或MainTimeLine),它恰好将您的场景作为属性。您可以通过方括号和属性名称访问 MovieClip 的属性。事实上,您可以使用任何Object 来执行此操作。

    【讨论】:

      【解决方案2】:

      您在示例中需要“this”的原因是提示 Flash 使用所谓的 ARRAY NOTATION 来引用您的对象。

      我假设您知道您的代码正在寻找一个随机的“enemigo”影片剪辑,名为: "enemigoX_act" 其中 X 是你的随机整数。

      如果没有 'this' 关键字,Flash 会尝试将 ["enemigo"+enemigo+"_act"] 解析为字符串,并且由于字符串没有 play() 函数,因此会返回错误。

      当您将“this”放在方括号内您命名的对象前面时,您告诉 Flash 您不是在查找字符串,而是将要使用数组表示法引用一个对象。

      总之,

      this["enemigo"+ 5 +"_act"]
      

      和直接引用一样

      enemigo5_act
      

      this.enemigo5_act
      

      如您所见,数组表示法在您的情况下很有用,因此您可以在没有直接对象表示法的情况下调用随机 enemigo。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-07
        • 2012-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-23
        • 2011-08-31
        • 1970-01-01
        相关资源
        最近更新 更多